Mesa (master): turnip: correctly emit non-binning vs in transform feedback case
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jun 8 22:19:40 UTC 2020
Module: Mesa
Branch: master
Commit: 6ac4d778fae0cdfa356c7ebe0db88987ccb35fa5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ac4d778fae0cdfa356c7ebe0db88987ccb35fa5
Author: Jonathan Marek <jonathan at marek.ca>
Date: Sat Jun 6 11:21:58 2020 -0400
turnip: correctly emit non-binning vs in transform feedback case
The offset given to tu6_emit_shader_object was wrong, binning_vs_offset
should only be used when using the binning pass vs.
Signed-off-by: Jonathan Marek <jonathan at marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5370>
---
src/freedreno/vulkan/tu_pipeline.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c
index f86d322dc53..f95b9e174ac 100644
--- a/src/freedreno/vulkan/tu_pipeline.c
+++ b/src/freedreno/vulkan/tu_pipeline.c
@@ -1572,6 +1572,7 @@ tu6_emit_program(struct tu_cs *cs,
builder->shaders[MESA_SHADER_FRAGMENT]
? &builder->shaders[MESA_SHADER_FRAGMENT]->variants[0]
: &dummy_variant;
+ uint32_t vs_offset = builder->shader_offsets[MESA_SHADER_VERTEX];
bool has_gs = gs->type != MESA_SHADER_NONE;
if (binning_pass) {
@@ -1579,8 +1580,10 @@ tu6_emit_program(struct tu_cs *cs,
* binning pass VS will have outputs on other than position/psize
* stripped out:
*/
- if (vs->shader->stream_output.num_outputs == 0)
+ if (vs->shader->stream_output.num_outputs == 0) {
vs = &builder->shaders[MESA_SHADER_VERTEX]->variants[1];
+ vs_offset = builder->binning_vs_offset;
+ }
fs = &dummy_variant;
}
@@ -1600,8 +1603,7 @@ tu6_emit_program(struct tu_cs *cs,
builder->use_dual_src_blend,
builder->render_components);
- tu6_emit_shader_object(cs, MESA_SHADER_VERTEX, vs, binary_bo,
- binning_pass ? builder->binning_vs_offset : builder->shader_offsets[MESA_SHADER_VERTEX]);
+ tu6_emit_shader_object(cs, MESA_SHADER_VERTEX, vs, binary_bo, vs_offset);
if (has_gs)
tu6_emit_shader_object(cs, MESA_SHADER_GEOMETRY, gs, binary_bo,
builder->shader_offsets[MESA_SHADER_GEOMETRY]);
More information about the mesa-commit
mailing list