zink: delete barrier sync flag inferring
these are all explicit now Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35476>
This commit is contained in:
committed by
Marge Bot
parent
5f22d3f174
commit
3d073bb0b3
@@ -30,106 +30,6 @@
|
||||
#include "zink_resource.h"
|
||||
#include "zink_screen.h"
|
||||
|
||||
|
||||
static VkAccessFlags
|
||||
access_src_flags(VkImageLayout layout)
|
||||
{
|
||||
switch (layout) {
|
||||
case VK_IMAGE_LAYOUT_UNDEFINED:
|
||||
return VK_ACCESS_NONE;
|
||||
|
||||
case VK_IMAGE_LAYOUT_GENERAL:
|
||||
return VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
|
||||
case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT:
|
||||
return VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
|
||||
return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
|
||||
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
|
||||
return VK_ACCESS_SHADER_READ_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
|
||||
return VK_ACCESS_TRANSFER_READ_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
|
||||
return VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_PREINITIALIZED:
|
||||
return VK_ACCESS_HOST_WRITE_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
|
||||
return VK_ACCESS_NONE;
|
||||
|
||||
default:
|
||||
unreachable("unexpected layout");
|
||||
}
|
||||
}
|
||||
|
||||
static VkAccessFlags
|
||||
access_dst_flags(VkImageLayout layout)
|
||||
{
|
||||
switch (layout) {
|
||||
case VK_IMAGE_LAYOUT_UNDEFINED:
|
||||
return VK_ACCESS_NONE;
|
||||
|
||||
case VK_IMAGE_LAYOUT_GENERAL:
|
||||
return VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
|
||||
case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT:
|
||||
return VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
|
||||
return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
|
||||
return VK_ACCESS_SHADER_READ_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
|
||||
return VK_ACCESS_TRANSFER_READ_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
|
||||
return VK_ACCESS_SHADER_READ_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
|
||||
return VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
|
||||
return VK_ACCESS_NONE;
|
||||
|
||||
default:
|
||||
unreachable("unexpected layout");
|
||||
}
|
||||
}
|
||||
|
||||
static VkPipelineStageFlags
|
||||
pipeline_dst_stage(VkImageLayout layout)
|
||||
{
|
||||
switch (layout) {
|
||||
case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
|
||||
return VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
|
||||
return VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
|
||||
return VK_PIPELINE_STAGE_TRANSFER_BIT;
|
||||
case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
|
||||
return VK_PIPELINE_STAGE_TRANSFER_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_GENERAL:
|
||||
return VK_PIPELINE_STAGE_ALL_COMMANDS_BIT;
|
||||
|
||||
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
|
||||
case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:
|
||||
return VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||
|
||||
default:
|
||||
return VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
|
||||
}
|
||||
}
|
||||
|
||||
#define ALL_READ_ACCESS_FLAGS \
|
||||
(VK_ACCESS_INDIRECT_COMMAND_READ_BIT | \
|
||||
VK_ACCESS_INDEX_READ_BIT | \
|
||||
@@ -171,11 +71,6 @@ zink_resource_image_needs_barrier(struct zink_resource *res, VkImageLayout new_l
|
||||
void
|
||||
zink_resource_image_barrier_init(VkImageMemoryBarrier *imb, struct zink_resource *res, VkImageLayout new_layout, VkAccessFlags flags, VkPipelineStageFlags pipeline)
|
||||
{
|
||||
if (!pipeline)
|
||||
pipeline = pipeline_dst_stage(new_layout);
|
||||
if (!flags)
|
||||
flags = access_dst_flags(new_layout);
|
||||
|
||||
VkImageSubresourceRange isr = {
|
||||
res->aspect,
|
||||
0, VK_REMAINING_MIP_LEVELS,
|
||||
@@ -184,7 +79,7 @@ zink_resource_image_barrier_init(VkImageMemoryBarrier *imb, struct zink_resource
|
||||
*imb = VkImageMemoryBarrier {
|
||||
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
NULL,
|
||||
res->obj->access ? res->obj->access : access_src_flags(res->layout),
|
||||
res->obj->access,
|
||||
flags,
|
||||
res->layout,
|
||||
new_layout,
|
||||
@@ -198,11 +93,6 @@ zink_resource_image_barrier_init(VkImageMemoryBarrier *imb, struct zink_resource
|
||||
void
|
||||
zink_resource_image_barrier2_init(VkImageMemoryBarrier2 *imb, struct zink_resource *res, VkImageLayout new_layout, VkAccessFlags flags, VkPipelineStageFlags pipeline)
|
||||
{
|
||||
if (!pipeline)
|
||||
pipeline = pipeline_dst_stage(new_layout);
|
||||
if (!flags)
|
||||
flags = access_dst_flags(new_layout);
|
||||
|
||||
VkImageSubresourceRange isr = {
|
||||
res->aspect,
|
||||
0, VK_REMAINING_MIP_LEVELS,
|
||||
@@ -212,7 +102,7 @@ zink_resource_image_barrier2_init(VkImageMemoryBarrier2 *imb, struct zink_resour
|
||||
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2,
|
||||
NULL,
|
||||
res->obj->access_stage ? res->obj->access_stage : VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||
res->obj->access ? res->obj->access : access_src_flags(res->layout),
|
||||
res->obj->access,
|
||||
pipeline,
|
||||
flags,
|
||||
res->layout,
|
||||
@@ -511,11 +401,6 @@ template <barrier_type BARRIER_API, bool UNSYNCHRONIZED>
|
||||
void
|
||||
zink_resource_image_barrier(struct zink_context *ctx, struct zink_resource *res, VkImageLayout new_layout, VkAccessFlags flags, VkPipelineStageFlags pipeline)
|
||||
{
|
||||
if (!pipeline)
|
||||
pipeline = pipeline_dst_stage(new_layout);
|
||||
if (!flags)
|
||||
flags = access_dst_flags(new_layout);
|
||||
|
||||
bool is_write = zink_resource_access_is_write(flags);
|
||||
if (is_write && zink_is_swapchain(res))
|
||||
zink_kopper_set_readback_needs_update(res);
|
||||
@@ -693,9 +578,6 @@ template <barrier_type BARRIER_API, bool UNSYNCHRONIZED, bool GENERAL_IMAGE>
|
||||
void
|
||||
zink_resource_memory_barrier(struct zink_context *ctx, struct zink_resource *res, VkAccessFlags flags, VkPipelineStageFlags pipeline)
|
||||
{
|
||||
if (!pipeline)
|
||||
pipeline = pipeline_access_stage(flags);
|
||||
|
||||
bool is_write = zink_resource_access_is_write(flags);
|
||||
enum zink_resource_access rw = is_write ? ZINK_RESOURCE_ACCESS_RW : ZINK_RESOURCE_ACCESS_WRITE;
|
||||
bool has_usage = zink_resource_has_usage(res);
|
||||
@@ -796,11 +678,6 @@ template <bool UNSYNCHRONIZED>
|
||||
void
|
||||
zink_resource_image_barrier_general(struct zink_context *ctx, struct zink_resource *res, VkImageLayout new_layout, VkAccessFlags flags, VkPipelineStageFlags pipeline)
|
||||
{
|
||||
if (!pipeline)
|
||||
pipeline = pipeline_dst_stage(new_layout);
|
||||
if (!flags)
|
||||
flags = access_dst_flags(new_layout);
|
||||
|
||||
assert(new_layout == VK_IMAGE_LAYOUT_GENERAL || new_layout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR);
|
||||
/* if this requires an actual image barrier, send it through to the image barrier handlers */
|
||||
if (res->obj->needs_zs_evaluate || res->obj->exportable || zink_is_swapchain(res) || res->layout != new_layout ||
|
||||
|
||||
Reference in New Issue
Block a user