panfrost: Prepare some code for MRT
[mesa.git] / src / mesa / main / clear.c
index ea75a95184ecb09d36621e34c615d6b7a596a48c..6beff9ed842bc7e38a8cd93429c92298b8184c1f 100644 (file)
@@ -118,7 +118,7 @@ color_buffer_writes_enabled(const struct gl_context *ctx, unsigned idx)
 
    if (rb) {
       for (c = 0; c < 4; c++) {
-         if (ctx->Color.ColorMask[idx][c] &&
+         if (GET_COLORMASK_BIT(ctx->Color.ColorMask, idx, c) &&
              _mesa_format_has_color_component(rb->Format, c)) {
             return true;
          }
@@ -194,9 +194,9 @@ clear(struct gl_context *ctx, GLbitfield mask, bool no_error)
       if (mask & GL_COLOR_BUFFER_BIT) {
          GLuint i;
          for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
-            GLint buf = ctx->DrawBuffer->_ColorDrawBufferIndexes[i];
+            gl_buffer_index buf = ctx->DrawBuffer->_ColorDrawBufferIndexes[i];
 
-            if (buf >= 0 && color_buffer_writes_enabled(ctx, i)) {
+            if (buf != BUFFER_NONE && color_buffer_writes_enabled(ctx, i)) {
                bufferMask |= 1 << buf;
             }
          }
@@ -321,9 +321,10 @@ make_color_buffer_mask(struct gl_context *ctx, GLint drawbuffer)
       break;
    default:
       {
-         GLint buf = ctx->DrawBuffer->_ColorDrawBufferIndexes[drawbuffer];
+         gl_buffer_index buf =
+            ctx->DrawBuffer->_ColorDrawBufferIndexes[drawbuffer];
 
-         if (buf >= 0 && att[buf].Renderbuffer) {
+         if (buf != BUFFER_NONE && att[buf].Renderbuffer) {
             mask |= 1 << buf;
          }
       }
@@ -414,6 +415,14 @@ clear_bufferiv(struct gl_context *ctx, GLenum buffer, GLint drawbuffer,
 }
 
 
+void GLAPIENTRY
+_mesa_ClearBufferiv_no_error(GLenum buffer, GLint drawbuffer, const GLint *value)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   clear_bufferiv(ctx, buffer, drawbuffer, value, true);
+}
+
+
 void GLAPIENTRY
 _mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
 {