Module: Mesa
Branch: master
Commit: 30cf07cc8ac1f2432b78336774ee43a7ef8d19e8
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=30cf07cc8ac1f2432b78336774ee43a7ef8d19e8

Author: Erik Faye-Lund <[email protected]>
Date:   Tue Mar 16 16:00:33 2021 +0100

lavapipe: fix primitive-restart for uint8 indices

I forgot to add an implicit primitive-restart index for uint8 while
adding support for this initially. But we also have a nice little
helper to simplify this, so let's use that instead of open-coding.

Fixes: 6526e6d11b8 ("lavapipe: implement VK_EXT_index_type_uint8")
Reviewed-By: Mike Blumenkrantz <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9622>

---

 src/gallium/drivers/llvmpipe/ci/deqp-lvp-fails.txt   |  1 -
 src/gallium/drivers/zink/ci/deqp-zink-lvp-fails.txt  | 13 -------------
 src/gallium/drivers/zink/ci/deqp-zink-lvp-flakes.txt |  6 ------
 src/gallium/drivers/zink/ci/zink-quick_gl.txt        |  9 ---------
 src/gallium/frontends/lavapipe/lvp_execute.c         | 10 ++++------
 5 files changed, 4 insertions(+), 35 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/ci/deqp-lvp-fails.txt 
b/src/gallium/drivers/llvmpipe/ci/deqp-lvp-fails.txt
index 548f184ed77..98b61c2537c 100644
--- a/src/gallium/drivers/llvmpipe/ci/deqp-lvp-fails.txt
+++ b/src/gallium/drivers/llvmpipe/ci/deqp-lvp-fails.txt
@@ -11,7 +11,6 @@ 
dEQP-VK.glsl.texture_functions.query.texturequerylod.sampler1dshadow_fragment,Fa
 
dEQP-VK.glsl.texture_functions.query.texturequerylod.sampler2darray_fixed_fragment,Fail
 
dEQP-VK.glsl.texture_functions.query.texturequerylod.sampler2darrayshadow_fragment,Fail
 
dEQP-VK.glsl.texture_functions.query.texturequerylod.sampler2dshadow_fragment,Fail
-dEQP-VK.pipeline.input_assembly.primitive_restart.index_type_uint8.line_strip_with_adjacency,Fail
 dEQP-VK.rasterization.primitives_multisample_4_bit.no_stipple.points,Fail
 
dEQP-VK.tessellation.invariance.outer_triangle_set.quads_fractional_odd_spacing,Timeout
 
dEQP-VK.texture.filtering.2d.combinations.linear_mipmap_linear.linear.clamp_to_edge.repeat,Fail
diff --git a/src/gallium/drivers/zink/ci/deqp-zink-lvp-fails.txt 
b/src/gallium/drivers/zink/ci/deqp-zink-lvp-fails.txt
index 2cfd087575f..5e328ff7642 100644
--- a/src/gallium/drivers/zink/ci/deqp-zink-lvp-fails.txt
+++ b/src/gallium/drivers/zink/ci/deqp-zink-lvp-fails.txt
@@ -245,19 +245,6 @@ dEQP-GLES3.functional.fragment_out.random.94,Fail
 dEQP-GLES3.functional.fragment_out.random.98,Fail
 dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units,Fail
 dEQP-GLES3.functional.polygon_offset.fixed24_displacement_with_units,Fail
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_byte.draw_elements_instanced,Fail
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_byte.draw_range_elements,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_byte.draw_range_elements,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_byte.draw_range_elements,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_byte.draw_elements,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_byte.draw_elements,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_byte.draw_elements,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_byte.draw_elements_instanced,Fail
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_byte.draw_range_elements,Fail
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_byte.draw_range_elements,Fail
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_byte.draw_elements,Fail
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_byte.draw_elements,Fail
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_byte.draw_elements_instanced,Fail
 dEQP-GLES3.functional.rasterization.flatshading.lines,Fail
 
dEQP-GLES3.functional.shaders.texture_functions.texturegrad.isampler2darray_vertex,Fail
 
