mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 16:30:10 +01:00
r300: disable PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF
We can't do uniform buffer objects and from the hardware perspective constants (uniforms) and immediates are treated in the same way. They are uploaded together and fit together into the (rather low) total constant limit. Therefore, there is actually no advantage in converting immediates to uniforms, and a whole lot of disadvantages (less possible optimizations and no inlining). Fixes the dEQP regressions from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16770 The tests failed because when there is an indirect array access the compiler inserts a big if ladder and converting the temp to a uniform means more instructions because the ifs cant be lowered at least partially to selects. It is particularly visible, because the code NIR currently emits for the indirect access doesn't really fit the hardware, see: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6366 No change in my shader-db, so this concerns the tests only. Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17576>
This commit is contained in:
parent
3f19a60869
commit
ae003ef78c
2 changed files with 3 additions and 5 deletions
|
|
@ -45,11 +45,6 @@ dEQP-GLES2.functional.shaders.discard.dynamic_loop_always,Fail
|
|||
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_dynamic_write_dynamic_loop_read_fragment,Fail
|
||||
|
||||
# Too many instructions due to https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16770
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_fragment,Fail
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_const_write_dynamic_read_fragment,Fail
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_const_write_dynamic_read_fragment,Fail
|
||||
|
||||
dEQP-GLES2.functional.shaders.random.texture.fragment.141,Fail
|
||||
|
||||
dEQP-GLES2.functional.shaders.return.return_in_dynamic_loop_dynamic_fragment,Fail
|
||||
|
|
|
|||
|
|
@ -220,6 +220,9 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_MAX_VARYINGS:
|
||||
return 10;
|
||||
|
||||
case PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_VENDOR_ID:
|
||||
return 0x1002;
|
||||
case PIPE_CAP_DEVICE_ID:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue