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