dEQP-GLES3.functional.shaders.texture_functions.texturegrad.isampler3d_vertex,Fail
diff --git a/src/gallium/drivers/zink/ci/deqp-zink-lvp-flakes.txt 
b/src/gallium/drivers/zink/ci/deqp-zink-lvp-flakes.txt
index 50773b8a7cc..e69de29bb2d 100644
--- a/src/gallium/drivers/zink/ci/deqp-zink-lvp-flakes.txt
+++ b/src/gallium/drivers/zink/ci/deqp-zink-lvp-flakes.txt
@@ -1,6 +0,0 @@
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_byte.draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_byte.draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_byte.draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_byte.draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_byte.draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_byte.draw_elements_instanced
diff --git a/src/gallium/drivers/zink/ci/zink-quick_gl.txt 
b/src/gallium/drivers/zink/ci/zink-quick_gl.txt
index 43fd8b8a465..c23477525ff 100644
--- a/src/gallium/drivers/zink/ci/zink-quick_gl.txt
+++ b/src/gallium/drivers/zink/ci/zink-quick_gl.txt
@@ -735,9 +735,6 @@ spec/!opengl 3.0/clearbuffer-depth-cs-probe: skip
 spec/!opengl 3.0/clearbuffer-stencil: fail
 spec/!opengl 3.0/sampler-cube-shadow: fail
 spec/!opengl 3.1/draw-buffers-errors: skip
-spec/!opengl 3.1/primitive-restart-xfb flush: fail
-spec/!opengl 3.1/primitive-restart-xfb generated: fail
-spec/!opengl 3.1/primitive-restart-xfb written: fail
 spec/!opengl 3.2/gl-3.2-adj-prims cull-back pv-first: fail
 spec/!opengl 3.2/gl-3.2-adj-prims cull-back pv-last: fail
 spec/!opengl 3.2/gl-3.2-adj-prims cull-front pv-first: fail
@@ -2585,7 +2582,6 @@ spec/ext_window_rectangles/render_gles3: skip
 spec/glsl-1.50/built-in constants compatibility: skip
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_loop ffs: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_loop other: fail
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip ffs: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip_adjacency 
ffs: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip_adjacency 
other: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines ffs: fail
@@ -2594,8 +2590,6 @@ spec/glsl-1.50/execution/geometry/primitive-id-restart 
gl_lines_adjacency ffs: f
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines_adjacency 
other: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_points ffs: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_points other: fail
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangle_fan ffs: 
fail
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangle_strip ffs: 
fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart 
gl_triangle_strip_adjacency ffs: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart 
gl_triangle_strip_adjacency other: fail
 spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles ffs: fail
@@ -2708,9 +2702,6 @@ spec/nv_fragment_program_option/fp-set-02: skip
 spec/nv_fragment_program_option/fp-unpack-01: skip
 spec/nv_image_formats/nv_image_formats-gles3: skip
 spec/nv_primitive_restart/primitive-restart-disable_vbo: fail
-spec/nv_primitive_restart/primitive-restart-draw-mode-line_strip: fail
-spec/nv_primitive_restart/primitive-restart-draw-mode-triangle_fan: fail
-spec/nv_primitive_restart/primitive-restart-draw-mode-triangle_strip: fail
 spec/nv_primitive_restart/primitive-restart-vbo_combined_vertex_and_index: fail
 spec/nv_primitive_restart/primitive-restart-vbo_index_only: fail
 spec/nv_primitive_restart/primitive-restart-vbo_separate_vertex_and_index: fail
diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c 
b/src/gallium/frontends/lavapipe/lvp_execute.c
index a06dabd7dab..cf29946ceb1 100644
--- a/src/gallium/frontends/lavapipe/lvp_execute.c
+++ b/src/gallium/frontends/lavapipe/lvp_execute.c
@@ -38,6 +38,7 @@
 #include "util/u_sampler.h"
 #include "util/u_box.h"
 #include "util/u_inlines.h"
+#include "util/u_prim_restart.h"
 #include "util/format/u_format_zs.h"
 
 #include "vk_util.h"
@@ -2114,12 +2115,9 @@ static void handle_draw_indexed(struct 
lvp_cmd_buffer_entry *cmd,
    state->info.index_bias = cmd->u.draw_indexed.vertex_offset;
    state->info.view_mask = subpass->view_mask;
 
-   if (state->info.primitive_restart) {
-      if (state->info.index_size == 4)
-         state->info.restart_index = 0xffffffff;
-      else
-         state->info.restart_index = 0xffff;
-   }
+   if (state->info.primitive_restart)
+      state->info.restart_index = 
util_prim_restart_index_from_size(state->info.index_size);
+
    state->pctx->draw_vbo(state->pctx, &state->info, NULL, &state->draw, 1);
 }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to