Skip to content

nine: avoid using post-compacted indices with state expecting pre-compacted ones

Amol Surati requested to merge asurati/mesa:mesa.11283.v2 into main

What does this MR do and why?

Certain state, such as the stream_*_mask, and the arrays vtxstride and stream_freq must be maintained and accessed using pre-compacted indices. The arrays themselves are stored into using pre-compacted indices, while it is cleaner to maintain the masks by storing bits for pre-compacted (instead of post-compacted) indices.


Tests:

Tested the farcry and crysis traces uploaded at #11283 (closed). The flickering of the trees is fixed.

mesa test summary
[1/2] Running all tests.
 1/62 mesa:util / drirc xml validation                 OK               0.05s
 2/62 mesa:util / process                              OK               0.02s
 3/62 mesa:util / process_with_overrides               OK               0.01s
 4/62 mesa:util / clear                                OK               0.01s
 5/62 mesa:util / xmlconfig                            OK               0.06s
 6/62 mesa:util / collision                            OK               0.02s
 7/62 mesa:util / delete_and_lookup                    OK               0.02s
 8/62 mesa:util / delete_management                    OK               0.02s
 9/62 mesa:util / destroy_callback                     OK               0.02s
10/62 mesa:util / insert_and_lookup                    OK               0.02s
11/62 mesa:util / insert_many                          OK               0.02s
12/62 mesa:util / null_destroy                         OK               0.02s
13/62 mesa:util / random_entry                         OK               0.02s
14/62 mesa:util / remove_key                           OK               0.02s
15/62 mesa:util / remove_null                          OK               0.02s
16/62 mesa:util / replacement                          OK               0.02s
17/62 mesa:format / srgb                               OK               0.01s
18/62 mesa:util / vma_random                           OK               0.03s
19/62 mesa:format / u_format_compatible_test           OK               0.02s
20/62 mesa:format / u_format_test                      OK               0.04s
21/62 mesa:compiler+spirv / spirv_tests                OK               0.02s
22/62 mesa:intel / genxml sort gen4.xml                OK               0.15s
23/62 mesa:intel / genxml sort gen45.xml               OK               0.12s
24/62 mesa:compiler+nir / nir_algebraic_parser         OK               0.38s
25/62 mesa:intel / genxml sort gen5.xml                OK               0.13s
26/62 mesa:intel / genxml sort gen6.xml                OK               0.20s
27/62 mesa:intel / genxml sort gen7.xml                OK               0.24s
28/62 mesa:intel / genxml sort gen75.xml               OK               0.19s
29/62 mesa:intel / genxml sort gen8.xml                OK               0.19s
30/62 mesa:intel / genxml sort gen9.xml                OK               0.28s
31/62 mesa:intel / genxml sort gen11.xml               OK               0.21s
32/62 mesa:intel / genxml sort gen12.xml               OK               0.16s
33/62 mesa:intel / genxml sort gen125.xml              OK               0.18s
34/62 mesa:compiler+nir / nir_tests                    OK               1.36s
35/62 mesa:intel / genxml sort gen20.xml               OK               0.17s
36/62 mesa:intel / intel_device_info_test              OK               0.01s
37/62 mesa:intel / genxml sort gen125_rt.xml           OK               0.12s
38/62 mesa:intel / isl_surf_get_image_offset           OK               0.02s
39/62 mesa:intel / isl_aux_info                        OK               0.02s
40/62 mesa:intel / isl_tile_std_y                      OK               0.02s
41/62 mesa:intel / isl_tilememcpy                      OK               0.03s
42/62 mesa:intel / genxml sort gen20_rt.xml            OK               0.11s
43/62 mesa:intel / genxml_test                         OK               0.02s
44/62 mesa:gallium / gallium-aux                       OK               0.01s
45/62 mesa:intel / intel_compiler_brw_tests            OK               5.04s
46/62 mesa:llvmpipe / lp_test_format                   OK               5.22s
47/62 mesa:llvmpipe / lp_test_arit                     OK               0.54s
48/62 mesa:intel / intel_compiler_elk_tests            OK               8.05s
49/62 mesa:util / util_tests                           OK               9.69s
50/62 mesa:llvmpipe / lp_test_printf                   OK               0.03s
51/62 mesa:gallium / u_half_test                       OK               0.02s
52/62 mesa / translate_test x86                        OK               0.03s
53/62 mesa / translate_test nosse                      OK               0.01s
54/62 mesa / translate_test sse                        OK               0.02s
55/62 mesa / translate_test sse2                       OK               0.03s
56/62 mesa / translate_test sse3                       OK               0.03s
57/62 mesa / translate_test sse4.1                     OK               0.03s
58/62 mesa:gallium / u_prim_verts_test                 OK               0.01s
59/62 mesa:mesa / main-test                            OK               0.01s
60/62 mesa:gallium / pipe_barrier_test                 OK               0.91s
61/62 mesa:llvmpipe / lp_test_conv                     OK               4.05s
62/62 mesa:llvmpipe / lp_test_blend                    OK              11.27s

Ok:                 62  
Expected Fail:      0   
Fail:               0   
Unexpected Pass:    0   
Skipped:            0   
Timeout:            0   
NineTests before patch
[==========] 110 tests from 1 test suite ran. (21557 ms total)
[  PASSED  ] 104 tests.
[  FAILED  ] 6 tests, listed below:
[  FAILED  ] Xnine.specular_lighting
[  FAILED  ] Xnine.fog
[  FAILED  ] Xnine.blend
[  FAILED  ] Xnine.depth_buffer
[  FAILED  ] Xnine.fp_special
[  FAILED  ] Xnine.table_fog_zw
NineTests after patch
[==========] 110 tests from 1 test suite ran. (18772 ms total)
[  PASSED  ] 104 tests.
[  FAILED  ] 6 tests, listed below:
[  FAILED  ] Xnine.specular_lighting
[  FAILED  ] Xnine.fog
[  FAILED  ] Xnine.blend
[  FAILED  ] Xnine.depth_buffer
[  FAILED  ] Xnine.fp_special
[  FAILED  ] Xnine.table_fog_zw

Prior work: !29651 (closed)

Edited by Amol Surati

Merge request reports