return true;
}
-struct DeviceCoreFeaturesTable
-{
- const char* featureName;
- const deUint32 featureArrayIndex;
- const deUint32 featureArrayOffset;
-};
-
-#define DEVICE_CORE_FEATURE_OFFSET(FEATURE_FIELD_NAME) DE_OFFSET_OF(VkPhysicalDeviceFeatures, FEATURE_FIELD_NAME)
-#define DEVICE_CORE_FEATURE_ENTRY(BITNAME, FIELDNAME) { #FIELDNAME, BITNAME, DEVICE_CORE_FEATURE_OFFSET(FIELDNAME) }
-
-const DeviceCoreFeaturesTable deviceCoreFeaturesTable[] =
-{
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_ROBUST_BUFFER_ACCESS , robustBufferAccess ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_FULL_DRAW_INDEX_UINT32 , fullDrawIndexUint32 ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_IMAGE_CUBE_ARRAY , imageCubeArray ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_INDEPENDENT_BLEND , independentBlend ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_GEOMETRY_SHADER , geometryShader ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_TESSELLATION_SHADER , tessellationShader ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SAMPLE_RATE_SHADING , sampleRateShading ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_DUAL_SRC_BLEND , dualSrcBlend ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_LOGIC_OP , logicOp ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_MULTI_DRAW_INDIRECT , multiDrawIndirect ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_DRAW_INDIRECT_FIRST_INSTANCE , drawIndirectFirstInstance ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_DEPTH_CLAMP , depthClamp ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_DEPTH_BIAS_CLAMP , depthBiasClamp ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_FILL_MODE_NON_SOLID , fillModeNonSolid ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_DEPTH_BOUNDS , depthBounds ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_WIDE_LINES , wideLines ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_LARGE_POINTS , largePoints ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_ALPHA_TO_ONE , alphaToOne ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_MULTI_VIEWPORT , multiViewport ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SAMPLER_ANISOTROPY , samplerAnisotropy ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_TEXTURE_COMPRESSION_ETC2 , textureCompressionETC2 ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_TEXTURE_COMPRESSION_ASTC_LDR , textureCompressionASTC_LDR ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_TEXTURE_COMPRESSION_BC , textureCompressionBC ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_OCCLUSION_QUERY_PRECISE , occlusionQueryPrecise ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_PIPELINE_STATISTICS_QUERY , pipelineStatisticsQuery ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_VERTEX_PIPELINE_STORES_AND_ATOMICS , vertexPipelineStoresAndAtomics ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_FRAGMENT_STORES_AND_ATOMICS , fragmentStoresAndAtomics ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_TESSELLATION_AND_GEOMETRY_POINT_SIZE , shaderTessellationAndGeometryPointSize ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_IMAGE_GATHER_EXTENDED , shaderImageGatherExtended ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_EXTENDED_FORMATS , shaderStorageImageExtendedFormats ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_MULTISAMPLE , shaderStorageImageMultisample ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_READ_WITHOUT_FORMAT , shaderStorageImageReadWithoutFormat ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_WRITE_WITHOUT_FORMAT , shaderStorageImageWriteWithoutFormat ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_UNIFORM_BUFFER_ARRAY_DYNAMIC_INDEXING , shaderUniformBufferArrayDynamicIndexing ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_SAMPLED_IMAGE_ARRAY_DYNAMIC_INDEXING , shaderSampledImageArrayDynamicIndexing ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_STORAGE_BUFFER_ARRAY_DYNAMIC_INDEXING , shaderStorageBufferArrayDynamicIndexing ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_ARRAY_DYNAMIC_INDEXING , shaderStorageImageArrayDynamicIndexing ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_CLIP_DISTANCE , shaderClipDistance ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_CULL_DISTANCE , shaderCullDistance ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_FLOAT64 , shaderFloat64 ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_INT64 , shaderInt64 ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_INT16 , shaderInt16 ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_RESOURCE_RESIDENCY , shaderResourceResidency ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SHADER_RESOURCE_MIN_LOD , shaderResourceMinLod ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_BINDING , sparseBinding ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_BUFFER , sparseResidencyBuffer ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_IMAGE2D , sparseResidencyImage2D ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_IMAGE3D , sparseResidencyImage3D ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY2_SAMPLES , sparseResidency2Samples ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY4_SAMPLES , sparseResidency4Samples ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY8_SAMPLES , sparseResidency8Samples ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY16_SAMPLES , sparseResidency16Samples ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_ALIASED , sparseResidencyAliased ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_VARIABLE_MULTISAMPLE_RATE , variableMultisampleRate ),
- DEVICE_CORE_FEATURE_ENTRY(DEVICE_CORE_FEATURE_INHERITED_QUERIES , inheritedQueries ),
-};
-
-bool Context::requireDeviceCoreFeature (const DeviceCoreFeature requiredFeature)
-{
- const vk::VkPhysicalDeviceFeatures& featuresAvailable = getDeviceFeatures();
- const vk::VkBool32* featuresAvailableArray = (vk::VkBool32*)(&featuresAvailable);
- const deUint32 requiredFeatureIndex = static_cast<const deUint32>(requiredFeature);
-
- DE_ASSERT(requiredFeatureIndex * sizeof(vk::VkBool32) < sizeof(featuresAvailable));
- DE_ASSERT(deviceCoreFeaturesTable[requiredFeatureIndex].featureArrayIndex * sizeof(vk::VkBool32) == deviceCoreFeaturesTable[requiredFeatureIndex].featureArrayOffset);
-
- if (featuresAvailableArray[requiredFeatureIndex] == DE_FALSE)
- TCU_THROW(NotSupportedError, "Requested core feature is not supported: " + std::string(deviceCoreFeaturesTable[requiredFeatureIndex].featureName));
-
- return true;
-}
-
// TestCase
void TestCase::initPrograms (SourceCollections&) const
+++ /dev/null
-#ifndef _VKTTESTCASEDEFS_HPP
-#define _VKTTESTCASEDEFS_HPP
-/*-------------------------------------------------------------------------
- * Vulkan Conformance Tests
- * ------------------------
- *
- * Copyright (c) 2018 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *//*!
- * \file
- * \brief Vulkan test case definitions
- *//*--------------------------------------------------------------------*/
-
-namespace vkt
-{
- enum DeviceCoreFeature
- {
- DEVICE_CORE_FEATURE_ROBUST_BUFFER_ACCESS = 0,
- DEVICE_CORE_FEATURE_FULL_DRAW_INDEX_UINT32 = 1,
- DEVICE_CORE_FEATURE_IMAGE_CUBE_ARRAY = 2,
- DEVICE_CORE_FEATURE_INDEPENDENT_BLEND = 3,
- DEVICE_CORE_FEATURE_GEOMETRY_SHADER = 4,
- DEVICE_CORE_FEATURE_TESSELLATION_SHADER = 5,
- DEVICE_CORE_FEATURE_SAMPLE_RATE_SHADING = 6,
- DEVICE_CORE_FEATURE_DUAL_SRC_BLEND = 7,
- DEVICE_CORE_FEATURE_LOGIC_OP = 8,
- DEVICE_CORE_FEATURE_MULTI_DRAW_INDIRECT = 9,
- DEVICE_CORE_FEATURE_DRAW_INDIRECT_FIRST_INSTANCE = 10,
- DEVICE_CORE_FEATURE_DEPTH_CLAMP = 11,
- DEVICE_CORE_FEATURE_DEPTH_BIAS_CLAMP = 12,
- DEVICE_CORE_FEATURE_FILL_MODE_NON_SOLID = 13,
- DEVICE_CORE_FEATURE_DEPTH_BOUNDS = 14,
- DEVICE_CORE_FEATURE_WIDE_LINES = 15,
- DEVICE_CORE_FEATURE_LARGE_POINTS = 16,
- DEVICE_CORE_FEATURE_ALPHA_TO_ONE = 17,
- DEVICE_CORE_FEATURE_MULTI_VIEWPORT = 18,
- DEVICE_CORE_FEATURE_SAMPLER_ANISOTROPY = 19,
- DEVICE_CORE_FEATURE_TEXTURE_COMPRESSION_ETC2 = 20,
- DEVICE_CORE_FEATURE_TEXTURE_COMPRESSION_ASTC_LDR = 21,
- DEVICE_CORE_FEATURE_TEXTURE_COMPRESSION_BC = 22,
- DEVICE_CORE_FEATURE_OCCLUSION_QUERY_PRECISE = 23,
- DEVICE_CORE_FEATURE_PIPELINE_STATISTICS_QUERY = 24,
- DEVICE_CORE_FEATURE_VERTEX_PIPELINE_STORES_AND_ATOMICS = 25,
- DEVICE_CORE_FEATURE_FRAGMENT_STORES_AND_ATOMICS = 26,
- DEVICE_CORE_FEATURE_SHADER_TESSELLATION_AND_GEOMETRY_POINT_SIZE = 27,
- DEVICE_CORE_FEATURE_SHADER_IMAGE_GATHER_EXTENDED = 28,
- DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_EXTENDED_FORMATS = 29,
- DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_MULTISAMPLE = 30,
- DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_READ_WITHOUT_FORMAT = 31,
- DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_WRITE_WITHOUT_FORMAT = 32,
- DEVICE_CORE_FEATURE_SHADER_UNIFORM_BUFFER_ARRAY_DYNAMIC_INDEXING = 33,
- DEVICE_CORE_FEATURE_SHADER_SAMPLED_IMAGE_ARRAY_DYNAMIC_INDEXING = 34,
- DEVICE_CORE_FEATURE_SHADER_STORAGE_BUFFER_ARRAY_DYNAMIC_INDEXING = 35,
- DEVICE_CORE_FEATURE_SHADER_STORAGE_IMAGE_ARRAY_DYNAMIC_INDEXING = 36,
- DEVICE_CORE_FEATURE_SHADER_CLIP_DISTANCE = 37,
- DEVICE_CORE_FEATURE_SHADER_CULL_DISTANCE = 38,
- DEVICE_CORE_FEATURE_SHADER_FLOAT64 = 39,
- DEVICE_CORE_FEATURE_SHADER_INT64 = 40,
- DEVICE_CORE_FEATURE_SHADER_INT16 = 41,
- DEVICE_CORE_FEATURE_SHADER_RESOURCE_RESIDENCY = 42,
- DEVICE_CORE_FEATURE_SHADER_RESOURCE_MIN_LOD = 43,
- DEVICE_CORE_FEATURE_SPARSE_BINDING = 44,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_BUFFER = 45,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_IMAGE2D = 46,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_IMAGE3D = 47,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY2_SAMPLES = 48,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY4_SAMPLES = 49,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY8_SAMPLES = 50,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY16_SAMPLES = 51,
- DEVICE_CORE_FEATURE_SPARSE_RESIDENCY_ALIASED = 52,
- DEVICE_CORE_FEATURE_VARIABLE_MULTISAMPLE_RATE = 53,
- DEVICE_CORE_FEATURE_INHERITED_QUERIES = 54,
- };
-
-} // vkt
-
-#endif // _VKTTESTCASEDEFS_HPP