How big is the sampler state pointer on Broadwell? My understanding was it would have to be >32bits, and this looks like it will do the wrong thing if the sampler state table is placed across a 4G boundary. Perhaps there is something else that makes this not a factor, though.
On Fri, Jan 24, 2014 at 10:13 AM, Kenneth Graunke <kenn...@whitecape.org> wrote: > I added support for these on Haswell, but forgot to update the Broadwell > code before landing it. Partially fixes Piglit's max-samplers test. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/gen8_fs_generator.cpp | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp > b/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp > index 62b1e02..151ddb8 100644 > --- a/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp > +++ b/src/mesa/drivers/dri/i965/gen8_fs_generator.cpp > @@ -254,6 +254,23 @@ gen8_fs_generator::generate_tex(fs_inst *ir, > brw_imm_ud(ir->texture_offset)); > } > > + if (ir->sampler >= 16) { > + /* The "Sampler Index" field can only store values between 0 and 15. > + * However, we can add an offset to the "Sampler State Pointer" > + * field, effectively selecting a different set of 16 samplers. > + * > + * The "Sampler State Pointer" needs to be aligned to a 32-byte > + * offset, and each sampler state is only 16-bytes, so we can't > + * exclusively use the offset - we have to use both. > + */ > + gen8_instruction *add = > + ADD(retype(brw_vec1_grf(src.nr, 3), BRW_REGISTER_TYPE_UD), > + get_element_ud(brw_vec8_grf(0, 0), 3), > + brw_imm_ud(16 * (ir->sampler / 16) * > + sizeof(gen7_sampler_state))); > + gen8_set_mask_control(add, BRW_MASK_DISABLE); > + } > + > default_state.exec_size = save_exec_size; > } > > @@ -265,7 +282,7 @@ gen8_fs_generator::generate_tex(fs_inst *ir, > gen8_set_src0(brw, inst, src); > gen8_set_sampler_message(brw, inst, > surf_index, > - ir->sampler, > + ir->sampler % 16, > msg_type, > rlen, > ir->mlen, > -- > 1.8.5.2 > > _______________________________________________ > 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