On Thursday, April 30, 2015 12:14:34 AM Topi Pohjolainen wrote: > The value is actually clamped to 0-16 as sample state pointer > can be used to support more than 16 samplers. > > Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > --- > src/mesa/drivers/dri/i965/brw_defines.h | 1 + > src/mesa/drivers/dri/i965/gen7_wm_state.c | 5 +++-- > src/mesa/drivers/dri/i965/gen8_ps_state.c | 5 +++-- > 3 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_defines.h > b/src/mesa/drivers/dri/i965/brw_defines.h > index bd3218a..7d55d85 100644 > --- a/src/mesa/drivers/dri/i965/brw_defines.h > +++ b/src/mesa/drivers/dri/i965/brw_defines.h > @@ -2259,6 +2259,7 @@ enum brw_wm_barycentric_interp_mode { > # define GEN7_PS_SPF_MODE (1 << 31) > # define GEN7_PS_VECTOR_MASK_ENABLE (1 << 30) > # define GEN7_PS_SAMPLER_COUNT_SHIFT 27 > +# define GEN7_PS_SAMPLER_COUNT_MASK INTEL_MASK(29, 27) > # define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 > # define GEN7_PS_FLOATING_POINT_MODE_IEEE_754 (0 << 16) > # define GEN7_PS_FLOATING_POINT_MODE_ALT (1 << 16) > diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c > b/src/mesa/drivers/dri/i965/gen7_wm_state.c > index 923414e..55a1acd 100644 > --- a/src/mesa/drivers/dri/i965/gen7_wm_state.c > +++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c > @@ -135,8 +135,9 @@ upload_ps_state(struct brw_context *brw) > > dw2 = dw4 = dw5 = ksp2 = 0; > > - dw2 |= > - (ALIGN(brw->wm.base.sampler_count, 4) / 4) << > GEN7_PS_SAMPLER_COUNT_SHIFT; > + const unsigned sampler_count = > + DIV_ROUND_UP(CLAMP(brw->wm.base.sampler_count, 0, 16), 4); > + dw2 |= SET_FIELD(sampler_count, GEN7_PS_SAMPLER_COUNT); > > dw2 |= ((prog_data->base.binding_table.size_bytes / 4) << > GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT); > diff --git a/src/mesa/drivers/dri/i965/gen8_ps_state.c > b/src/mesa/drivers/dri/i965/gen8_ps_state.c > index 5f39e12..8481153 100644 > --- a/src/mesa/drivers/dri/i965/gen8_ps_state.c > +++ b/src/mesa/drivers/dri/i965/gen8_ps_state.c > @@ -133,8 +133,9 @@ upload_ps_state(struct brw_context *brw) > */ > dw3 |= GEN7_PS_VECTOR_MASK_ENABLE; > > - dw3 |= > - (ALIGN(brw->wm.base.sampler_count, 4) / 4) << > GEN7_PS_SAMPLER_COUNT_SHIFT; > + const unsigned sampler_count = > + DIV_ROUND_UP(CLAMP(brw->wm.base.sampler_count, 0, 16), 4); > + dw3 |= SET_FIELD(sampler_count, GEN7_PS_SAMPLER_COUNT); > > /* BRW_NEW_FS_PROG_DATA */ > dw3 |= >
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev