mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
i965: Bail on the BLT path if BlitFramebuffer requires sRGB conversion.
Modern OpenGL BlitFramebuffer require sRGB encode/decode when GL_FRAMEBUFFER_SRGB is enabled. The blitter can't handle this, so we need to bail. On Gen4-5, this means falling back to Meta, which should handle it. We allow sRGB <-> sRGB blits, as decode then encode ought to be a noop (other than potential precision loss, which nobody wants anyway). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
7dfb1a4074
commit
b1586526e8
2 changed files with 10 additions and 2 deletions
|
|
@ -211,8 +211,8 @@ intel_miptree_blit(struct brw_context *brw,
|
|||
return false;
|
||||
|
||||
/* No sRGB decode or encode is done by the hardware blitter, which is
|
||||
* consistent with what we want in the callers (glCopyTexSubImage(),
|
||||
* glBlitFramebuffer(), texture validation, etc.).
|
||||
* consistent with what we want in many callers (glCopyTexSubImage(),
|
||||
* texture validation, etc.).
|
||||
*/
|
||||
mesa_format src_format = _mesa_get_srgb_format_linear(src_mt->format);
|
||||
mesa_format dst_format = _mesa_get_srgb_format_linear(dst_mt->format);
|
||||
|
|
|
|||
|
|
@ -828,6 +828,14 @@ intel_blit_framebuffer_with_blitter(struct gl_context *ctx,
|
|||
return mask;
|
||||
}
|
||||
|
||||
if (ctx->Color.sRGBEnabled &&
|
||||
_mesa_get_format_color_encoding(src_irb->mt->format) !=
|
||||
_mesa_get_format_color_encoding(dst_irb->mt->format)) {
|
||||
perf_debug("glBlitFramebuffer() with sRGB conversion cannot be "
|
||||
"handled by BLT path.\n");
|
||||
return mask;
|
||||
}
|
||||
|
||||
if (!intel_miptree_blit(brw,
|
||||
src_irb->mt,
|
||||
src_irb->mt_level, src_irb->mt_layer,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue