mesa: Use ctx->ReadBuffer in glReadBuffer back-to-front tests
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 14 Oct 2019 16:58:57 +0000 (09:58 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 15 Oct 2019 22:44:16 +0000 (15:44 -0700)
We were looking at ctx->DrawBuffer when asking about the read buffer,
which was good enough for CTS purposes, but definitely not right.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/main/buffers.c

index a47438920b48e36721b38ce9737de25f4eebabac..f6a347911c774bc355e64bb2053f614fe558c02d 100644 (file)
@@ -86,7 +86,8 @@ supported_buffer_bitmask(const struct gl_context *ctx,
 }
 
 static GLenum
-back_to_front_if_single_buffered(const struct gl_context *ctx, GLenum buffer)
+back_to_front_if_single_buffered(const struct gl_framebuffer *fb,
+                                 GLenum buffer)
 {
    /* If the front buffer is the only buffer, GL_BACK and all other flags
     * that include BACK select the front buffer for drawing. There are
@@ -110,7 +111,7 @@ back_to_front_if_single_buffered(const struct gl_context *ctx, GLenum buffer)
     *    but they are front buffers from the Mesa point of view,
     *    because they are always single buffered.
     */
-   if (!ctx->DrawBuffer->Visual.doubleBufferMode) {
+   if (!fb->Visual.doubleBufferMode) {
       switch (buffer) {
       case GL_BACK:
          buffer = GL_FRONT;
@@ -135,7 +136,7 @@ back_to_front_if_single_buffered(const struct gl_context *ctx, GLenum buffer)
 static GLbitfield
 draw_buffer_enum_to_bitmask(const struct gl_context *ctx, GLenum buffer)
 {
-   buffer = back_to_front_if_single_buffered(ctx, buffer);
+   buffer = back_to_front_if_single_buffered(ctx->DrawBuffer, buffer);
 
    switch (buffer) {
       case GL_NONE:
@@ -200,7 +201,7 @@ draw_buffer_enum_to_bitmask(const struct gl_context *ctx, GLenum buffer)
 static gl_buffer_index
 read_buffer_enum_to_index(const struct gl_context *ctx, GLenum buffer)
 {
-   buffer = back_to_front_if_single_buffered(ctx, buffer);
+   buffer = back_to_front_if_single_buffered(ctx->ReadBuffer, buffer);
 
    switch (buffer) {
       case GL_FRONT: