summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2017-10-02 14:09:56 -0700
committerEric Anholt <[email protected]>2017-10-10 11:42:05 -0700
commitf0ee7d6ba85c0695e276b61c8c8113552d8bde6c (patch)
tree8c1522c4842c400a37ac6152c681e40e7aa568a8
parentf4133865d191c6a5377d63a2384e5844b1e0e14d (diff)
broadcom/vc5: Add support for GL_EXT_provoking_vertex.
The bit was missing from the spec, but it's there in the simulator. Fixes the piglit clipflat test.
-rw-r--r--src/broadcom/cle/v3d_packet_v33.xml1
-rw-r--r--src/gallium/drivers/vc5/vc5_emit.c3
-rw-r--r--src/gallium/drivers/vc5/vc5_screen.c2
3 files changed, 5 insertions, 1 deletions
diff --git a/src/broadcom/cle/v3d_packet_v33.xml b/src/broadcom/cle/v3d_packet_v33.xml
index ba5ceb0d92e..1c8ffe480ea 100644
--- a/src/broadcom/cle/v3d_packet_v33.xml
+++ b/src/broadcom/cle/v3d_packet_v33.xml
@@ -308,6 +308,7 @@
</packet>
<packet code="96" name="Configuration Bits">
+ <field name="Direct3D Provoking Vertex" size="1" start="21" type="bool"/>
<field name="Direct3D 'Point-fill' mode" size="1" start="20" type="bool"/>
<field name="Blend enable" size="1" start="19" type="bool"/>
<field name="Stencil enable" size="1" start="18" type="bool"/>
diff --git a/src/gallium/drivers/vc5/vc5_emit.c b/src/gallium/drivers/vc5/vc5_emit.c
index 7f78817bf91..475db7bc868 100644
--- a/src/gallium/drivers/vc5/vc5_emit.c
+++ b/src/gallium/drivers/vc5/vc5_emit.c
@@ -248,6 +248,9 @@ vc5_emit_state(struct pipe_context *pctx)
config.rasterizer_oversample_mode =
vc5->rasterizer->base.multisample;
+ config.direct3d_provoking_vertex =
+ vc5->rasterizer->base.flatshade_first;
+
config.blend_enable = vc5->blend->rt[0].blend_enable;
config.early_z_updates_enable = true;
diff --git a/src/gallium/drivers/vc5/vc5_screen.c b/src/gallium/drivers/vc5/vc5_screen.c
index 792d430722b..66180d27ed5 100644
--- a/src/gallium/drivers/vc5/vc5_screen.c
+++ b/src/gallium/drivers/vc5/vc5_screen.c
@@ -111,6 +111,7 @@ vc5_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION:
case PIPE_CAP_COMPUTE:
case PIPE_CAP_DRAW_INDIRECT:
+ case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
return 1;
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
@@ -156,7 +157,6 @@ vc5_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
case PIPE_CAP_SEAMLESS_CUBE_MAP:
- case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY: