vbo: fix array index out of bounds error, and fix evaluator priorities
[mesa.git] / src / mesa / main / renderbuffer.c
index 9509df315936c463a25913ab4ba21a2d895956df..5bef7c84fb203ececf97b686b9e3c60f3ba879f9 100644 (file)
 
 #include "rbadaptors.h"
 
-#include "pipe/p_state.h"
-#include "pipe/p_context.h"
-#include "pipe/p_defines.h"
-#include "state_tracker/st_context.h"
-
 
 /* 32-bit color index format.  Not a public format. */
 #define COLOR_INDEX32 0x424243
@@ -950,7 +945,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
                                 GLenum internalFormat,
                                 GLuint width, GLuint height)
 {
-   struct pipe_context *pipe = ctx->st->pipe;
    GLuint pixelSize;
 
    /* first clear these fields */
@@ -1067,9 +1061,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
       rb->PutMonoValues = put_mono_values_ubyte;
       rb->StencilBits = 8 * sizeof(GLubyte);
       pixelSize = sizeof(GLubyte);
-      if (!rb->surface)
-         rb->surface = (struct pipe_surface *)
-            pipe->surface_alloc(pipe, PIPE_FORMAT_U_S8);
       break;
    case GL_STENCIL_INDEX16_EXT:
       rb->_ActualFormat = GL_STENCIL_INDEX16_EXT;
@@ -1100,9 +1091,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
       rb->PutValues = put_values_ushort;
       rb->PutMonoValues = put_mono_values_ushort;
       rb->DepthBits = 8 * sizeof(GLushort);
-      if (!rb->surface)
-         rb->surface = (struct pipe_surface *)
-            pipe->surface_alloc(pipe, PIPE_FORMAT_U_Z16);
       pixelSize = sizeof(GLushort);
       break;
    case GL_DEPTH_COMPONENT24:
@@ -1125,9 +1113,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
          rb->_ActualFormat = GL_DEPTH_COMPONENT32;
          rb->DepthBits = 32;
       }
-      if (!rb->surface)
-         rb->surface = (struct pipe_surface *)
-            pipe->surface_alloc(pipe, PIPE_FORMAT_U_Z32);
       pixelSize = sizeof(GLuint);
       break;
    case GL_DEPTH_STENCIL_EXT:
@@ -1145,9 +1130,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
       rb->PutMonoValues = put_mono_values_uint;
       rb->DepthBits = 24;
       rb->StencilBits = 8;
-      if (!rb->surface)
-         rb->surface = (struct pipe_surface *)
-            pipe->surface_alloc(pipe, PIPE_FORMAT_Z24_S8);
       pixelSize = sizeof(GLuint);
       break;
    case GL_COLOR_INDEX8_EXT:
@@ -1210,32 +1192,14 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
    ASSERT(rb->PutMonoValues);
 
    /* free old buffer storage */
-   if (rb->surface) {
-      /* pipe_surface/region */
-   }
-   else if (rb->Data) {
-      /* legacy renderbuffer (this will go away) */
+   if (rb->Data) {
       _mesa_free(rb->Data);
+      rb->Data = NULL;
    }
-   rb->Data = NULL;
 
    if (width > 0 && height > 0) {
       /* allocate new buffer storage */
-      if (rb->surface) {
-         /* pipe_surface/region */
-         if (rb->surface->region) {
-            pipe->region_unmap(pipe, rb->surface->region);
-            pipe->region_release(pipe, &rb->surface->region);
-         }
-         rb->surface->region = pipe->region_alloc(pipe, pixelSize, width, height);
-         /* XXX probably don't want to really map here */
-         pipe->region_map(pipe, rb->surface->region);
-         rb->Data = rb->surface->region->map;
-      }
-      else {
-         /* legacy renderbuffer (this will go away) */
-         rb->Data = malloc(width * height * pixelSize);
-      }
+      rb->Data = malloc(width * height * pixelSize);
 
       if (rb->Data == NULL) {
          rb->Width = 0;
@@ -1524,11 +1488,16 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)
    rb->InternalFormat = GL_NONE;
    rb->_ActualFormat = GL_NONE;
    rb->_BaseFormat = GL_NONE;
-   rb->DataType = GL_NONE;
+
+   rb->ComponentType = GL_UNSIGNED_NORMALIZED; /* ARB_fbo */
+   rb->ColorEncoding = GL_LINEAR; /* ARB_fbo */
+
    rb->RedBits = rb->GreenBits = rb->BlueBits = rb->AlphaBits = 0;
    rb->IndexBits = 0;
    rb->DepthBits = 0;
    rb->StencilBits = 0;
+
+   rb->DataType = GL_NONE;
    rb->Data = NULL;
 
    /* Point back to ourself so that we don't have to check for Wrapped==NULL
@@ -1986,7 +1955,7 @@ _mesa_add_aux_renderbuffers(GLcontext *ctx, struct gl_framebuffer *fb,
       return GL_FALSE;
    }
 
-   assert(numBuffers < MAX_AUX_BUFFERS);
+   assert(numBuffers <= MAX_AUX_BUFFERS);
 
    for (i = 0; i < numBuffers; i++) {
       struct gl_renderbuffer *rb = _mesa_new_renderbuffer(ctx, 0);