mirror of
https://github.com/elwrcl/intel-hard-graphics.git
synced 2026-10-31 19:08:03 +03:00
elk: bit-boyutu indirgemesine UBO modunu ekle
nir_lower_mem_access_bit_sizes()'in mod listesinde nir_var_mem_ubo yoktu. Modern brw (brw_nir.c) onu iceriyor; elk'te unutulmus. Sonucu: gen7'de 16-bit UBO erisimleri hic indirgenmiyor ve sessizce yanlis sonuc veriyordu -- get_mem_access_size_align() verx10 < 75 icin her sub-dword erisimi 32-bit dword'e cevirip load'da shift+extract, store'da atomic RMW uretiyor, ama pass UBO yuklerine hic ugramiyordu. storageBuffer16BitAccess acilana kadar ulasilamaz bir yoldu, o yuzden fark edilmemis. VK-GL-CTS, 8086:0166, spirv_assembly 16-bit seti (15368 vaka): 16bit_storage.uniform_16_to_32 / _chainaccess / _to_64 -> 72 Fail duzeltmeden sonra 72'sinin tamami Pass. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
1 file changed
+6
@@ -1441,6 +1441,12 @@ elk_vectorize_lower_mem_access(nir_shader *nir,
|
|||||||
const struct intel_device_info *devinfo = compiler->devinfo;
|
const struct intel_device_info *devinfo = compiler->devinfo;
|
||||||
nir_lower_mem_access_bit_sizes_options mem_access_options = {
|
nir_lower_mem_access_bit_sizes_options mem_access_options = {
|
||||||
.modes = nir_var_mem_ssbo |
|
.modes = nir_var_mem_ssbo |
|
||||||
|
/* brw (gfx9+) UBO'yu da listeye koyuyor; elk'te yoktu, bu
|
||||||
|
* yuzden gen7'de 16-bit UBO erisimleri hic indirgenmiyor ve
|
||||||
|
* CTS'in 16bit_storage.uniform_* vakalari yanlis sonuc
|
||||||
|
* veriyordu. SSBO icin zaten dogru olan dword indirgemesi
|
||||||
|
* UBO icin de gerekli. */
|
||||||
|
nir_var_mem_ubo |
|
||||||
nir_var_mem_constant |
|
nir_var_mem_constant |
|
||||||
nir_var_shader_temp |
|
nir_var_shader_temp |
|
||||||
nir_var_function_temp |
|
nir_var_function_temp |
|
||||||
|
|||||||
Reference in new issue
Block a user