radv: Add non-uniform indexing lowering.
This patch does it as late as possible so the potential extra basic blocks don't inhibit other optimizations. Big thanks to Jason for writing the lowering pass. Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
@@ -817,13 +817,13 @@ void radv_GetPhysicalDeviceFeatures2(
|
||||
features->shaderInputAttachmentArrayDynamicIndexing = true;
|
||||
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
|
||||
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
|
||||
features->shaderUniformBufferArrayNonUniformIndexing = false;
|
||||
features->shaderSampledImageArrayNonUniformIndexing = false;
|
||||
features->shaderStorageBufferArrayNonUniformIndexing = false;
|
||||
features->shaderStorageImageArrayNonUniformIndexing = false;
|
||||
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
|
||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
|
||||
features->shaderUniformBufferArrayNonUniformIndexing = true;
|
||||
features->shaderSampledImageArrayNonUniformIndexing = true;
|
||||
features->shaderStorageBufferArrayNonUniformIndexing = true;
|
||||
features->shaderStorageImageArrayNonUniformIndexing = true;
|
||||
features->shaderInputAttachmentArrayNonUniformIndexing = true;
|
||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
|
||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
|
||||
features->descriptorBindingUniformBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingSampledImageUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageImageUpdateAfterBind = true;
|
||||
|
||||
@@ -2178,6 +2178,11 @@ void radv_create_shaders(struct radv_pipeline *pipeline,
|
||||
for (int i = 0; i < MESA_SHADER_STAGES; ++i) {
|
||||
if (nir[i]) {
|
||||
NIR_PASS_V(nir[i], nir_lower_bool_to_int32);
|
||||
NIR_PASS_V(nir[i], nir_lower_non_uniform_access,
|
||||
nir_lower_non_uniform_ubo_access |
|
||||
nir_lower_non_uniform_ssbo_access |
|
||||
nir_lower_non_uniform_texture_access |
|
||||
nir_lower_non_uniform_image_access);
|
||||
}
|
||||
|
||||
if (radv_can_dump_shader(device, modules[i], false))
|
||||
|
||||
Reference in New Issue
Block a user