radv: set writes_memory for global memory stores/atomics
[mesa.git] / src / mesa / swrast / s_renderbuffer.c
index d008f5ca51df2efec721d89cd78aed58b1d17bca..6a0376cfef18c03c6c1c8491dbbf36a1e16f3911 100644 (file)
@@ -76,19 +76,18 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
    case GL_RGBA4:
    case GL_RGB5_A1:
    case GL_RGBA8:
-#if 1
    case GL_RGB10_A2:
    case GL_RGBA12:
+#if UTIL_ARCH_LITTLE_ENDIAN
+      rb->Format = MESA_FORMAT_R8G8B8A8_UNORM;
+#else
+      rb->Format = MESA_FORMAT_A8B8G8R8_UNORM;
 #endif
-      if (_mesa_little_endian())
-         rb->Format = MESA_FORMAT_R8G8B8A8_UNORM;
-      else
-         rb->Format = MESA_FORMAT_A8B8G8R8_UNORM;
       break;
    case GL_RGBA16:
    case GL_RGBA16_SNORM:
       /* for accum buffer */
-      rb->Format = MESA_FORMAT_SIGNED_RGBA_16;
+      rb->Format = MESA_FORMAT_RGBA_SNORM16;
       break;
    case GL_STENCIL_INDEX:
    case GL_STENCIL_INDEX1_EXT:
@@ -102,7 +101,7 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
       rb->Format = MESA_FORMAT_Z_UNORM16;
       break;
    case GL_DEPTH_COMPONENT24:
-      rb->Format = MESA_FORMAT_Z24_UNORM_S8_UINT;
+      rb->Format = MESA_FORMAT_Z24_UNORM_X8_UINT;
       break;
    case GL_DEPTH_COMPONENT32:
       rb->Format = MESA_FORMAT_Z_UNORM32;
@@ -153,7 +152,7 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
    }
    else {
       /* the internalFormat should have been error checked long ago */
-      ASSERT(rb->_BaseFormat);
+      assert(rb->_BaseFormat);
    }
 
    return GL_TRUE;
@@ -180,7 +179,8 @@ _swrast_map_soft_renderbuffer(struct gl_context *ctx,
                               GLuint x, GLuint y, GLuint w, GLuint h,
                               GLbitfield mode,
                               GLubyte **out_map,
-                              GLint *out_stride)
+                              GLint *out_stride,
+                              bool flip_y)
 {
    struct swrast_renderbuffer *srb = swrast_renderbuffer(rb);
    GLubyte *map = srb->Buffer;
@@ -274,7 +274,7 @@ add_color_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb,
       rb->InternalFormat = GL_RGBA;
 
       rb->AllocStorage = soft_renderbuffer_storage;
-      _mesa_add_renderbuffer(fb, b, rb);
+      _mesa_attach_and_own_rb(fb, b, rb);
    }
 
    return GL_TRUE;
@@ -320,7 +320,7 @@ add_depth_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
    }
 
    rb->AllocStorage = soft_renderbuffer_storage;
-   _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb);
+   _mesa_attach_and_own_rb(fb, BUFFER_DEPTH, rb);
 
    return GL_TRUE;
 }
@@ -358,7 +358,7 @@ add_stencil_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
    rb->InternalFormat = GL_STENCIL_INDEX8;
 
    rb->AllocStorage = soft_renderbuffer_storage;
-   _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb);
+   _mesa_attach_and_own_rb(fb, BUFFER_STENCIL, rb);
 
    return GL_TRUE;
 }
@@ -382,8 +382,8 @@ add_depth_stencil_renderbuffer(struct gl_context *ctx,
    rb->InternalFormat = GL_DEPTH_STENCIL;
 
    rb->AllocStorage = soft_renderbuffer_storage;
-   _mesa_add_renderbuffer(fb, BUFFER_DEPTH, rb);
-   _mesa_add_renderbuffer(fb, BUFFER_STENCIL, rb);
+   _mesa_attach_and_own_rb(fb, BUFFER_DEPTH, rb);
+   _mesa_attach_and_reference_rb(fb, BUFFER_STENCIL, rb);
 
    return GL_TRUE;
 }
@@ -420,7 +420,7 @@ add_accum_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
 
    rb->InternalFormat = GL_RGBA16_SNORM;
    rb->AllocStorage = soft_renderbuffer_storage;
-   _mesa_add_renderbuffer(fb, BUFFER_ACCUM, rb);
+   _mesa_attach_and_own_rb(fb, BUFFER_ACCUM, rb);
 
    return GL_TRUE;
 }
@@ -465,7 +465,7 @@ add_aux_renderbuffers(struct gl_context *ctx, struct gl_framebuffer *fb,
       rb->InternalFormat = GL_RGBA;
 
       rb->AllocStorage = soft_renderbuffer_storage;
-      _mesa_add_renderbuffer(fb, BUFFER_AUX0 + i, rb);
+      _mesa_attach_and_own_rb(fb, BUFFER_AUX0 + i, rb);
    }
    return GL_TRUE;
 }
@@ -578,7 +578,8 @@ map_attachment(struct gl_context *ctx,
       ctx->Driver.MapRenderbuffer(ctx, rb,
                                   0, 0, rb->Width, rb->Height,
                                   GL_MAP_READ_BIT | GL_MAP_WRITE_BIT,
-                                  &srb->Map, &srb->RowStride);
+                                  &srb->Map, &srb->RowStride,
+                                  fb->FlipY);
    }
 
    assert(srb->Map);
@@ -659,7 +660,7 @@ _swrast_map_renderbuffers(struct gl_context *ctx)
    }
 
    for (buf = 0; buf < fb->_NumColorDrawBuffers; buf++) {
-      if (fb->_ColorDrawBufferIndexes[buf] >= 0) {
+      if (fb->_ColorDrawBufferIndexes[buf] != BUFFER_NONE) {
          map_attachment(ctx, fb, fb->_ColorDrawBufferIndexes[buf]);
          find_renderbuffer_colortype(fb->_ColorDrawBuffers[buf]);
       }
@@ -690,7 +691,7 @@ _swrast_unmap_renderbuffers(struct gl_context *ctx)
    }
 
    for (buf = 0; buf < fb->_NumColorDrawBuffers; buf++) {
-      if (fb->_ColorDrawBufferIndexes[buf] >= 0) {
+      if (fb->_ColorDrawBufferIndexes[buf] != BUFFER_NONE) {
          unmap_attachment(ctx, fb, fb->_ColorDrawBufferIndexes[buf]);
       }
    }