Mesa (master): panfrost: Fix gl_VertexID/InstanceID
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Feb 27 15:48:14 UTC 2020
Module: Mesa
Branch: master
Commit: 23c859717216253ee06482051fc08cecb63f7543
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=23c859717216253ee06482051fc08cecb63f7543
Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date: Thu Feb 20 10:03:29 2020 -0500
panfrost: Fix gl_VertexID/InstanceID
Fixes a bunch of tests in dEQP-GLES3.functional.instanced.*.
Fixes: 027944c7c8c ("panfrost: Avoid reading GPU memory when packing
vertices")
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3950>
---
.gitlab-ci/deqp-panfrost-t860-fails.txt | 16 ----------------
src/gallium/drivers/panfrost/pan_attributes.c | 6 ++----
src/gallium/drivers/panfrost/pan_context.c | 4 ++++
src/gallium/drivers/panfrost/pan_context.h | 1 +
4 files changed, 7 insertions(+), 20 deletions(-)
diff --git a/.gitlab-ci/deqp-panfrost-t860-fails.txt b/.gitlab-ci/deqp-panfrost-t860-fails.txt
index 16df212525f..689e0601b55 100644
--- a/.gitlab-ci/deqp-panfrost-t860-fails.txt
+++ b/.gitlab-ci/deqp-panfrost-t860-fails.txt
@@ -571,22 +571,6 @@ dEQP-GLES3.functional.fragment_out.array.uint.rgba8ui_mediump_uvec2
dEQP-GLES3.functional.fragment_out.array.uint.rgba8ui_mediump_uvec3
dEQP-GLES3.functional.fragment_out.array.uint.rgba8ui_mediump_uvec4
dEQP-GLES3.functional.fragment_out.random.30
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id.1_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id.20_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id.2_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id.4_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed.1_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed.20_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed.2_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed.4_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id.1_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id.20_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id.2_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id.4_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed.1_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed.20_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed.2_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed.4_instances
dEQP-GLES3.functional.multisample.fbo_4_samples.common_edge_big_quad
dEQP-GLES3.functional.multisample.fbo_4_samples.common_edge_small_quads
dEQP-GLES3.functional.multisample.fbo_4_samples.common_edge_viewport_quad
diff --git a/src/gallium/drivers/panfrost/pan_attributes.c b/src/gallium/drivers/panfrost/pan_attributes.c
index c19af9f1c59..ada95d181c7 100644
--- a/src/gallium/drivers/panfrost/pan_attributes.c
+++ b/src/gallium/drivers/panfrost/pan_attributes.c
@@ -118,10 +118,8 @@ panfrost_emit_vertex_data(struct panfrost_batch *batch)
/* Add special gl_VertexID/gl_InstanceID buffers */
panfrost_vertex_id(ctx->padded_count, &attrs[k]);
- so->hw[PAN_VERTEX_ID].index = k++;
-
- panfrost_instance_id(ctx->padded_count, &attrs[k]);
- so->hw[PAN_INSTANCE_ID].index = k++;
+ so->vertexid_index = k++;
+ panfrost_instance_id(ctx->padded_count, &attrs[k++]);
/* Upload whatever we emitted and go */
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 598009ba1c0..efc7c37111e 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -430,7 +430,11 @@ panfrost_stage_attributes(struct panfrost_context *ctx)
};
/* See mali_attr_meta specification for the magic number */
+
+ builtin.index = so->vertexid_index;
memcpy(&target[PAN_VERTEX_ID], &builtin, 4);
+
+ builtin.index = so->vertexid_index + 1;
memcpy(&target[PAN_INSTANCE_ID], &builtin, 4);
ctx->payloads[PIPE_SHADER_VERTEX].postfix.attribute_meta = transfer.gpu;
diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h
index 375569d7c73..bbef58292c6 100644
--- a/src/gallium/drivers/panfrost/pan_context.h
+++ b/src/gallium/drivers/panfrost/pan_context.h
@@ -248,6 +248,7 @@ struct panfrost_shader_variants {
struct panfrost_vertex_state {
unsigned num_elements;
+ unsigned vertexid_index;
struct pipe_vertex_element pipe[PIPE_MAX_ATTRIBS];
struct mali_attr_meta hw[PIPE_MAX_ATTRIBS];
More information about the mesa-commit
mailing list