On Fri, Apr 1, 2016 at 6:50 PM, Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> wrote: > 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.
Indeed they do - no objections from me. > > - 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