summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/svga/svga_pipe_rasterizer.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/svga/svga_pipe_rasterizer.c b/src/gallium/drivers/svga/svga_pipe_rasterizer.c
index b01b04c2cfc..569fbe16f67 100644
--- a/src/gallium/drivers/svga/svga_pipe_rasterizer.c
+++ b/src/gallium/drivers/svga/svga_pipe_rasterizer.c
@@ -105,6 +105,7 @@ static void
define_rasterizer_object(struct svga_context *svga,
struct svga_rasterizer_state *rast)
{
+ struct svga_screen *svgascreen = svga_screen(svga->pipe.screen);
unsigned fill_mode = translate_fill_mode(rast->templ.fill_front);
unsigned cull_mode = translate_cull_mode(rast->templ.cull_face);
int depth_bias = rast->templ.offset_units;
@@ -129,6 +130,8 @@ define_rasterizer_object(struct svga_context *svga,
}
for (try = 0; try < 2; try++) {
+ const uint8 pv_last = !rast->templ.flatshade_first &&
+ svgascreen->haveProvokingVertex;
enum pipe_error ret =
SVGA3D_vgpu10_DefineRasterizerState(svga->swc,
rast->id,
@@ -146,7 +149,7 @@ define_rasterizer_object(struct svga_context *svga,
rast->templ.line_stipple_enable,
line_factor,
line_pattern,
- !rast->templ.flatshade_first);
+ pv_last);
if (ret == PIPE_OK)
return;
svga_context_flush(svga, NULL);