Mesa (main): v3dv: remove sRGB blending workaround

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 16 11:21:09 UTC 2021


Module: Mesa
Branch: main
Commit: 9753dec07dcdb56be5a4bf97b37b40861033a2b3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9753dec07dcdb56be5a4bf97b37b40861033a2b3

Author: Charlie <charlie at daft.games>
Date:   Mon Jun 14 22:54:26 2021 +0100

v3dv: remove sRGB blending workaround

This reverts commits 4c15131b1d36874b643aed8407933ccd8675841d and
1cf36797bf9d63b33c405d85ce720dcd5e75a47c.

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11377>

---

 src/broadcom/vulkan/v3dv_cmd_buffer.c | 24 ++----------------------
 src/broadcom/vulkan/v3dv_pass.c       |  9 +--------
 src/broadcom/vulkan/v3dv_private.h    |  2 --
 3 files changed, 3 insertions(+), 32 deletions(-)

diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c
index 12c855e5743..f30d1458fb5 100644
--- a/src/broadcom/vulkan/v3dv_cmd_buffer.c
+++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c
@@ -4354,9 +4354,8 @@ emit_index_buffer(struct v3dv_cmd_buffer *cmd_buffer)
 static void
 cmd_buffer_emit_pre_draw(struct v3dv_cmd_buffer *cmd_buffer)
 {
-   struct v3dv_pipeline *pipeline = cmd_buffer->state.gfx.pipeline;
-   assert(pipeline);
-   assert(!(pipeline->active_stages & VK_SHADER_STAGE_COMPUTE_BIT));
+   assert(cmd_buffer->state.gfx.pipeline);
+   assert(!(cmd_buffer->state.gfx.pipeline->active_stages & VK_SHADER_STAGE_COMPUTE_BIT));
 
    /* If we emitted a pipeline barrier right before this draw we won't have
     * an active job. In that case, create a new job continuing the current
@@ -4370,25 +4369,6 @@ cmd_buffer_emit_pre_draw(struct v3dv_cmd_buffer *cmd_buffer)
    /* Restart single sample job for MSAA pipeline if needed */
    cmd_buffer_restart_job_for_msaa_if_needed(cmd_buffer);
 
-   /* Enable always flush if we are blending to sRGB render targets. This
-    * fixes test failures in:
-    * dEQP-VK.pipeline.blend.format.r8g8b8a8_srgb.*
-    *
-    * FIXME: not sure why we need this. The tile buffer is always linear, with
-    * conversion from/to sRGB happening on tile load/store operations. This
-    * means that when we enable flushing the only difference is that we convert
-    * to sRGB on the store after each draw call and we convert from sRGB on the
-    * load before each draw call, but the blend happens in linear format in the
-    * tile buffer anyway, which is the same scenario as if we didn't flush.
-    */
-   assert(pipeline->subpass);
-   assert(cmd_buffer->state.job);
-   if (pipeline->subpass->has_srgb_rt && pipeline->blend.enables) {
-      cmd_buffer->state.job->always_flush = true;
-      perf_debug("flushing draw calls for subpass %d because bound pipeline "
-                 "uses sRGB blending\n", cmd_buffer->state.subpass_idx);
-   }
-
    /* If the job is configured to flush on every draw call we need to create
     * a new job now.
     */
diff --git a/src/broadcom/vulkan/v3dv_pass.c b/src/broadcom/vulkan/v3dv_pass.c
index e734580f183..918f5083338 100644
--- a/src/broadcom/vulkan/v3dv_pass.c
+++ b/src/broadcom/vulkan/v3dv_pass.c
@@ -22,7 +22,6 @@
  */
 
 #include "v3dv_private.h"
-#include "vk_format_info.h"
 
 static uint32_t
 num_subpass_attachments(const VkSubpassDescription *desc)
@@ -175,16 +174,10 @@ v3dv_CreateRenderPass(VkDevice _device,
          p += desc->colorAttachmentCount;
 
          for (uint32_t j = 0; j < desc->colorAttachmentCount; j++) {
-            const uint32_t attachment_idx =
-               desc->pColorAttachments[j].attachment;
             subpass->color_attachments[j] = (struct v3dv_subpass_attachment) {
-               .attachment = attachment_idx,
+               .attachment = desc->pColorAttachments[j].attachment,
                .layout = desc->pColorAttachments[j].layout,
             };
-            if (attachment_idx != VK_ATTACHMENT_UNUSED) {
-               VkFormat format = pass->attachments[attachment_idx].desc.format;
-               subpass->has_srgb_rt |= vk_format_is_srgb(format);
-            }
          }
       }
 
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index 2efe9c6701f..d49b8636954 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -585,8 +585,6 @@ struct v3dv_subpass {
 
    struct v3dv_subpass_attachment ds_attachment;
 
-   bool has_srgb_rt;
-
    /* If we need to emit the clear of the depth/stencil attachment using a
     * a draw call instead of using the TLB (GFXH-1461).
     */



More information about the mesa-commit mailing list