OSDN Git Service

Fix Context::colorWriteActive to consider all rendertargets
authorChris Forbes <chrisforbes@google.com>
Thu, 28 Feb 2019 17:03:38 +0000 (09:03 -0800)
committerChris Forbes <chrisforbes@google.com>
Thu, 28 Feb 2019 18:12:39 +0000 (18:12 +0000)
Even in the GLES backend, we support RENDERTARGETS=8. This check only
ever considered the first 4.

Bug: b/126719156
Change-Id: I0084aa005f342f06373c53c007bee33268466b92
Reviewed-on: https://swiftshader-review.googlesource.com/c/25808
Tested-by: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>

src/Device/Context.cpp
src/Device/Context.hpp
src/Renderer/Context.cpp
src/Renderer/Context.hpp

index d4ed3dc..afa3931 100644 (file)
@@ -730,9 +730,17 @@ namespace sw
                }
        }
 
-       int Context::colorWriteActive()
+       bool Context::colorWriteActive()
        {
-               return colorWriteActive(0) | colorWriteActive(1) | colorWriteActive(2) | colorWriteActive(3);
+               for (int i = 0; i < RENDERTARGETS; i++)
+               {
+                       if (colorWriteActive(i))
+                       {
+                               return true;
+                       }
+               }
+
+               return false;
        }
 
        int Context::colorWriteActive(int index)
index 50cff6b..99aedba 100644 (file)
@@ -189,7 +189,7 @@ namespace sw
                float slopeDepthBias;
 
                VkFormat renderTargetInternalFormat(int index);
-               int colorWriteActive();
+               bool colorWriteActive();
                int colorWriteActive(int index);
                bool colorUsed();
 
index 25c5775..ab54d0b 100644 (file)
@@ -1468,9 +1468,17 @@ namespace sw
                }
        }
 
-       int Context::colorWriteActive()
+       bool Context::colorWriteActive()
        {
-               return colorWriteActive(0) | colorWriteActive(1) | colorWriteActive(2) | colorWriteActive(3);
+               for (int i = 0; i < RENDERTARGETS; i++)
+               {
+                       if (colorWriteActive(i))
+                       {
+                               return true;
+                       }
+               }
+
+               return false;
        }
 
        int Context::colorWriteActive(int index)
index 8b5a8eb..9aec6ea 100644 (file)
@@ -442,7 +442,7 @@ namespace sw
                Sampler sampler[TOTAL_IMAGE_UNITS];
 
                Format renderTargetInternalFormat(int index);
-               int colorWriteActive();
+               bool colorWriteActive();
                int colorWriteActive(int index);
                bool colorUsed();