[Mesa-dev] [PATCH 1/2] glsl: move max_index calc to assign_attribute_or_color_locations
Timothy Arceri
t_arceri at yahoo.com.au
Tue Jul 28 15:37:42 PDT 2015
On Tue, 2015-07-28 at 13:37 +0300, Tapani Pälli wrote:
> Change function to get all gl_constants for inspection, this is used
> by follow-up patch.
>
> v2: rebase, update function documentation
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
> src/glsl/linker.cpp | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index 8f2c8ee..c8d2e8e 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -2313,12 +2313,10 @@ find_available_slots(unsigned used_mask, unsigned
> needed_count)
> * Assign locations for either VS inputs or FS outputs
> *
> * \param prog Shader program whose variables need locations
> assigned
> + * \param constants Driver specific constant values for the program.
> * \param target_index Selector for the program target to receive location
> * assignmnets. Must be either \c MESA_SHADER_VERTEX
> or
> * \c MESA_SHADER_FRAGMENT.
> - * \param max_index Maximum number of generic locations. This
> corresponds
> - * to either the maximum number of draw buffers or the
> - * maximum number of generic attributes.
> *
> * \return
> * If locations are successfully assigned, true is returned. Otherwise an
> @@ -2326,9 +2324,17 @@ find_available_slots(unsigned used_mask, unsigned
> needed_count)
> */
> bool
> assign_attribute_or_color_locations(gl_shader_program *prog,
> - unsigned target_index,
> - unsigned max_index)
> + struct gl_constants *constants,
> + unsigned target_index)
> {
> + /* Maximum number of generic locations. This corresponds to either the
> + * maximum number of draw buffers or the maximum number of generic
> + * attributes.
> + */
> + unsigned max_index = (target_index == MESA_SHADER_VERTEX) ?
> + constants->Program[target_index].MaxAttribs :
> + MAX2(constants->MaxDrawBuffers, constants->MaxDualSourceDrawBuffers);
> +
> /* Mark invalid locations as being used.
> */
> unsigned used_locations = (max_index >= 32)
> @@ -3648,12 +3654,13 @@ link_shaders(struct gl_context *ctx, struct
> gl_shader_program *prog)
> }
> }
>
> - if (!assign_attribute_or_color_locations(prog, MESA_SHADER_VERTEX,
> - ctx
> ->Const.Program[MESA_SHADER_VERTEX].MaxAttribs)) {
> + if (!assign_attribute_or_color_locations(prog, &ctx->Const,
> + MESA_SHADER_VERTEX)) {
> goto done;
> }
It might be nice to combine the if statements.
if (!assign_attribute_or_color_locations(prog, &ctx->Const,
MESA_SHADER_VERTEX) ||
!assign_attribute_or_color_locations(prog, &ctx->Const,
MESA_SHADER_FRAGMENT)) {
goto done;
}
But not a big deal. Either way both are Reviewed-by: Timothy Arceri
<t_arceri at yahoo.com.au>
>
> - if (!assign_attribute_or_color_locations(prog, MESA_SHADER_FRAGMENT,
> MAX2(ctx->Const.MaxDrawBuffers, ctx->Const.MaxDualSourceDrawBuffers))) {
> + if (!assign_attribute_or_color_locations(prog, &ctx->Const,
> + MESA_SHADER_FRAGMENT)) {
> goto done;
> }
>
More information about the mesa-dev
mailing list