Mesa (master): turnip: Force sysmem for tessellation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jun 22 14:58:16 UTC 2020


Module: Mesa
Branch: master
Commit: 7a836ec6319630a3b5dfbb7101b839c4804a092c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a836ec6319630a3b5dfbb7101b839c4804a092c

Author: Brian Ho <brian at brkho.com>
Date:   Tue Jun  9 14:48:49 2020 -0400

turnip: Force sysmem for tessellation

Tessellation is incompatible with HW binning (dEQP tests fail when
we set forcebin), so force sysmem when we finish recording a command
buffer that uses a tess pipeline.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5059>

---

 src/freedreno/vulkan/tu_cmd_buffer.c | 7 +++++++
 src/freedreno/vulkan/tu_private.h    | 2 ++
 2 files changed, 9 insertions(+)

diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 2f88ca758cb..41d6bfcdedd 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -730,6 +730,9 @@ use_sysmem_rendering(struct tu_cmd_buffer *cmd)
    if (cmd->state.framebuffer->layers > 1)
       return true;
 
+   if (cmd->has_tess)
+      return true;
+
    return cmd->state.tiling_config.force_sysmem;
 }
 
@@ -2514,6 +2517,9 @@ tu_CmdExecuteCommands(VkCommandBuffer commandBuffer,
             cmd->record_result = result;
             break;
          }
+
+         if (secondary->has_tess)
+            cmd->has_tess = true;
       } else {
          assert(tu_cs_is_empty(&secondary->draw_cs));
          assert(tu_cs_is_empty(&secondary->draw_epilogue_cs));
@@ -3217,6 +3223,7 @@ tu6_bind_draw_states(struct tu_cmd_buffer *cmd,
          pipeline->active_stages & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT;
    struct tu_cs_entry tess_consts = {};
    if (has_tess) {
+      cmd->has_tess = true;
       result = tu6_emit_tess_consts(cmd, draw, pipeline, &tess_consts);
       if (result != VK_SUCCESS)
          return result;
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index df843ee2789..532ab64362c 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -967,6 +967,8 @@ struct tu_cmd_buffer
 
    struct tu_bo scratch_bo;
 
+   bool has_tess;
+
    struct tu_bo vsc_draw_strm;
    struct tu_bo vsc_prim_strm;
    uint32_t vsc_draw_strm_pitch;



More information about the mesa-commit mailing list