gpu: Add option to disable descriptor indexing val
diff --git a/layers/gpu_validation.cpp b/layers/gpu_validation.cpp
index 1a4d1fd..ba3b10a 100644
--- a/layers/gpu_validation.cpp
+++ b/layers/gpu_validation.cpp
@@ -271,12 +271,15 @@
} else {
std::string bufferoob_string = getLayerOption("khronos_validation.gpuav_buffer_oob");
transform(bufferoob_string.begin(), bufferoob_string.end(), bufferoob_string.begin(), ::tolower);
- device_gpu_assisted->buffer_oob_enabled = bufferoob_string.length() ? !bufferoob_string.compare("true") : true;
+ device_gpu_assisted->buffer_oob_enabled = !bufferoob_string.empty() ? !bufferoob_string.compare("true") : true;
}
+ std::string descriptor_indexing_string = getLayerOption("khronos_validation.gpuav_descriptor_indexing");
+ transform(descriptor_indexing_string.begin(), descriptor_indexing_string.end(), descriptor_indexing_string.begin(), ::tolower);
+ bool validate_descriptor_indexing = !descriptor_indexing_string.empty() ? !descriptor_indexing_string.compare("true") : true;
std::string draw_indirect_string = getLayerOption("khronos_validation.validate_draw_indirect");
transform(draw_indirect_string.begin(), draw_indirect_string.end(), draw_indirect_string.begin(), ::tolower);
- device_gpu_assisted->validate_draw_indirect = draw_indirect_string.length() ? !draw_indirect_string.compare("true") : true;
+ device_gpu_assisted->validate_draw_indirect = !draw_indirect_string.empty() ? !draw_indirect_string.compare("true") : true;
if (device_gpu_assisted->phys_dev_props.apiVersion < VK_API_VERSION_1_1) {
ReportSetupProblem(device, "GPU-Assisted validation requires Vulkan 1.1 or later. GPU-Assisted Validation disabled.");
@@ -302,7 +305,9 @@
device_gpu_assisted->physicalDevice = physicalDevice;
device_gpu_assisted->device = *pDevice;
device_gpu_assisted->output_buffer_size = sizeof(uint32_t) * (spvtools::kInstMaxOutCnt + 1);
- device_gpu_assisted->descriptor_indexing = CheckForDescriptorIndexing(device_gpu_assisted->enabled_features);
+ if (validate_descriptor_indexing) {
+ device_gpu_assisted->descriptor_indexing = CheckForDescriptorIndexing(device_gpu_assisted->enabled_features);
+ }
std::vector<VkDescriptorSetLayoutBinding> bindings;
VkDescriptorSetLayoutBinding binding = {0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1,
VK_SHADER_STAGE_ALL_GRAPHICS | VK_SHADER_STAGE_COMPUTE_BIT |
diff --git a/layers/json/VkLayer_khronos_validation.json.in b/layers/json/VkLayer_khronos_validation.json.in
index 203bba9..31eaa2a 100644
--- a/layers/json/VkLayer_khronos_validation.json.in
+++ b/layers/json/VkLayer_khronos_validation.json.in
@@ -484,6 +484,23 @@
"platforms": [ "WINDOWS", "LINUX" ],
"settings": [
{
+ "key": "gpuav_descriptor_indexing",
+ "label": "Check descriptor indexing accesses",
+ "description": "Enable descriptor indexing access checking",
+ "type": "BOOL",
+ "default": true,
+ "platforms": [ "WINDOWS", "LINUX" ],
+ "dependence": {
+ "mode": "ANY",
+ "settings": [
+ {
+ "key": "enables",
+ "value": [ "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT" ]
+ }
+ ]
+ }
+ },
+ {
"key": "gpuav_buffer_oob",
"label": "Check Out of Bounds ",
"description": "Enable buffer out of bounds checking",
diff --git a/layers/vk_layer_settings.txt b/layers/vk_layer_settings.txt
index 85e3e70..89276b0 100644
--- a/layers/vk_layer_settings.txt
+++ b/layers/vk_layer_settings.txt
@@ -142,6 +142,8 @@
#khronos_validation.enables = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT
# Example entry showing how to disable buffer out of bounds checking
#khronos_validation.gpuav_buffer_oob = false
+# Example entry showing how to disable descriptor indexing access checking
+#khronos_validation.gpuav_descriptor_indexing = false
# Example entry showing how to Enable Best Practices Validation
#khronos_validation.enables = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT