Will land this + the sampler key width change since they fix real bugs, and then follow up with a new series to improve performance.
On Sun, Feb 23, 2014 at 9:25 AM, Kenneth Graunke <kenn...@whitecape.org> wrote: > On 02/21/2014 09:09 PM, Chris Forbes wrote: >> BRW_MAX_TEX_UNIT is the static limit on the number of textures we >> support per-stage, not in total. >> >> Core's `Unit` array is sized by MAX_COMBINED_TEXTURE_IMAGE_UNITS, which >> is significantly larger, and across the various shader stages, up to >> ctx->Const.MaxCombinedTextureImageUnits elements of it may be actually >> used. >> >> Fixes invisible bad behavior in piglit's max-samplers test (although >> this escalated to an assertion failure on HSW with texture_view, since >> non-immutable textures only have _Format set by validation.) >> >> Signed-off-by: Chris Forbes <chr...@ijw.co.nz> >> Cc: "9.2 10.0 10.1" <mesa-sta...@lists.freedesktop.org> >> Cc: Kenneth Graunke <kenn...@whitecape.org> >> --- >> src/mesa/drivers/dri/i965/brw_draw.c | 2 +- >> src/mesa/drivers/dri/i965/brw_tex.c | 2 +- >> 2 files changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/src/mesa/drivers/dri/i965/brw_draw.c >> b/src/mesa/drivers/dri/i965/brw_draw.c >> index 540834c..bc887fe 100644 >> --- a/src/mesa/drivers/dri/i965/brw_draw.c >> +++ b/src/mesa/drivers/dri/i965/brw_draw.c >> @@ -317,7 +317,7 @@ brw_predraw_resolve_buffers(struct brw_context *brw) >> /* Resolve depth buffer of each enabled depth texture, and color buffer >> of >> * each fast-clear-enabled color texture. >> */ >> - for (int i = 0; i < BRW_MAX_TEX_UNIT; i++) { >> + for (int i = 0; i < ctx->Const.MaxCombinedTextureImageUnits; i++) { >> if (!ctx->Texture.Unit[i]._ReallyEnabled) >> continue; >> tex_obj = intel_texture_object(ctx->Texture.Unit[i]._Current); >> diff --git a/src/mesa/drivers/dri/i965/brw_tex.c >> b/src/mesa/drivers/dri/i965/brw_tex.c >> index 9234e3a..b1f4de0 100644 >> --- a/src/mesa/drivers/dri/i965/brw_tex.c >> +++ b/src/mesa/drivers/dri/i965/brw_tex.c >> @@ -47,7 +47,7 @@ void brw_validate_textures( struct brw_context *brw ) >> struct gl_context *ctx = &brw->ctx; >> int i; >> >> - for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { >> + for (i = 0; i < ctx->Const.MaxCombinedTextureImageUnits; i++) { >> struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i]; >> >> if (texUnit->_ReallyEnabled) { >> > > Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> > > I am concerned, though, that looping through all 96 texture units on > every draw call may be bad for performance on CPU-bound workloads. > > I wonder if we couldn't use an approach similar to > update_stage_texture_surfaces, i.e.: > > struct gl_program *progs = { > &brw->vertex_program, &brw->geometry_program, &brw->fragment_program > }; > > for (int p = 0; p < 3; p++) { > const gl_program *prog = progs[p]; > unsigned num_samplers = _mesa_fls(prog->SamplersUsed); > for (int i = 0; i < num_samplers; i++) { > if (prog->SamplersUsed & (1 << i)) { > if (prog->SamplerUnits[i]) > intel_finalize_mipmap_tree(brw, i); > } > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev