On 02/03/2014 01:29 AM, Chris Forbes wrote: > Signed-off-by: Chris Forbes <chr...@ijw.co.nz> > --- > src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 30 > ++++++++++++++++++++---- > 1 file changed, 25 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > index dd96c9b..247b663 100644 > --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > @@ -282,15 +282,35 @@ brw_update_texture_surface(struct gl_context *ctx, > surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, > 6 * 4, 32, surf_offset); > > - (void) for_gather; /* no w/a to apply for this gen */ > + uint32_t tex_format = translate_tex_format(brw, mt->format, > + sampler->sRGBDecode); > + > + if (for_gather) {
The cover letter for your patch series has a nice explanation of what's going on. It would be great to capture some of that here. Perhaps by adding something like: /* Sandybridge's gather4 message is broken for integer formats. * To work around this, we pretend the surface is UNORM for * 8 or 16-bit formats, and emit shader instructions to recover * the real INT/UINT value. For 32-bit formats, we pretend * the surface is FLOAT, and simply reinterpret the resulting * bits. */ > + switch (tex_format) { > + case BRW_SURFACEFORMAT_R8_SINT: > + case BRW_SURFACEFORMAT_R8_UINT: > + tex_format = BRW_SURFACEFORMAT_R8_UNORM; > + break; > + > + case BRW_SURFACEFORMAT_R16_SINT: > + case BRW_SURFACEFORMAT_R16_UINT: > + tex_format = BRW_SURFACEFORMAT_R16_UNORM; > + break; > + > + case BRW_SURFACEFORMAT_R32_SINT: > + case BRW_SURFACEFORMAT_R32_UINT: > + tex_format = BRW_SURFACEFORMAT_R32_FLOAT; > + break; > + > + default: > + break; > + } > + } > > surf[0] = (translate_tex_target(tObj->Target) << BRW_SURFACE_TYPE_SHIFT | > BRW_SURFACE_MIPMAPLAYOUT_BELOW << BRW_SURFACE_MIPLAYOUT_SHIFT | > BRW_SURFACE_CUBEFACE_ENABLES | > - (translate_tex_format(brw, > - mt->format, > - sampler->sRGBDecode) << > - BRW_SURFACE_FORMAT_SHIFT)); > + tex_format << BRW_SURFACE_FORMAT_SHIFT); > > surf[1] = intelObj->mt->region->bo->offset64 + intelObj->mt->offset; /* > reloc */ > >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev