* Device extensions:
* `VK_KHR_maintenance2`_
- * `VK_KHR_vulkan_memory_model`
* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
.. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html
.. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html
.. _VK_KHR_maintenance2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance2.html
-.. _VK_KHR_vulkan_memory_model: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_vulkan_memory_model.html
.. _VK_KHR_shader_draw_parameters: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_shader_draw_parameters.html
.. _VK_KHR_draw_indirect_count: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_draw_indirect_count.html
.. _VK_KHR_sampler_mirror_clamp_to_edge: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_sampler_mirror_clamp_to_edge.html
ctx.GLSL_std_450 = spirv_builder_import(&ctx.builder, "GLSL.std.450");
spirv_builder_emit_source(&ctx.builder, SpvSourceLanguageUnknown, 0);
- if (s->info.num_images) {
- /* this is required for correct io semantics */
- spirv_builder_emit_extension(&ctx.builder, "SPV_KHR_vulkan_memory_model");
- spirv_builder_emit_cap(&ctx.builder, SpvCapabilityVulkanMemoryModel);
- spirv_builder_emit_cap(&ctx.builder, SpvCapabilityVulkanMemoryModelDeviceScope);
- spirv_builder_emit_mem_model(&ctx.builder, SpvAddressingModelLogical,
- SpvMemoryModelVulkan);
- } else if (s->info.stage == MESA_SHADER_COMPUTE) {
+ if (s->info.stage == MESA_SHADER_COMPUTE) {
SpvAddressingModel model;
if (s->info.cs.ptr_size == 32)
model = SpvAddressingModelPhysical32;
spirv_buffer_prepare(&b->instructions, b->mem_ctx, 3);
spirv_buffer_emit_word(&b->instructions, SpvOpMemoryBarrier | (3 << 16));
spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, scope));
- spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, semantics | SpvMemorySemanticsMakeAvailableMask | SpvMemorySemanticsMakeVisibleMask));
+ spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, semantics));
}
void
spirv_buffer_emit_word(&b->instructions, SpvOpControlBarrier | (4 << 16));
spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, scope));
spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, mem_scope));
- spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, semantics | SpvMemorySemanticsMakeAvailableMask | SpvMemorySemanticsMakeVisibleMask));
+ spirv_buffer_emit_word(&b->instructions, spirv_builder_const_uint(b, 32, semantics));
}
SpvId
Extension("VK_KHR_maintenance2"),
Extension("VK_KHR_external_memory"),
Extension("VK_KHR_external_memory_fd"),
- Extension("VK_KHR_vulkan_memory_model"),
Extension("VK_EXT_shader_viewport_index_layer"),
Extension("VK_EXT_post_depth_coverage"),
Extension("VK_KHR_driver_properties",
return (1 << PIPE_SHADER_IR_NIR) | (1 << PIPE_SHADER_IR_TGSI);
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
- if (screen->info.have_KHR_vulkan_memory_model &&
- (screen->info.feats.features.shaderStorageImageExtendedFormats ||
+ if (screen->info.feats.features.shaderStorageImageExtendedFormats ||
(screen->info.feats.features.shaderStorageImageWriteWithoutFormat &&
- screen->info.feats.features.shaderStorageImageReadWithoutFormat)))
+ screen->info.feats.features.shaderStorageImageReadWithoutFormat))
return MIN2(screen->info.props.limits.maxPerStageDescriptorStorageImages,
PIPE_MAX_SHADER_IMAGES);
return 0;