panfrost: Fix gl_VertexID/InstanceID

Fixes a bunch of tests in dEQP-GLES3.functional.instanced.*.

Fixes: 027944c7c8 ("panfrost: Avoid reading GPU memory when packing
vertices")

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3950>
This commit is contained in:
Alyssa Rosenzweig 2020-02-20 10:03:29 -05:00 committed by Tomeu Vizoso
parent a0b90b45a9
commit 23c8597172
4 changed files with 7 additions and 20 deletions

View file

@ -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

View file

@ -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 */

View file

@ -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;

View file

@ -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];