Nice! Both are Reviewed-by: Chris Forbes <chr...@ijw.co.nz> On Jan 1, 2015 5:04 PM, "Kenneth Graunke" <kenn...@whitecape.org> wrote:
> Gen7.5+ platforms that support the "Shader Channel Select" feature leave > key->tex.swizzles[i] as SWIZZLE_NOOP except when GL_DEPTH_TEXTURE_MODE > is GL_ALPHA (which is really uncommon). So, the precompile should leave > them as SWIZZLE_NOOP (aka SWIZZLE_XYZW) as well. > > We didn't notice this because prog->ShadowSamplers is not set correctly. > The next patch will fix that problem. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87886 > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_fs.cpp | 3 ++- > src/mesa/drivers/dri/i965/brw_vec4.cpp | 4 +++- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > b/src/mesa/drivers/dri/i965/brw_fs.cpp > index 78c068f..fa1ca8c 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -3912,9 +3912,10 @@ brw_fs_precompile(struct gl_context *ctx, > BRW_FS_VARYING_INPUT_MASK) > 16) > key.input_slots_valid = fp->Base.InputsRead | VARYING_BIT_POS; > > + const bool has_shader_channel_select = brw->is_haswell || brw->gen >= > 8; > unsigned sampler_count = _mesa_fls(fp->Base.SamplersUsed); > for (unsigned i = 0; i < sampler_count; i++) { > - if (fp->Base.ShadowSamplers & (1 << i)) { > + if (!has_shader_channel_select && (fp->Base.ShadowSamplers & (1 << > i))) { > /* Assume DEPTH_TEXTURE_MODE is the default: X, X, X, 1 */ > key.tex.swizzles[i] = > MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_ONE); > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index f389392..b1a2a53 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -1945,11 +1945,13 @@ brw_vue_setup_prog_key_for_precompile(struct > gl_context *ctx, > struct brw_vue_prog_key *key, > GLuint id, struct gl_program *prog) > { > + struct brw_context *brw = brw_context(ctx); > key->program_string_id = id; > > + const bool has_shader_channel_select = brw->is_haswell || brw->gen >= > 8; > unsigned sampler_count = _mesa_fls(prog->SamplersUsed); > for (unsigned i = 0; i < sampler_count; i++) { > - if (prog->ShadowSamplers & (1 << i)) { > + if (!has_shader_channel_select && (prog->ShadowSamplers & (1 << > i))) { > /* Assume DEPTH_TEXTURE_MODE is the default: X, X, X, 1 */ > key->tex.swizzles[i] = > MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_ONE); > -- > 2.2.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev