<div dir="ltr">On 14 August 2013 18:55, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Now that we have the number of samplers available, we don't need to<br>
iterate over all 16.  This should be particularly helpful for vertex<br>
shaders.<br>
<br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_fs.cpp | 2 +-<br>
 src/mesa/drivers/dri/i965/brw_vs.c   | 2 +-<br>
 2 files changed, 2 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp<br>
index 69e544a..27263fd 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp<br>
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp<br>
@@ -3143,7 +3143,7 @@ brw_fs_precompile(struct gl_context *ctx, struct gl_shader_program *prog)<br>
<br>
    key.clamp_fragment_color = ctx->API == API_OPENGL_COMPAT;<br>
<br>
-   for (int i = 0; i < MAX_SAMPLERS; i++) {<br>
+   for (unsigned i = 0; i < brw->wm.sampler_count; i++) {<br></blockquote><div><br></div><div>Precompile is called during link, before the program is made current.  So brw->wm is some other program.  I think you need to do this instead: _mesa_fls(fp->Base.SamplersUsed).<br>

</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
       if (fp->Base.ShadowSamplers & (1 << i)) {<br>
          /* Assume DEPTH_TEXTURE_MODE is the default: X, X, X, 1 */<br>
          key.tex.swizzles[i] =<br>
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c<br>
index 5b8173d..7df93c2 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_vs.c<br>
+++ b/src/mesa/drivers/dri/i965/brw_vs.c<br>
@@ -544,7 +544,7 @@ brw_vs_precompile(struct gl_context *ctx, struct gl_shader_program *prog)<br>
    key.base.program_string_id = bvp->id;<br>
    key.base.clamp_vertex_color = ctx->API == API_OPENGL_COMPAT;<br>
<br>
-   for (int i = 0; i < MAX_SAMPLERS; i++) {<br>
+   for (unsigned i = 0; i < brw->vs.sampler_count; i++) {<br></blockquote><div><br></div><div>Similarly, this should be _mesa_fls(vp->Base.SamplersUsed).<br><br></div><div>With those fixes, this patch is:<br><br>

Reviewed-by: Paul Berry <<a href="mailto:stereotype441@gmail.com" target="_blank">stereotype441@gmail.com</a>><br></div></div></div></div>