mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-19 20:08:06 +02:00
For cases when less than 4 components are read, the original code would compute an incorrect dmask. eg: with a single component + is_sparse, the dmask was 0x13: - 0x 3 = coming from nir_def_components_read - 0x10 = the sparse bit While it should have at 2 bits set (1 for the color/depth, 1 for tfe). This caused problem when expand_vector() used the dmask to generate the final results, because the value for the sparse component was read from the wrong index. So after the call to emit_mimg() dmask needs to be adjusted because the components will be stored in order, so if mask is 0x11 the tfe value would be stored at invalid index=5 (while it should be at index=1). This fixes KHR-GL46.sparse_texture_clamp_tests.SparseTextureClampLookupResidency_texture_2d_depth_component16 and KHR-GL46.sparse_texture2_tests.SparseTexture2Lookup_texture_2d_depth_component16 with ACO. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35206> |
||
|---|---|---|
| .. | ||
| aco_instruction_selection.h | ||
| aco_isel_cfg.cpp | ||
| aco_isel_helpers.cpp | ||
| aco_isel_setup.cpp | ||
| aco_select_nir.cpp | ||
| aco_select_nir_alu.cpp | ||
| aco_select_nir_intrinsics.cpp | ||
| aco_select_ps_epilog.cpp | ||
| aco_select_ps_prolog.cpp | ||
| aco_select_rt_prolog.cpp | ||
| aco_select_trap_handler.cpp | ||
| aco_select_vs_prolog.cpp | ||