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

Author: Erik Faye-Lund <[email protected]>
Date:   Thu Feb 11 13:34:45 2021 +0100

lavapipe: handle null-buffers for xfb

The Vulkan spec says the following for vkCmdBeginTransformFeedbackEXT:

  "For each element of pCounterBuffers that is VK_NULL_HANDLE, transform
   feedback will start capturing vertex data to byte zero in the
   corresponding bound transform feedback buffer."

While not quite as explicit, similar wording exists for
vkCmdEndTransformFeedbackEXT in "Valid Usage" section.

So, this means that we should handle NULL in this case, and simply
ignore the corresponding reads and writes.

This fixes a whole lot of crashes when using transform-feedback with
Zink.

Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8982>

---

 .gitlab-ci/piglit/zink-quick_gl.txt          | 428 +++++++--------------------
 src/gallium/frontends/lavapipe/lvp_execute.c |   6 +
 2 files changed, 117 insertions(+), 317 deletions(-)

diff --git a/.gitlab-ci/piglit/zink-quick_gl.txt 
b/.gitlab-ci/piglit/zink-quick_gl.txt
index fe6c015c01e..0fe92492252 100644
--- a/.gitlab-ci/piglit/zink-quick_gl.txt
+++ b/.gitlab-ci/piglit/zink-quick_gl.txt
@@ -737,20 +737,20 @@ spec/!opengl 3.0/array-depth-roundtrip: fail
 spec/!opengl 3.0/clearbuffer-depth-cs-probe: skip
 spec/!opengl 3.0/depth-cube-map: fail
 spec/!opengl 3.0/sampler-cube-shadow: fail
-spec/!opengl 3.1/primitive-restart-xfb flush: crash
-spec/!opengl 3.1/primitive-restart-xfb generated: crash
-spec/!opengl 3.1/primitive-restart-xfb written: crash
+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/coord-replace-doesnt-eliminate-frag-tex-coords: fail
-spec/!opengl 3.2/gl-3.2-adj-prims cull-back pv-first: crash
-spec/!opengl 3.2/gl-3.2-adj-prims cull-back pv-last: crash
-spec/!opengl 3.2/gl-3.2-adj-prims cull-front pv-first: crash
-spec/!opengl 3.2/gl-3.2-adj-prims cull-front pv-last: crash
-spec/!opengl 3.2/gl-3.2-adj-prims line cull-back pv-first: crash
-spec/!opengl 3.2/gl-3.2-adj-prims line cull-back pv-last: crash
-spec/!opengl 3.2/gl-3.2-adj-prims line cull-front pv-first: crash
-spec/!opengl 3.2/gl-3.2-adj-prims line cull-front pv-last: crash
-spec/!opengl 3.2/gl-3.2-adj-prims pv-first: crash
-spec/!opengl 3.2/gl-3.2-adj-prims pv-last: crash
+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
+spec/!opengl 3.2/gl-3.2-adj-prims cull-front pv-last: fail
+spec/!opengl 3.2/gl-3.2-adj-prims line cull-back pv-first: fail
+spec/!opengl 3.2/gl-3.2-adj-prims line cull-back pv-last: fail
+spec/!opengl 3.2/gl-3.2-adj-prims line cull-front pv-first: fail
+spec/!opengl 3.2/gl-3.2-adj-prims line cull-front pv-last: fail
+spec/!opengl 3.2/gl-3.2-adj-prims pv-first: fail
+spec/!opengl 3.2/gl-3.2-adj-prims pv-last: fail
 spec/!opengl 3.2/glsl-resource-not-bound buffer: crash
 spec/!opengl 3.3/minmax: skip
 spec/!opengl 3.3/required-renderbuffer-attachment-formats: skip
@@ -766,7 +766,7 @@ spec/!opengl 4.5/named-framebuffer-draw-buffers-errors: skip
 spec/!opengl 4.5/named-framebuffer-read-buffer-errors: skip
 spec/!opengl es 2.0/glsl-fs-pointcoord: fail
 spec/!opengl es 2.0/invalid-es3-queries_gles2: skip
-spec/!opengl es 3.0/gles-3.0-transform-feedback-uniform-buffer-object: crash
+spec/!opengl es 3.0/gles-3.0-transform-feedback-uniform-buffer-object: fail
 spec/3dfx_texture_compression_fxt1/compressedteximage 
