mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 00:00:12 +01:00
i965: Set the fast clear color value for texture surfaces
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 Reviewed-by: Chris Forbes <chrisf@ijw.co.nz> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Cc: "10.1 10.2" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
2c79aa8272
commit
765efeef88
2 changed files with 6 additions and 2 deletions
|
|
@ -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) |
|
||||
|
|
|
|||
|
|
@ -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) |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue