aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--layers/shader_checker.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp
index 715fb115..38e49fdb 100644
--- a/layers/shader_checker.cpp
+++ b/layers/shader_checker.cpp
@@ -607,14 +607,16 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateShaderModule(
VkShaderModule *pShaderModule)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
- /* Protect the driver from non-SPIRV shaders */
+ bool skip_call = false;
if (!shader_is_spirv(pCreateInfo)) {
- log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DEVICE,
+ skip_call |= log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DEVICE,
/* dev */ 0, 0, SHADER_CHECKER_NON_SPIRV_SHADER, "SC",
"Shader is not SPIR-V");
- return VK_ERROR_VALIDATION_FAILED;
}
+ if (skip_call)
+ return VK_ERROR_VALIDATION_FAILED;
+
VkResult res = my_data->device_dispatch_table->CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
if (res == VK_SUCCESS) {