gl_compressed_rgb_fxt1_3dfx: skip
 spec/3dfx_texture_compression_fxt1/compressedteximage 
gl_compressed_rgba_fxt1_3dfx: skip
 spec/3dfx_texture_compression_fxt1/fbo-generatemipmap-formats: skip
@@ -944,14 +944,6 @@ 
spec/arb_draw_indirect/arb_draw_indirect-draw-arrays-compat: skip
 spec/arb_draw_indirect/arb_draw_indirect-draw-arrays-prim-restart: skip
 spec/arb_draw_indirect/arb_draw_indirect-draw-elements-base-instance: skip
 spec/arb_draw_indirect/arb_draw_indirect-draw-elements-compat: skip
-spec/arb_draw_indirect/arb_draw_indirect-transform-feedback: crash
-spec/arb_enhanced_layouts/arb_enhanced_layouts-transform-feedback-layout-qualifiers_gs:
 crash
-spec/arb_enhanced_layouts/arb_enhanced_layouts-transform-feedback-layout-qualifiers_gs_max:
 crash
-spec/arb_enhanced_layouts/arb_enhanced_layouts-transform-feedback-layout-qualifiers_vs:
 crash
-spec/arb_enhanced_layouts/arb_enhanced_layouts-transform-feedback-layout-qualifiers_vs_interface:
 crash
-spec/arb_enhanced_layouts/arb_enhanced_layouts-transform-feedback-layout-qualifiers_vs_named_interface:
 crash
-spec/arb_enhanced_layouts/arb_enhanced_layouts-transform-feedback-layout-qualifiers_vs_struct:
 crash
-spec/arb_enhanced_layouts/gs-stream-location-aliasing: crash
 spec/arb_es2_compatibility/texwrap formats bordercolor-swizzled/gl_rgb565, 
swizzled, border color only: fail
 spec/arb_es2_compatibility/texwrap formats bordercolor/gl_rgb565, border color 
only: fail
 spec/arb_es3_compatibility/es3-drawarrays-primrestart-fixedindex: skip
@@ -991,14 +983,11 @@ spec/arb_get_program_binary/restore-implicit-use-program: 
skip
 spec/arb_get_program_binary/restore-sso-program: fail
 spec/arb_get_program_binary/xfb-varyings: skip
 spec/arb_gpu_shader5/arb_gpu_shader5-emitstreamvertex_nodraw: fail
-spec/arb_gpu_shader5/arb_gpu_shader5-xfb-streams: crash
 spec/arb_gpu_shader5/arb_gpu_shader5-xfb-streams-without-invocations: skip
 spec/arb_gpu_shader5/arb_gpu_shader5-xfb-streams-without-invocations spirv: 
skip
 spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-dlist-uniforms: skip
 spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-double_in_bool_uniform: 
skip
 
spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-fs-non-uniform-control-flow-ssbo:
 skip
-spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-tf-interleaved: crash
-spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-tf-interleaved-aligned: 
crash
 spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-tf-separate: fail
 
spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-vs-non-uniform-control-flow-alu:
 skip
 
spec/arb_gpu_shader_fp64/execution/arb_gpu_shader_fp64-vs-non-uniform-control-flow-const:
 skip
@@ -1054,8 +1043,72 @@ 
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_u
 
spec/arb_program_interface_query/arb_program_interface_query-resource-query/gl_uniform_block(tcs,tes):
 skip
 spec/arb_provoking_vertex/arb-provoking-vertex-clipped-geometry-flatshading: 
fail
 spec/arb_provoking_vertex/arb-provoking-vertex-render: fail
