From: Nicolai Hähnle <nicolai.haeh...@amd.com> Most older drivers seem to just ignore the Dimension setting, so virtually no changes should be needed.
Acked-by: Roland Scheidegger <srol...@vmware.com> Tested-by: Dieter Nützel <die...@nuetzel-hh.de> --- src/gallium/auxiliary/nir/tgsi_to_nir.c | 2 +- src/gallium/docs/source/screen.rst | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c b/src/gallium/auxiliary/nir/tgsi_to_nir.c index 733eca0764b..aa715dcae2d 100644 --- a/src/gallium/auxiliary/nir/tgsi_to_nir.c +++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c @@ -617,21 +617,21 @@ ttn_src_for_file_and_index(struct ttn_compile *c, unsigned file, unsigned index, nir_imm_float(&c->build, 1.0), }; return nir_src_for_ssa(nir_vec(&c->build, tgsi_frontface, 4)); } op = nir_intrinsic_load_input; assert(!dim); break; case TGSI_FILE_CONSTANT: - if (dim) { + if (dim && (dim->Index > 0 || dim->Indirect)) { op = nir_intrinsic_load_ubo; } else { op = nir_intrinsic_load_uniform; } break; default: unreachable("No other load files supported"); break; } diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index be14ddd0c0d..93d94a48e6b 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -439,35 +439,30 @@ support different features. * ``PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS``: The maximum number of arithmetic instructions. * ``PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS``: The maximum number of texture instructions. * ``PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS``: The maximum number of texture indirections. * ``PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH``: The maximum nested control flow depth. * ``PIPE_SHADER_CAP_MAX_INPUTS``: The maximum number of input registers. * ``PIPE_SHADER_CAP_MAX_OUTPUTS``: The maximum number of output registers. This is valid for all shaders except the fragment shader. * ``PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE``: The maximum size per constant buffer in bytes. * ``PIPE_SHADER_CAP_MAX_CONST_BUFFERS``: Maximum number of constant buffers that can be bound to any shader stage using ``set_constant_buffer``. If 0 or 1, the pipe will - only permit binding one constant buffer per shader, and the shaders will - not permit two-dimensional access to constants. + only permit binding one constant buffer per shader. If a value greater than 0 is returned, the driver can have multiple -constant buffers bound to shader stages. The CONST register file can -be accessed with two-dimensional indices, like in the example below. +constant buffers bound to shader stages. The CONST register file is +accessed with two-dimensional indices, like in the example below. DCL CONST[0][0..7] # declare first 8 vectors of constbuf 0 DCL CONST[3][0] # declare first vector of constbuf 3 MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0 -For backwards compatibility, one-dimensional access to CONST register -file is still supported. In that case, the constbuf index is assumed -to be 0. - * ``PIPE_SHADER_CAP_MAX_TEMPS``: The maximum number of temporary registers. * ``PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED``: Whether the continue opcode is supported. * ``PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR``: Whether indirect addressing of the input file is supported. * ``PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR``: Whether indirect addressing of the output file is supported. * ``PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR``: Whether indirect addressing of the temporary file is supported. * ``PIPE_SHADER_CAP_INDIRECT_CONST_ADDR``: Whether indirect addressing of the constant file is supported. -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev