Reviewed-by: Chris Forbes <chr...@ijw.co.nz>
On Wed, Jun 11, 2014 at 6:51 AM, Ian Romanick <i...@freedesktop.org> wrote: > On 06/09/2014 09:43 AM, Neil Roberts wrote: >> When a multisampled texture is used for sampling the fast clear color value >> needs to be programmed into the surface state. This was being left as all >> zeroes so if the surface was cleared to a value other than black then it >> wouldn't work properly. This doesn't matter for single-sample textures >> because >> in that case the MCS buffer is resolved before it is used as a texture >> source. >> >> https://bugs.freedesktop.org/show_bug.cgi?id=79729 > > This sounds believable. We should get a R-b from one of the guys more > familiar with the backend, but, FWIW, > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > Cc: "10.1 10.2" <mesa-sta...@lists.freedesktop.org> > > I expect this bug is reproducible on both 10.1.x and 10.2... > >> --- >> src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 4 +++- >> src/mesa/drivers/dri/i965/gen8_surface_state.c | 4 +++- >> 2 files changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c >> b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c >> index b31f491..12cdc2b 100644 >> --- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c >> +++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c >> @@ -337,6 +337,8 @@ gen7_update_texture_surface(struct gl_context *ctx, >> /* mip count */ >> (intelObj->_MaxLevel - tObj->BaseLevel)); >> >> + surf[7] = mt->fast_clear_color_value; >> + >> if (brw->is_haswell) { >> /* Handling GL_ALPHA as a surface format override breaks 1.30+ style >> * texturing functions that return a float, as our code generation >> always >> @@ -351,7 +353,7 @@ gen7_update_texture_surface(struct gl_context *ctx, >> >> const bool need_scs_green_to_blue = for_gather && tex_format == >> BRW_SURFACEFORMAT_R32G32_FLOAT_LD; >> >> - surf[7] = >> + surf[7] |= >> SET_FIELD(brw_swizzle_to_scs(GET_SWZ(swizzle, 0), >> need_scs_green_to_blue), GEN7_SURFACE_SCS_R) | >> SET_FIELD(brw_swizzle_to_scs(GET_SWZ(swizzle, 1), >> need_scs_green_to_blue), GEN7_SURFACE_SCS_G) | >> SET_FIELD(brw_swizzle_to_scs(GET_SWZ(swizzle, 2), >> need_scs_green_to_blue), GEN7_SURFACE_SCS_B) | >> diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c >> b/src/mesa/drivers/dri/i965/gen8_surface_state.c >> index 406f68e..80ac4f3 100644 >> --- a/src/mesa/drivers/dri/i965/gen8_surface_state.c >> +++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c >> @@ -207,9 +207,11 @@ gen8_update_texture_surface(struct gl_context *ctx, >> (firstImage->_BaseFormat == GL_DEPTH_COMPONENT || >> firstImage->_BaseFormat == GL_DEPTH_STENCIL); >> >> + surf[7] = mt->fast_clear_color_value; >> + >> const int swizzle = >> unlikely(alpha_depth) ? SWIZZLE_XYZW : brw_get_texture_swizzle(ctx, >> tObj); >> - surf[7] = >> + surf[7] |= >> SET_FIELD(brw_swizzle_to_scs(GET_SWZ(swizzle, 0), false), >> GEN7_SURFACE_SCS_R) | >> SET_FIELD(brw_swizzle_to_scs(GET_SWZ(swizzle, 1), false), >> GEN7_SURFACE_SCS_G) | >> SET_FIELD(brw_swizzle_to_scs(GET_SWZ(swizzle, 2), false), >> GEN7_SURFACE_SCS_B) | >> > > _______________________________________________ > 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