diff --git a/docs/features.txt b/docs/features.txt index 353fd7ae370..0f0c12780a2 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -573,6 +573,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_primitives_generated_query DONE (anv, lvp, radv, tu) VK_EXT_provoking_vertex DONE (anv, lvp, radv, tu, v3dv, vn) VK_EXT_queue_family_foreign DONE (anv, radv, tu, vn) + VK_EXT_rasterization_order_attachment_access DONE (tu) VK_EXT_robustness2 DONE (anv, lvp, radv, tu, vn) VK_EXT_sample_locations DONE (anv, radv/gfx9-, tu/a650) VK_EXT_shader_atomic_float DONE (anv, radv) diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index 5ff4a63fbf0..c7ad3ab4bce 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -214,6 +214,7 @@ get_device_extensions(const struct tu_physical_device *device, .EXT_pipeline_creation_cache_control = true, .EXT_vertex_input_dynamic_state = true, .EXT_attachment_feedback_loop_layout = true, + .EXT_rasterization_order_attachment_access = true, #ifndef TU_USE_KGSL .EXT_physical_device_drm = true, #endif @@ -813,9 +814,9 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, features->primitiveTopologyPatchListRestart = false; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM: { - VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM *features = - (VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM *)ext; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: { + VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *features = + (VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *)ext; features->rasterizationOrderColorAttachmentAccess = true; features->rasterizationOrderDepthAttachmentAccess = true; features->rasterizationOrderStencilAttachmentAccess = true; diff --git a/src/freedreno/vulkan/tu_pass.c b/src/freedreno/vulkan/tu_pass.c index 8bd9ca0a054..a0ab1d622f1 100644 --- a/src/freedreno/vulkan/tu_pass.c +++ b/src/freedreno/vulkan/tu_pass.c @@ -836,9 +836,9 @@ tu_CreateRenderPass2(VkDevice _device, subpass->srgb_cntl = 0; const VkSubpassDescriptionFlagBits raster_order_access_bits = - VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM | - VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM | - VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM; + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT | + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT | + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT; subpass->raster_order_attachment_access = desc->flags & raster_order_access_bits; diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index af1e8374fe9..ba44b74ab5d 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -3811,14 +3811,14 @@ tu_pipeline_builder_parse_rasterization_order( if (builder->use_color_attachments) { pipeline->raster_order_attachment_access = blend_info->flags & - VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM; + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT; } if (builder->depth_attachment_format != VK_FORMAT_UNDEFINED) { pipeline->raster_order_attachment_access |= ds_info->flags & - (VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM | - VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM); + (VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT | + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT); } if (unlikely(builder->device->physical_device->instance->debug_flags & TU_DEBUG_RAST_ORDER)) @@ -3832,7 +3832,7 @@ tu_pipeline_builder_parse_rasterization_order( uint32_t gmem_prim_mode = NO_FLUSH; if (pipeline->raster_order_attachment_access) { - /* VK_ARM_rasterization_order_attachment_access: + /* VK_EXT_rasterization_order_attachment_access: * * This extension allow access to framebuffer attachments when used as * both input and color attachments from one fragment to the next,