iris: Initialize ice->state.prim_mode to an invalid value
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 13 Sep 2019 09:32:25 +0000 (02:32 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 13 Sep 2019 23:31:29 +0000 (16:31 -0700)
It was calloc'd to 0 which is PIPE_PRIM_POINTS, which means that we
fail to notice an initial primitive of points being new, and fail at
updating the "primitive is points or lines" field.

We do not need to reset this on device loss because we're tracking
the last primitive mode sent to us on the CPU via draw_vbo, not the
last primitive mode sent to the GPU.

Fixes several tests:
- dEQP-GLES3.functional.clipping.point.wide_point_clip
- dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center
- dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner

Fixes: dcfca0af7c5 ("iris: Set XY Clipping correctly.")
src/gallium/drivers/iris/iris_state.c

index 4511a075ffcfd63edddd460f03185c752e4d874e..3fca191937d56ab8c3236256834a1ccf0e4fde68 100644 (file)
@@ -6974,6 +6974,7 @@ genX(init_state)(struct iris_context *ice)
 
    ice->state.sample_mask = 0xffff;
    ice->state.num_viewports = 1;
+   ice->state.prim_mode = PIPE_PRIM_MAX;
    ice->state.genx = calloc(1, sizeof(struct iris_genx_state));
 
    /* Make a 1x1x1 null surface for unbound textures */