Multiple draw buffers implementation
Implemented the missing pieces for multiple draw buffers support:
- Fixed Context::getScissoredImage() to use the drawbuffer
parameter properly
- Enabled setting multiple render targets
- Added dynamic indexing of gl_FragData using a new dynOut flag
to figure out which channels are being written to.
Change-Id: Id3d95c46a980a698f71e99f7781cc6287e880e9d
Reviewed-on: https://swiftshader-review.googlesource.com/4220
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/QuadRasterizer.cpp b/src/Renderer/QuadRasterizer.cpp
index a9298d4..40c84e9 100644
--- a/src/Renderer/QuadRasterizer.cpp
+++ b/src/Renderer/QuadRasterizer.cpp
@@ -111,11 +111,11 @@
void QuadRasterizer::rasterize(Registers &r, Int &yMin, Int &yMax)
{
- Pointer<Byte> cBuffer[4];
+ Pointer<Byte> cBuffer[RENDERTARGETS];
Pointer<Byte> zBuffer;
Pointer<Byte> sBuffer;
- for(int index = 0; index < 4; index++)
+ for(int index = 0; index < RENDERTARGETS; index++)
{
if(state.colorWriteActive(index))
{
@@ -310,7 +310,7 @@
}
}
- for(int index = 0; index < 4; index++)
+ for(int index = 0; index < RENDERTARGETS; index++)
{
if(state.colorWriteActive(index))
{