spirv: Add SpvMemoryModelVulkan and related capabilities

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Caio Marcelo de Oliveira Filho
2019-09-10 12:38:00 -07:00
parent 1bb191a0d1
commit c022043102
2 changed files with 24 additions and 3 deletions
+2
View File
@@ -75,6 +75,8 @@ struct spirv_supported_capabilities {
bool tessellation;
bool transform_feedback;
bool variable_pointers;
bool vk_memory_model;
bool vk_memory_model_device_scope;
bool float16;
bool amd_gcn_shader;
bool amd_shader_ballot;
+22 -3
View File
@@ -3792,6 +3792,14 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvCapabilityShaderClockKHR:
spv_check_supported(shader_clock, cap);
break;
case SpvCapabilityVulkanMemoryModel:
spv_check_supported(vk_memory_model, cap);
break;
case SpvCapabilityVulkanMemoryModelDeviceScope:
spv_check_supported(vk_memory_model_device_scope, cap);
break;
default:
@@ -3842,9 +3850,20 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
break;
}
vtn_assert(w[2] == SpvMemoryModelSimple ||
w[2] == SpvMemoryModelGLSL450 ||
w[2] == SpvMemoryModelOpenCL);
switch (w[2]) {
case SpvMemoryModelSimple:
case SpvMemoryModelGLSL450:
case SpvMemoryModelOpenCL:
break;
case SpvMemoryModelVulkan:
vtn_fail_if(!b->options->caps.vk_memory_model,
"Vulkan memory model is unsupported by this driver");
break;
default:
vtn_fail("Unsupported memory model: %s",
spirv_memorymodel_to_string(w[2]));
break;
}
break;
case SpvOpEntryPoint: