mesa: remove NullBufferObj
authorMarek Olšák <marek.olsak@amd.com>
Sun, 22 Mar 2020 03:52:31 +0000 (23:52 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 6 Apr 2020 14:28:53 +0000 (10:28 -0400)
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4466>

src/mesa/main/bufferobj.c
src/mesa/main/mtypes.h
src/mesa/main/shared.c
src/mesa/main/varray.c

index 4119f3e..e4330d8 100644 (file)
@@ -4930,7 +4930,15 @@ _mesa_NamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset,
                                         "glNamedBufferPageCommitmentEXT"))
          return;
    } else {
-      bufferObj = ctx->Shared->NullBufferObj;
+      /* GL_EXT_direct_state_access says about NamedBuffer* functions:
+       *
+       *   There is no buffer corresponding to the name zero, these commands
+       *   generate the INVALID_OPERATION error if the buffer parameter is
+       *   zero.
+       */
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glNamedBufferPageCommitmentEXT(buffer = 0)");
+      return;
    }
    buffer_page_commitment(ctx, bufferObj, offset, size, commit,
                           "glNamedBufferPageCommitmentEXT");
index 33adf42..50380c0 100644 (file)
@@ -3313,9 +3313,6 @@ struct gl_shared_state
    GLuint TextureStateStamp;           /**< state notification for shared tex */
    /*@}*/
 
-   /** Default buffer object for vertex arrays that aren't in VBOs */
-   struct gl_buffer_object *NullBufferObj;
-
    /**
     * \name Vertex/geometry/fragment programs
     */
index 3da48f3..46e2f9a 100644 (file)
@@ -95,11 +95,6 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
    _mesa_init_shader_includes(shared);
    mtx_init(&shared->ShaderIncludeMutex, mtx_plain);
 
-   /* Allocate the default buffer object */
-   shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0);
-   if (!shared->NullBufferObj)
-      goto fail;
-
    /* Create default texture objects */
    for (i = 0; i < NUM_TEXTURE_TARGETS; i++) {
       /* NOTE: the order of these enums matches the TEXTURE_x_INDEX values */
@@ -143,10 +138,6 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
    shared->SemaphoreObjects = _mesa_NewHashTable();
 
    return shared;
-
-fail:
-   free_shared_state(ctx, shared);
-   return NULL;
 }
 
 
@@ -409,9 +400,6 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
       _mesa_DeleteHashTable(shared->RenderBuffers);
    }
 
-   if (shared->NullBufferObj)
-      _mesa_reference_buffer_object(ctx, &shared->NullBufferObj, NULL);
-
    if (shared->SyncObjects) {
       set_foreach(shared->SyncObjects, entry) {
          _mesa_unref_sync_object(ctx, (struct gl_sync_object *) entry->key, 1);
index 7fa3587..3574925 100644 (file)
@@ -204,8 +204,6 @@ _mesa_bind_vertex_buffer(struct gl_context *ctx,
    assert(!vao->SharedAndImmutable);
    struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[index];
 
-   assert(vbo != ctx->Shared->NullBufferObj);
-
    if (ctx->Const.VertexBufferOffsetIsInt32 && (int)offset < 0 &&
        _mesa_is_bufferobj(vbo)) {
       /* The offset will be interpreted as a signed int, so make sure