mirror of
https://github.com/love2d/love.git
synced 2026-08-16 16:20:42 +02:00
Prevent sRGB and non-sRGB Canvas formats from being used together in multi-canvas rendering (MRTs), due to driver bugs.
This commit is contained in:
@@ -433,8 +433,16 @@ void Canvas::startGrab(const std::vector<Canvas *> &canvases)
|
||||
if (canvases[i]->getWidth() != width || canvases[i]->getHeight() != height)
|
||||
throw love::Exception("All canvases must have the same dimensions.");
|
||||
|
||||
if (canvases[i]->getTextureFormat() != format && !multiformatsupported)
|
||||
throw love::Exception("This system doesn't support multi-canvas rendering with different canvas formats.");
|
||||
Format otherformat = canvases[i]->getTextureFormat();
|
||||
|
||||
if (otherformat != format)
|
||||
{
|
||||
if (!multiformatsupported)
|
||||
throw love::Exception("This system doesn't support multi-canvas rendering with different canvas formats.");
|
||||
else if (otherformat == FORMAT_SRGB || format == FORMAT_SRGB)
|
||||
// Driver bugs related to enabling GL_FRAMEBUFFER_SRGB...
|
||||
throw love::Exception("sRGB and non-sRGB canvas formats cannot be mixed when using multi-canvas rendering.");
|
||||
}
|
||||
|
||||
if (canvases[i]->getMSAA() != 0)
|
||||
throw love::Exception("Multi-canvas rendering is not supported with MSAA.");
|
||||
|
||||
Reference in New Issue
Block a user