I will change that to TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH etc.
since most other properties, seem to use S instead of P, unless you have any objections. - Bas On Sat, Apr 2, 2016 at 12:37 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Fri, Apr 1, 2016 at 6:32 PM, Bas Nieuwenhuizen > <b...@basnieuwenhuizen.nl> wrote: >> The value 0 for unknown has been chosen to so that >> drivers using tgsi_scan_shader do not need to detect >> missing properties if they zero-initialize the struct. >> >> Signed-off-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> >> --- >> src/gallium/auxiliary/tgsi/tgsi_strings.c | 3 +++ >> src/gallium/docs/source/tgsi.rst | 6 ++++++ >> src/gallium/include/pipe/p_shader_tokens.h | 5 ++++- >> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 18 ++++++++++++++++++ >> 4 files changed, 31 insertions(+), 1 deletion(-) >> >> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c >> b/src/gallium/auxiliary/tgsi/tgsi_strings.c >> index ae779a8..2a9f9c5 100644 >> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c >> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c >> @@ -146,6 +146,9 @@ const char *tgsi_property_names[TGSI_PROPERTY_COUNT] = >> "NUM_CULLDIST_ENABLED", >> "FS_EARLY_DEPTH_STENCIL", >> "NEXT_SHADER", >> + "FIXED_BLOCK_WIDTH", >> + "FIXED_BLOCK_HEIGHT", >> + "FIXED_BLOCK_DEPTH" >> }; >> >> const char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] = >> diff --git a/src/gallium/docs/source/tgsi.rst >> b/src/gallium/docs/source/tgsi.rst >> index 3ac6ba3..b5eac9d 100644 >> --- a/src/gallium/docs/source/tgsi.rst >> +++ b/src/gallium/docs/source/tgsi.rst >> @@ -3220,6 +3220,12 @@ Which shader stage will MOST LIKELY follow after this >> shader when the shader >> is bound. This is only a hint to the driver and doesn't have to be precise. >> Only set for VS and TES. >> >> +TGSI_PROPERTY_FIXED_BLOCK_WIDTH / HEIGHT / DEPTH >> +"""""""""""""""""""""""""""""""""""""""""""""""" >> + >> +Threads per block in each dimension, if known at compile time. If the block >> size >> +is known all three should be at least 1. If it is unknown they should all >> be set >> +to 0 or not set. >> >> Texture Sampling and Texture Formats >> ------------------------------------ >> diff --git a/src/gallium/include/pipe/p_shader_tokens.h >> b/src/gallium/include/pipe/p_shader_tokens.h >> index 5cc18a2..362070c 100644 >> --- a/src/gallium/include/pipe/p_shader_tokens.h >> +++ b/src/gallium/include/pipe/p_shader_tokens.h >> @@ -276,7 +276,10 @@ union tgsi_immediate_data >> #define TGSI_PROPERTY_NUM_CULLDIST_ENABLED 16 >> #define TGSI_PROPERTY_FS_EARLY_DEPTH_STENCIL 17 >> #define TGSI_PROPERTY_NEXT_SHADER 18 >> -#define TGSI_PROPERTY_COUNT 19 >> +#define TGSI_PROPERTY_FIXED_BLOCK_WIDTH 19 >> +#define TGSI_PROPERTY_FIXED_BLOCK_HEIGHT 20 >> +#define TGSI_PROPERTY_FIXED_BLOCK_DEPTH 21 > > These types of single-shader-usefulness properties tend to be prefixed > with the shader type. In this case, CP, i.e. > TGSI_PROPERTY_CP_FIXED_BLOCK_WIDTH, etc. > >> +#define TGSI_PROPERTY_COUNT 22 >> >> struct tgsi_property { >> unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */ >> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> index 23786b8..473e782 100644 >> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> @@ -5935,6 +5935,20 @@ find_array(unsigned attr, struct array_decl *arrays, >> unsigned count, >> return false; >> } >> >> +static void >> +emit_compute_block_size(const struct gl_program *program, >> + struct ureg_program *ureg) { >> + const struct gl_compute_program *cp = >> + (const struct gl_compute_program *)program; >> + >> + ureg_property(ureg, TGSI_PROPERTY_FIXED_BLOCK_WIDTH, >> + cp->LocalSize[0]); >> + ureg_property(ureg, TGSI_PROPERTY_FIXED_BLOCK_HEIGHT, >> + cp->LocalSize[1]); >> + ureg_property(ureg, TGSI_PROPERTY_FIXED_BLOCK_DEPTH, >> + cp->LocalSize[2]); >> +} >> + >> /** >> * Translate intermediate IR (glsl_to_tgsi_instruction) to TGSI format. >> * \param program the program to translate >> @@ -6180,6 +6194,10 @@ st_translate_program( >> } >> } >> >> + if (procType == TGSI_PROCESSOR_COMPUTE) { >> + emit_compute_block_size(proginfo, ureg); >> + } >> + >> /* Declare address register. >> */ >> if (program->num_address_regs > 0) { >> -- >> 2.7.4 >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev