i965: Use blorp_copy for doing r8 stencil updates on HSW
The blorp_copy entrypoint is designed for doing memcpy like operations which is what we need to do here while blorp_blit is for handling format conversion and scaling. Using blorp_copy is much simpler and prevents us from getting formats wrong. While we're here, we get rid of the layers_per_blit thing since stencil always uses interleaved MSAA. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
@@ -2397,25 +2397,14 @@ intel_update_r8stencil(struct brw_context *brw,
|
||||
|
||||
for (int level = src->first_level; level <= src->last_level; level++) {
|
||||
const unsigned depth = src->level[level].depth;
|
||||
const int layers_per_blit =
|
||||
(dst->msaa_layout == INTEL_MSAA_LAYOUT_UMS ||
|
||||
dst->msaa_layout == INTEL_MSAA_LAYOUT_CMS) ?
|
||||
dst->num_samples : 1;
|
||||
|
||||
for (unsigned layer = 0; layer < depth; layer++) {
|
||||
brw_blorp_blit_miptrees(brw,
|
||||
brw_blorp_copy_miptrees(brw,
|
||||
src, level, layer,
|
||||
src->format, SWIZZLE_X,
|
||||
dst, level, layers_per_blit * layer,
|
||||
MESA_FORMAT_R_UNORM8,
|
||||
0, 0,
|
||||
dst, level, layer,
|
||||
0, 0, 0, 0,
|
||||
minify(src->logical_width0, level),
|
||||
minify(src->logical_height0, level),
|
||||
0, 0,
|
||||
minify(dst->logical_width0, level),
|
||||
minify(dst->logical_height0, level),
|
||||
GL_NEAREST, false, false /*mirror x, y*/,
|
||||
false, false /* decode/encode srgb */);
|
||||
minify(src->logical_height0, level));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user