-spec/arb_provoking_vertex/arb-xfb-before-flatshading: crash
-spec/arb_query_buffer_object/coherency: crash
+spec/arb_query_buffer_object/coherency/index-buffer-gl_clipping_input_primitives:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_clipping_output_primitives:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_compute_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_fragment_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_geometry_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_geometry_shader_primitives_emitted:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_primitives_generated: 
skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_primitives_submitted: 
skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_samples_passed: skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_tess_control_shader_patches:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_tess_evaluation_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_time_elapsed: skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_timestamp: skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_transform_feedback_primitives_written:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_vertex_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/index-buffer-gl_vertices_submitted: skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_any_samples_passed:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_any_samples_passed_conservative:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_clipping_input_primitives:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_clipping_output_primitives:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_compute_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_fragment_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_geometry_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_geometry_shader_primitives_emitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_primitives_generated:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_primitives_submitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_samples_passed: 
skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_tess_control_shader_patches:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_tess_evaluation_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_transform_feedback_primitives_written:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_vertex_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-dispatch-gl_vertices_submitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_any_samples_passed:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_any_samples_passed_conservative:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_clipping_input_primitives:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_clipping_output_primitives:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_compute_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_fragment_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_geometry_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_geometry_shader_primitives_emitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_primitives_generated:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_primitives_submitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_samples_passed: 
skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_tess_control_shader_patches:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_tess_evaluation_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_time_elapsed: 
skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_timestamp: skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_transform_feedback_primitives_written:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_vertex_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-count-gl_vertices_submitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_clipping_input_primitives:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_clipping_output_primitives:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_compute_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_fragment_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_geometry_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_geometry_shader_primitives_emitted:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_primitives_generated: 
skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_primitives_submitted: 
skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_samples_passed: skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_tess_control_shader_patches:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_tess_evaluation_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_time_elapsed: skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_timestamp: skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_transform_feedback_primitives_written:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_vertex_shader_invocations:
 skip
+spec/arb_query_buffer_object/coherency/indirect-draw-gl_vertices_submitted: 
skip
 
spec/arb_query_buffer_object/qbo/query-gl_clipping_input_primitives-async-gl_int:
 skip
 
spec/arb_query_buffer_object/qbo/query-gl_clipping_input_primitives-async-gl_unsigned_int:
 skip
 
spec/arb_query_buffer_object/qbo/query-gl_clipping_input_primitives-async-gl_unsigned_int64_arb:
 skip
@@ -1324,7 +1377,6 @@ spec/arb_separate_shader_objects/mix-and-match-tcs-tes: 
skip
 spec/arb_separate_shader_objects/programuniform coverage/double matrices: skip
 spec/arb_separate_shader_objects/programuniform coverage/double scalar and 
vectors: skip
 spec/arb_separate_shader_objects/rendezvous by location (5 stages): skip
-spec/arb_separate_shader_objects/transform feedback with rendezvous by 
location: crash
 spec/arb_separate_shader_objects/validateprogrampipeline/only tes from tes/tcs 
program: skip
 spec/arb_separate_shader_objects/validateprogrampipeline/tcs splitting a vs/gs 
pipeline: skip
 spec/arb_separate_shader_objects/validateprogrampipeline/tes splitting a vs/gs 
program: skip
@@ -1565,9 +1617,7 @@ spec/arb_texture_multisample/fb-completeness/32: skip
 spec/arb_texture_multisample/fb-completeness/6: skip
 spec/arb_texture_multisample/fb-completeness/8: skip
 spec/arb_texture_multisample/sample-position/16: skip
-spec/arb_texture_multisample/sample-position/2: crash
 spec/arb_texture_multisample/sample-position/32: skip
-spec/arb_texture_multisample/sample-position/4: crash
 spec/arb_texture_multisample/sample-position/6: skip
 spec/arb_texture_multisample/sample-position/8: skip
 spec/arb_texture_multisample/texelfetch/16-fs-isampler2dms: skip
@@ -2019,24 +2069,6 @@ 
spec/arb_texture_view/sampling-2d-array-as-cubemap-array: fail
 spec/arb_timer_query/query gl_timestamp: skip
 spec/arb_timer_query/query-lifetime: skip
 spec/arb_timer_query/timestamp-get: skip
-spec/arb_transform_feedback2/change objects while paused: crash
-spec/arb_transform_feedback2/change objects while paused (gles3): crash
-spec/arb_transform_feedback3/arb_transform_feedback3-ext_interleaved_two_bufs_gs:
 crash
-spec/arb_transform_feedback3/arb_transform_feedback3-ext_interleaved_two_bufs_gs_max:
 crash
-spec/arb_transform_feedback3/arb_transform_feedback3-ext_interleaved_two_bufs_vs:
 crash
-spec/arb_transform_feedback3/gl_nextbuffer-1: crash
-spec/arb_transform_feedback3/gl_nextbuffer-2: crash
-spec/arb_transform_feedback3/gl_nextbuffer-gl_nextbuffer: crash
-spec/arb_transform_feedback3/gl_nextbuffer-gl_skipcomponents1-gl_nextbuffer: 
crash
-spec/arb_transform_feedback3/gl_skipcomponents1-1: crash
-spec/arb_transform_feedback3/gl_skipcomponents1-2: crash
-spec/arb_transform_feedback3/gl_skipcomponents1-3: crash
-spec/arb_transform_feedback3/gl_skipcomponents1-gl_nextbuffer: crash
-spec/arb_transform_feedback3/gl_skipcomponents1234: crash
-spec/arb_transform_feedback3/gl_skipcomponents2: crash
-spec/arb_transform_feedback3/gl_skipcomponents3: crash
-spec/arb_transform_feedback3/gl_skipcomponents4: crash
-spec/arb_transform_feedback_instanced/draw-auto instanced: crash
 
spec/arb_transform_feedback_overflow_query/arb_transform_feedback_overflow_query-basic:
 skip
 
spec/arb_transform_feedback_overflow_query/arb_transform_feedback_overflow_query-errors:
 skip
 spec/arb_uniform_buffer_object/maxblocks: crash
@@ -2918,276 +2950,41 @@ spec/ext_texture_srgb/texwrap formats-s3tc 
bordercolor/gl_compressed_srgb_alpha_
 spec/ext_texture_srgb/texwrap formats-s3tc 
bordercolor/gl_compressed_srgb_alpha_s3tc_dxt5_ext, border color only: fail
 spec/ext_texture_srgb/texwrap formats-s3tc 
bordercolor/gl_compressed_srgb_s3tc_dxt1_ext, border color only: fail
 spec/ext_texture_swizzle/depth_texture_mode_and_swizzle: fail
-spec/ext_transform_feedback2/counting with pause: crash
-spec/ext_transform_feedback2/draw-auto: crash
-spec/ext_transform_feedback/alignment 0: crash
-spec/ext_transform_feedback/alignment 12: crash
-spec/ext_transform_feedback/alignment 4: crash
-spec/ext_transform_feedback/alignment 8: crash
-spec/ext_transform_feedback/buffer-usage: crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance: crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[1]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[2]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[3]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[4]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[5]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[6]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[7]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipdistance[8]-no-subscript: 
crash
-spec/ext_transform_feedback/builtin-varyings gl_clipvertex: crash
-spec/ext_transform_feedback/builtin-varyings gl_color: crash
-spec/ext_transform_feedback/builtin-varyings gl_fogfragcoord: crash
-spec/ext_transform_feedback/builtin-varyings gl_pointsize: crash
-spec/ext_transform_feedback/builtin-varyings gl_position: crash
-spec/ext_transform_feedback/builtin-varyings gl_secondarycolor: crash
-spec/ext_transform_feedback/builtin-varyings gl_texcoord: crash
-spec/ext_transform_feedback/change-size base-grow: crash
-spec/ext_transform_feedback/change-size base-shrink: crash
-spec/ext_transform_feedback/change-size offset-grow: crash
-spec/ext_transform_feedback/change-size offset-shrink: crash
-spec/ext_transform_feedback/change-size range-grow: crash
-spec/ext_transform_feedback/change-size range-shrink: crash
 spec/ext_transform_feedback/generatemipmap prims_generated: fail
-spec/ext_transform_feedback/geometry-shaders-basic: crash
-spec/ext_transform_feedback/immediate-reuse: crash
-spec/ext_transform_feedback/immediate-reuse-index-buffer: crash
-spec/ext_transform_feedback/immediate-reuse-uniform-buffer: crash
-spec/ext_transform_feedback/interleaved-attribs: crash
-spec/ext_transform_feedback/intervening-read output: crash
-spec/ext_transform_feedback/intervening-read output use_gs: crash
-spec/ext_transform_feedback/intervening-read prims_generated: crash
-spec/ext_transform_feedback/intervening-read prims_generated use_gs: crash
-spec/ext_transform_feedback/intervening-read prims_written: crash
-spec/ext_transform_feedback/intervening-read prims_written use_gs: crash
-spec/ext_transform_feedback/max-varyings/max-varying-arrays-of-arrays: notrun
-spec/ext_transform_feedback/max-varyings/max-varying-single-dimension-array: 
crash
-spec/ext_transform_feedback/negative-prims: crash
-spec/ext_transform_feedback/nonflat-integral: crash
-spec/ext_transform_feedback/order arrays lines: crash
-spec/ext_transform_feedback/order arrays points: crash
-spec/ext_transform_feedback/order arrays triangles: crash
-spec/ext_transform_feedback/order elements lines: crash
-spec/ext_transform_feedback/order elements points: crash
-spec/ext_transform_feedback/order elements triangles: crash
-spec/ext_transform_feedback/output-type float: crash
-spec/ext_transform_feedback/output-type float[2]: crash
-spec/ext_transform_feedback/output-type float[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type int: crash
-spec/ext_transform_feedback/output-type int[2]: crash
-spec/ext_transform_feedback/output-type int[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type ivec2: crash
-spec/ext_transform_feedback/output-type ivec2[2]: crash
-spec/ext_transform_feedback/output-type ivec2[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type ivec3: crash
-spec/ext_transform_feedback/output-type ivec3[2]: crash
-spec/ext_transform_feedback/output-type ivec3[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type ivec4: crash
-spec/ext_transform_feedback/output-type ivec4[2]: crash
-spec/ext_transform_feedback/output-type ivec4[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat2: crash
-spec/ext_transform_feedback/output-type mat2[2]: crash
-spec/ext_transform_feedback/output-type mat2[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat2x3: crash
-spec/ext_transform_feedback/output-type mat2x3[2]: crash
-spec/ext_transform_feedback/output-type mat2x3[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat2x4: crash
-spec/ext_transform_feedback/output-type mat2x4[2]: crash
-spec/ext_transform_feedback/output-type mat2x4[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat3: crash
-spec/ext_transform_feedback/output-type mat3[2]: crash
-spec/ext_transform_feedback/output-type mat3[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat3x2: crash
-spec/ext_transform_feedback/output-type mat3x2[2]: crash
-spec/ext_transform_feedback/output-type mat3x2[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat3x4: crash
-spec/ext_transform_feedback/output-type mat3x4[2]: crash
-spec/ext_transform_feedback/output-type mat3x4[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat4: crash
-spec/ext_transform_feedback/output-type mat4[2]: crash
-spec/ext_transform_feedback/output-type mat4[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat4x2: crash
-spec/ext_transform_feedback/output-type mat4x2[2]: crash
-spec/ext_transform_feedback/output-type mat4x2[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type mat4x3: crash
-spec/ext_transform_feedback/output-type mat4x3[2]: crash
-spec/ext_transform_feedback/output-type mat4x3[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type uint: crash
-spec/ext_transform_feedback/output-type uint[2]: crash
-spec/ext_transform_feedback/output-type uint[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type uvec2: crash
-spec/ext_transform_feedback/output-type uvec2[2]: crash
-spec/ext_transform_feedback/output-type uvec2[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type uvec3: crash
-spec/ext_transform_feedback/output-type uvec3[2]: crash
-spec/ext_transform_feedback/output-type uvec3[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type uvec4: crash
-spec/ext_transform_feedback/output-type uvec4[2]: crash
-spec/ext_transform_feedback/output-type uvec4[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type vec2: crash
-spec/ext_transform_feedback/output-type vec2[2]: crash
-spec/ext_transform_feedback/output-type vec2[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type vec3: crash
-spec/ext_transform_feedback/output-type vec3[2]: crash
-spec/ext_transform_feedback/output-type vec3[2]-no-subscript: crash
-spec/ext_transform_feedback/output-type vec4: crash
-spec/ext_transform_feedback/output-type vec4[2]: crash
-spec/ext_transform_feedback/output-type vec4[2]-no-subscript: crash
-spec/ext_transform_feedback/overflow-edge-cases: crash
-spec/ext_transform_feedback/overflow-edge-cases use_gs: crash
-spec/ext_transform_feedback/points: crash
-spec/ext_transform_feedback/points-large: crash
-spec/ext_transform_feedback/position-readback-bufferbase: crash
-spec/ext_transform_feedback/position-readback-bufferbase-discard: crash
-spec/ext_transform_feedback/position-readback-bufferoffset: crash
-spec/ext_transform_feedback/position-readback-bufferoffset-discard: crash
-spec/ext_transform_feedback/position-readback-bufferrange: crash
-spec/ext_transform_feedback/position-readback-bufferrange-discard: crash
-spec/ext_transform_feedback/position-render-bufferbase: crash
-spec/ext_transform_feedback/position-render-bufferbase-discard: crash
-spec/ext_transform_feedback/position-render-bufferoffset: crash
-spec/ext_transform_feedback/position-render-bufferoffset-discard: crash
-spec/ext_transform_feedback/position-render-bufferrange: crash
-spec/ext_transform_feedback/position-render-bufferrange-discard: crash
-spec/ext_transform_feedback/query-primitives_generated-bufferbase: crash
-spec/ext_transform_feedback/query-primitives_generated-bufferbase-discard: 
crash
-spec/ext_transform_feedback/query-primitives_generated-bufferoffset: crash
-spec/ext_transform_feedback/query-primitives_generated-bufferoffset-discard: 
crash
-spec/ext_transform_feedback/query-primitives_generated-bufferrange: crash
-spec/ext_transform_feedback/query-primitives_generated-bufferrange-discard: 
crash
-spec/ext_transform_feedback/query-primitives_written-bufferbase: crash
-spec/ext_transform_feedback/query-primitives_written-bufferbase-discard: crash
-spec/ext_transform_feedback/query-primitives_written-bufferoffset: crash
-spec/ext_transform_feedback/query-primitives_written-bufferoffset-discard: 
crash
-spec/ext_transform_feedback/query-primitives_written-bufferrange: crash
-spec/ext_transform_feedback/query-primitives_written-bufferrange-discard: crash
-spec/ext_transform_feedback/separate-attribs: crash
-spec/ext_transform_feedback/structs array-struct run: crash
-spec/ext_transform_feedback/structs array-struct run interface: crash
-spec/ext_transform_feedback/structs array-struct run-no-fs: crash
-spec/ext_transform_feedback/structs array-struct run-no-fs interface: crash
-spec/ext_transform_feedback/structs array-struct-array-elem run: crash
-spec/ext_transform_feedback/structs array-struct-array-elem run interface: 
crash
-spec/ext_transform_feedback/structs array-struct-array-elem run-no-fs: crash
-spec/ext_transform_feedback/structs array-struct-array-elem run-no-fs 
interface: crash
-spec/ext_transform_feedback/structs array-struct-array-struct run: crash
-spec/ext_transform_feedback/structs array-struct-array-struct run interface: 
crash
-spec/ext_transform_feedback/structs array-struct-array-struct run-no-fs: crash
-spec/ext_transform_feedback/structs array-struct-array-struct run-no-fs 
interface: crash
-spec/ext_transform_feedback/structs array-struct-whole-array run: crash
-spec/ext_transform_feedback/structs array-struct-whole-array run interface: 
crash
-spec/ext_transform_feedback/structs array-struct-whole-array run-no-fs: crash
-spec/ext_transform_feedback/structs array-struct-whole-array run-no-fs 
interface: crash
-spec/ext_transform_feedback/structs basic-struct run: crash
-spec/ext_transform_feedback/structs basic-struct run interface: crash
-spec/ext_transform_feedback/structs basic-struct run-no-fs: crash
-spec/ext_transform_feedback/structs basic-struct run-no-fs interface: crash
-spec/ext_transform_feedback/structs struct-array-elem run: crash
-spec/ext_transform_feedback/structs struct-array-elem run interface: crash
-spec/ext_transform_feedback/structs struct-array-elem run-no-fs: crash
-spec/ext_transform_feedback/structs struct-array-elem run-no-fs interface: 
crash
-spec/ext_transform_feedback/structs struct-struct run: crash
-spec/ext_transform_feedback/structs struct-struct run interface: crash
-spec/ext_transform_feedback/structs struct-struct run-no-fs: crash
-spec/ext_transform_feedback/structs struct-struct run-no-fs interface: crash
-spec/ext_transform_feedback/structs struct-whole-array run: crash
-spec/ext_transform_feedback/structs struct-whole-array run interface: crash
-spec/ext_transform_feedback/structs struct-whole-array run-no-fs: crash
-spec/ext_transform_feedback/structs struct-whole-array run-no-fs interface: 
crash
-spec/ext_transform_feedback/structs_gles3 basic-struct run: crash
-spec/ext_transform_feedback/structs_gles3 basic-struct run-no-fs: crash
-spec/ext_transform_feedback/tessellation line_loop flat_first: crash
-spec/ext_transform_feedback/tessellation line_loop flat_last: crash
-spec/ext_transform_feedback/tessellation line_loop monochrome: crash
-spec/ext_transform_feedback/tessellation line_loop smooth: crash
-spec/ext_transform_feedback/tessellation line_strip flat_first: crash
-spec/ext_transform_feedback/tessellation line_strip flat_last: crash
-spec/ext_transform_feedback/tessellation line_strip monochrome: crash
-spec/ext_transform_feedback/tessellation line_strip smooth: crash
-spec/ext_transform_feedback/tessellation lines flat_first: crash
-spec/ext_transform_feedback/tessellation lines flat_last: crash
-spec/ext_transform_feedback/tessellation lines monochrome: crash
-spec/ext_transform_feedback/tessellation lines smooth: crash
-spec/ext_transform_feedback/tessellation points flat_first: crash
-spec/ext_transform_feedback/tessellation points flat_last: crash
-spec/ext_transform_feedback/tessellation points monochrome: crash
-spec/ext_transform_feedback/tessellation points smooth: crash
-spec/ext_transform_feedback/tessellation polygon flat_first: crash
-spec/ext_transform_feedback/tessellation polygon flat_last: crash
-spec/ext_transform_feedback/tessellation polygon monochrome: crash
-spec/ext_transform_feedback/tessellation polygon smooth: crash
-spec/ext_transform_feedback/tessellation polygon wireframe: crash
-spec/ext_transform_feedback/tessellation quad_strip flat_first: crash
-spec/ext_transform_feedback/tessellation quad_strip flat_last: crash
-spec/ext_transform_feedback/tessellation quad_strip monochrome: crash
-spec/ext_transform_feedback/tessellation quad_strip smooth: crash
-spec/ext_transform_feedback/tessellation quad_strip wireframe: crash
-spec/ext_transform_feedback/tessellation quads flat_first: crash
-spec/ext_transform_feedback/tessellation quads flat_last: crash
-spec/ext_transform_feedback/tessellation quads monochrome: crash
-spec/ext_transform_feedback/tessellation quads smooth: crash
-spec/ext_transform_feedback/tessellation quads wireframe: crash
-spec/ext_transform_feedback/tessellation triangle_fan flat_first: crash
-spec/ext_transform_feedback/tessellation triangle_fan flat_last: crash
-spec/ext_transform_feedback/tessellation triangle_fan monochrome: crash
-spec/ext_transform_feedback/tessellation triangle_fan smooth: crash
-spec/ext_transform_feedback/tessellation triangle_fan wireframe: crash
-spec/ext_transform_feedback/tessellation triangle_strip flat_first: crash
-spec/ext_transform_feedback/tessellation triangle_strip flat_last: crash
-spec/ext_transform_feedback/tessellation triangle_strip monochrome: crash
-spec/ext_transform_feedback/tessellation triangle_strip smooth: crash
-spec/ext_transform_feedback/tessellation triangle_strip wireframe: crash
-spec/ext_transform_feedback/tessellation triangles flat_first: crash
-spec/ext_transform_feedback/tessellation triangles flat_last: crash
-spec/ext_transform_feedback/tessellation triangles monochrome: crash
-spec/ext_transform_feedback/tessellation triangles smooth: crash
-spec/ext_transform_feedback/tessellation triangles wireframe: crash
 spec/ext_window_rectangles/dlist/call: skip
 spec/ext_window_rectangles/dlist/compile and execute: skip
 spec/ext_window_rectangles/errors: skip
 spec/ext_window_rectangles/errors_gles3: skip
 spec/ext_window_rectangles/render: skip
 spec/ext_window_rectangles/render_gles3: skip
-spec/glsl-1.30/execution/isinf-and-isnan vs_xfb: crash
 spec/glsl-1.30/execution/tex-miplevel-selection textureoffset 2darrayshadow: 
skip
-spec/glsl-1.40/execution/tf-no-position: crash
 spec/glsl-1.50/built-in constants compatibility: skip
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_loop ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_loop other: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip other: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip_adjacency 
ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_line_strip_adjacency 
other: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines other: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines_adjacency ffs: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines_adjacency 
other: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_points ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_points other: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangle_fan ffs: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangle_fan other: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangle_strip ffs: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangle_strip 
other: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart 
gl_triangle_strip_adjacency ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart 
gl_triangle_strip_adjacency other: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles other: 
crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles_adjacency 
ffs: crash
-spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles_adjacency 
other: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_line_loop: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_line_strip: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_line_strip_adjacency: 
crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_lines: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_lines_adjacency: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_points: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_triangle_fan: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_triangle_strip: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_triangle_strip_adjacency: 
crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_triangles: crash
-spec/glsl-1.50/execution/geometry/primitive-types gl_triangles_adjacency: crash
-spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip ffs: crash
-spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip other: crash
-spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip_adjacency ffs: crash
-spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip_adjacency other: crash
+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
+spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines other: fail
+spec/glsl-1.50/execution/geometry/primitive-id-restart gl_lines_adjacency ffs: 
fail
+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
+spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles other: fail
+spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles_adjacency 
ffs: fail
+spec/glsl-1.50/execution/geometry/primitive-id-restart gl_triangles_adjacency 
other: fail
+spec/glsl-1.50/execution/geometry/primitive-types gl_triangle_fan: fail
+spec/glsl-1.50/execution/geometry/primitive-types gl_triangle_strip: fail
+spec/glsl-1.50/execution/geometry/primitive-types gl_triangle_strip_adjacency: 
fail
+spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip ffs: fail
+spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip other: fail
+spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip_adjacency ffs: fail
+spec/glsl-1.50/execution/geometry/tri-strip-ordering-with-prim-restart 
gl_triangle_strip_adjacency other: fail
 spec/glsl-1.50/execution/texturesize/tes-texturesize-isampler1d: skip
 spec/glsl-1.50/execution/texturesize/tes-texturesize-isampler1darray: skip
 spec/glsl-1.50/execution/texturesize/tes-texturesize-isampler2d: skip
@@ -3218,9 +3015,6 @@ 
spec/glsl-1.50/execution/texturesize/tes-texturesize-usampler3d: skip
 spec/glsl-1.50/execution/texturesize/tes-texturesize-usamplerbuffer: skip
 spec/glsl-1.50/execution/texturesize/tes-texturesize-usamplercube: skip
 spec/glsl-1.50/gs-max-output: crash
-spec/glsl-1.50/transform-feedback-builtins: crash
-spec/glsl-1.50/transform-feedback-type-and-size: crash
-spec/glsl-1.50/transform-feedback-vertex-id: crash
 spec/glsl-3.30/built-in constants: skip
 spec/glsl-es-3.10/built-in constants: skip
 spec/intel_blackhole_render/intel_blackhole-blit: skip
@@ -3387,10 +3181,10 @@ wgl/wgl-sanity: skip
 summary:
        name:  results
        ----  --------
-       pass:    18186
-       fail:     1173
-      crash:      330
-       skip:     1855
+       pass:    18464
+       fail:     1213
+      crash:       19
+       skip:     1921
     timeout:        0
        warn:        4
  incomplete:        0
@@ -3399,4 +3193,4 @@ summary:
     changes:        0
       fixes:        0
 regressions:        0
-      total:    21572
+      total:    21644
diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c 
b/src/gallium/frontends/lavapipe/lvp_execute.c
index 404f8b7903c..07508659ca9 100644
--- a/src/gallium/frontends/lavapipe/lvp_execute.c
+++ b/src/gallium/frontends/lavapipe/lvp_execute.c
@@ -2492,6 +2492,9 @@ static void handle_begin_transform_feedback(struct 
lvp_cmd_buffer_entry *cmd,
    memset(offsets, 0, sizeof(uint32_t)*4);
 
    for (unsigned i = 0; i < btf->counter_buffer_count; i++) {
+      if (!btf->counter_buffers[i])
+         continue;
+
       pipe_buffer_read(state->pctx,
                        btf->counter_buffers[i]->bo,
                        btf->counter_buffer_offsets[i],
@@ -2509,6 +2512,9 @@ static void handle_end_transform_feedback(struct 
lvp_cmd_buffer_entry *cmd,
 
    if (etf->counter_buffer_count) {
       for (unsigned i = 0; i < etf->counter_buffer_count; i++) {
+         if (!etf->counter_buffers[i])
+            continue;
+
          uint32_t offset;
          offset = 
state->pctx->stream_output_target_offset(state->so_targets[i]);
 

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

Reply via email to