Looks good, Reviewed-by: Eduardo Lima Mitev <el...@igalia.com>
thanks! On 12/23/2016 01:14 AM, Jason Ekstrand wrote: > In this case we were dying when we tried to do SHL addr sampler imm(8) > because that puts an immediate in src0 of a two source instruction. This > fixes 2704 of the new separate sampler Vulkan CTS tests on Sky Lake. > > Cc: "13.0" <mesa-sta...@lists.freedesktop.org> > --- > src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 8 ++++++-- > src/mesa/drivers/dri/i965/brw_vec4_generator.cpp | 8 ++++++-- > 2 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > index aed3c72..0710be9 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp > @@ -916,8 +916,12 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg > dst, struct brw_reg src > if (brw_regs_equal(&surface_reg, &sampler_reg)) { > brw_MUL(p, addr, sampler_reg, brw_imm_uw(0x101)); > } else { > - brw_SHL(p, addr, sampler_reg, brw_imm_ud(8)); > - brw_OR(p, addr, addr, surface_reg); > + if (sampler_reg.file == BRW_IMMEDIATE_VALUE) { > + brw_OR(p, addr, surface_reg, brw_imm_ud(sampler_reg.ud << 8)); > + } else { > + brw_SHL(p, addr, sampler_reg, brw_imm_ud(8)); > + brw_OR(p, addr, addr, surface_reg); > + } > } > if (base_binding_table_index) > brw_ADD(p, addr, addr, brw_imm_ud(base_binding_table_index)); > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp > index ef7ce78..4967663 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp > @@ -298,8 +298,12 @@ generate_tex(struct brw_codegen *p, > if (brw_regs_equal(&surface_reg, &sampler_reg)) { > brw_MUL(p, addr, sampler_reg, brw_imm_uw(0x101)); > } else { > - brw_SHL(p, addr, sampler_reg, brw_imm_ud(8)); > - brw_OR(p, addr, addr, surface_reg); > + if (sampler_reg.file == BRW_IMMEDIATE_VALUE) { > + brw_OR(p, addr, surface_reg, brw_imm_ud(sampler_reg.ud << 8)); > + } else { > + brw_SHL(p, addr, sampler_reg, brw_imm_ud(8)); > + brw_OR(p, addr, addr, surface_reg); > + } > } > if (base_binding_table_index) > brw_ADD(p, addr, addr, brw_imm_ud(base_binding_table_index)); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev