mirror of
https://github.com/love2d/love.git
synced 2026-08-17 11:00:31 +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)
|
if (canvases[i]->getWidth() != width || canvases[i]->getHeight() != height)
|
||||||
throw love::Exception("All canvases must have the same dimensions.");
|
throw love::Exception("All canvases must have the same dimensions.");
|
||||||
|
|
||||||
if (canvases[i]->getTextureFormat() != format && !multiformatsupported)
|
Format otherformat = canvases[i]->getTextureFormat();
|
||||||
throw love::Exception("This system doesn't support multi-canvas rendering with different canvas formats.");
|
|
||||||
|
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)
|
if (canvases[i]->getMSAA() != 0)
|
||||||
throw love::Exception("Multi-canvas rendering is not supported with MSAA.");
|
throw love::Exception("Multi-canvas rendering is not supported with MSAA.");
|
||||||
|
|||||||
Reference in New Issue
Block a user