Author: jgardou
Date: Tue Jun 17 09:02:19 2014
New Revision: 63608
URL:
http://svn.reactos.org/svn/reactos?rev=63608&view=rev
Log:
[OPENGL32/MESA]
- Get rid of APPLE_vertex_array_object, ARB_vertex_array_object and
APPLE_object_purgeable
CORE-7499
Removed:
trunk/reactos/dll/opengl/mesa/main/arrayobj.c
trunk/reactos/dll/opengl/mesa/main/arrayobj.h
Modified:
trunk/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c
trunk/reactos/dll/opengl/mesa/drivers/common/meta.c
trunk/reactos/dll/opengl/mesa/drivers/common/meta.h
trunk/reactos/dll/opengl/mesa/main/CMakeLists.txt
trunk/reactos/dll/opengl/mesa/main/api_arrayelt.c
trunk/reactos/dll/opengl/mesa/main/api_exec.c
trunk/reactos/dll/opengl/mesa/main/api_validate.c
trunk/reactos/dll/opengl/mesa/main/attrib.c
trunk/reactos/dll/opengl/mesa/main/bufferobj.c
trunk/reactos/dll/opengl/mesa/main/context.c
trunk/reactos/dll/opengl/mesa/main/dd.h
trunk/reactos/dll/opengl/mesa/main/dispatch.h
trunk/reactos/dll/opengl/mesa/main/dlist.c
trunk/reactos/dll/opengl/mesa/main/enable.c
trunk/reactos/dll/opengl/mesa/main/extensions.c
trunk/reactos/dll/opengl/mesa/main/get.c
trunk/reactos/dll/opengl/mesa/main/getstring.c
trunk/reactos/dll/opengl/mesa/main/mtypes.h
trunk/reactos/dll/opengl/mesa/main/precomp.h
trunk/reactos/dll/opengl/mesa/main/state.c
trunk/reactos/dll/opengl/mesa/main/varray.c
trunk/reactos/dll/opengl/mesa/main/varray.h
trunk/reactos/dll/opengl/mesa/main/version.c
trunk/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c
trunk/reactos/dll/opengl/mesa/vbo/vbo_save_api.c
Modified: trunk/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/drivers/co…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/drivers/common/driverfuncs.c [iso-8859-1] Tue Jun 17
09:02:19 2014
@@ -26,7 +26,6 @@
#include "main/glheader.h"
#include "main/imports.h"
#include "main/accum.h"
-#include "main/arrayobj.h"
#include "main/context.h"
#include "main/framebuffer.h"
#include "main/readpix.h"
@@ -147,11 +146,6 @@
_mesa_init_texture_barrier_functions(driver);
- /* APPLE_vertex_array_object */
- driver->NewArrayObject = _mesa_new_array_object;
- driver->DeleteArrayObject = _mesa_delete_array_object;
- driver->BindArrayObject = NULL;
-
/* T&L stuff */
driver->CurrentExecPrimitive = 0;
driver->CurrentSavePrimitive = 0;
Modified: trunk/reactos/dll/opengl/mesa/drivers/common/meta.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/drivers/co…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/drivers/common/meta.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/drivers/common/meta.c [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -34,7 +34,6 @@
#include "main/glheader.h"
#include "main/mtypes.h"
#include "main/imports.h"
-#include "main/arrayobj.h"
#include "main/blend.h"
#include "main/bufferobj.h"
#include "main/buffers.h"
@@ -134,10 +133,6 @@
GLbitfield TexGenEnabled;
GLuint EnvMode; /* unit[0] only */
- /** MESA_META_VERTEX */
- struct gl_array_object *ArrayObj;
- struct gl_buffer_object *ArrayBufferObj;
-
/** MESA_META_VIEWPORT */
GLint ViewportX, ViewportY, ViewportW, ViewportH;
GLclampd DepthNear, DepthFar;
@@ -406,15 +401,6 @@
}
}
- if (state & MESA_META_VERTEX) {
- /* save vertex array object state */
- _mesa_reference_array_object(ctx, &save->ArrayObj,
- ctx->Array.ArrayObj);
- _mesa_reference_buffer_object(ctx, &save->ArrayBufferObj,
- ctx->Array.ArrayBufferObj);
- /* set some default state? */
- }
-
if (state & MESA_META_VIEWPORT) {
/* save viewport state */
save->ViewportX = ctx->Viewport.X;
@@ -596,16 +582,6 @@
}
}
}
- }
-
- if (state & MESA_META_VERTEX) {
- /* restore vertex buffer object */
- _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, save->ArrayBufferObj->Name);
- _mesa_reference_buffer_object(ctx, &save->ArrayBufferObj, NULL);
-
- /* restore vertex array object */
- _mesa_BindVertexArray(save->ArrayObj->Name);
- _mesa_reference_array_object(ctx, &save->ArrayObj, NULL);
}
if (state & MESA_META_VIEWPORT) {
Modified: trunk/reactos/dll/opengl/mesa/drivers/common/meta.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/drivers/co…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/drivers/common/meta.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/drivers/common/meta.h [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -47,7 +47,6 @@
#define MESA_META_STENCIL_TEST 0x400
#define MESA_META_TRANSFORM 0x800 /**< modelview/projection matrix state
*/
#define MESA_META_TEXTURE 0x1000
-#define MESA_META_VERTEX 0x2000
#define MESA_META_VIEWPORT 0x4000
#define MESA_META_CLIP 0x8000
#define MESA_META_SELECT_FEEDBACK 0x10000
Modified: trunk/reactos/dll/opengl/mesa/main/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/CMake…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/CMakeLists.txt [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -6,7 +6,6 @@
api_validate.c
accum.c
attrib.c
- arrayobj.c
blend.c
bufferobj.c
buffers.c
Modified: trunk/reactos/dll/opengl/mesa/main/api_arrayelt.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/api_a…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/api_arrayelt.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/api_arrayelt.c [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -734,49 +734,48 @@
AEcontext *actx = AE_CONTEXT(ctx);
AEarray *aa = actx->arrays;
AEattrib *at = actx->attribs;
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
actx->nr_vbos = 0;
/* conventional vertex arrays */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX];
aa->offset = IndexFuncs[TYPE_IDX(aa->array->Type)];
check_vbo(actx, aa->array->BufferObj);
aa++;
}
- if (arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG];
aa->offset = _gloffset_EdgeFlagv;
check_vbo(actx, aa->array->BufferObj);
aa++;
}
- if (arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL];
aa->offset = NormalFuncs[TYPE_IDX(aa->array->Type)];
check_vbo(actx, aa->array->BufferObj);
aa++;
}
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0];
aa->offset =
ColorFuncs[aa->array->Size-3][TYPE_IDX(aa->array->Type)];
check_vbo(actx, aa->array->BufferObj);
aa++;
}
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1];
aa->offset = SecondaryColorFuncs[TYPE_IDX(aa->array->Type)];
check_vbo(actx, aa->array->BufferObj);
aa++;
}
- if (arrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_FOG];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG];
aa->offset = FogCoordFuncs[TYPE_IDX(aa->array->Type)];
check_vbo(actx, aa->array->BufferObj);
aa++;
}
{
- struct gl_client_array *attribArray =
&arrayObj->VertexAttrib[VERT_ATTRIB_TEX];
+ struct gl_client_array *attribArray =
&ctx->Array.VertexAttrib[VERT_ATTRIB_TEX];
if (attribArray->Enabled) {
/* NOTE: we use generic glVertexAttribNV functions here.
* If we ever remove GL_NV_vertex_program this will have to change.
@@ -793,14 +792,14 @@
}
/* finally, vertex position */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled) {
- aa->array = &arrayObj->VertexAttrib[VERT_ATTRIB_POS];
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled) {
+ aa->array = &ctx->Array.VertexAttrib[VERT_ATTRIB_POS];
aa->offset =
VertexFuncs[aa->array->Size-2][TYPE_IDX(aa->array->Type)];
check_vbo(actx, aa->array->BufferObj);
aa++;
}
- check_vbo(actx, arrayObj->ElementArrayBufferObj);
+ check_vbo(actx, ctx->Array.ElementArrayBufferObj);
ASSERT(at - actx->attribs <= VERT_ATTRIB_MAX);
ASSERT(aa - actx->arrays < 32);
Modified: trunk/reactos/dll/opengl/mesa/main/api_exec.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/api_e…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/api_exec.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/api_exec.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -308,12 +308,6 @@
/* glVertexAttrib*NV functions handled in api_loopback.c */
#endif
- /* 273. GL_APPLE_vertex_array_object */
- SET_BindVertexArrayAPPLE(exec, _mesa_BindVertexArrayAPPLE);
- SET_DeleteVertexArraysAPPLE(exec, _mesa_DeleteVertexArraysAPPLE);
- SET_GenVertexArraysAPPLE(exec, _mesa_GenVertexArraysAPPLE);
- SET_IsVertexArrayAPPLE(exec, _mesa_IsVertexArrayAPPLE);
-
/* 282. GL_NV_fragment_program */
#if FEATURE_NV_fragment_program
SET_ProgramNamedParameter4fNV(exec, _mesa_ProgramNamedParameter4fNV);
@@ -367,16 +361,6 @@
SET_FlushMappedBufferRange(exec, _mesa_FlushMappedBufferRange);
#endif
- /* GL_ARB_vertex_array_object */
- SET_BindVertexArray(exec, _mesa_BindVertexArray);
- SET_GenVertexArrays(exec, _mesa_GenVertexArrays);
-
-#if FEATURE_APPLE_object_purgeable
- SET_ObjectPurgeableAPPLE(exec, _mesa_ObjectPurgeableAPPLE);
- SET_ObjectUnpurgeableAPPLE(exec, _mesa_ObjectUnpurgeableAPPLE);
- SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE);
-#endif
-
/* GL_EXT_texture_integer */
SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT);
SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT);
Modified: trunk/reactos/dll/opengl/mesa/main/api_validate.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/api_v…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/api_validate.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/api_validate.c [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -101,7 +101,7 @@
/* Draw if we have vertex positions (GL_VERTEX_ARRAY or generic
* array [0]).
*/
- return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled;
+ return ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled;
}
@@ -130,14 +130,14 @@
memset(&ib, 0, sizeof(ib));
ib.type = type;
ib.ptr = indices;
- ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
+ ib.obj = ctx->Array.ElementArrayBufferObj;
vbo_get_minmax_index(ctx, &prim, &ib, &min, &max);
- if (max >= ctx->Array.ArrayObj->_MaxElement) {
+ if (max >= ctx->Array._MaxElement) {
/* the max element is out of bounds of one or more enabled arrays */
_mesa_warning(ctx, "glDrawElements() index=%u is out of bounds
(max=%u)",
- max, ctx->Array.ArrayObj->_MaxElement);
+ max, ctx->Array._MaxElement);
return GL_FALSE;
}
@@ -197,10 +197,10 @@
return GL_FALSE;
/* Vertex buffer object tests */
- if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
+ if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) {
/* use indices in the buffer object */
/* make sure count doesn't go outside buffer bounds */
- if (index_bytes(type, count) >
ctx->Array.ArrayObj->ElementArrayBufferObj->Size) {
+ if (index_bytes(type, count) > ctx->Array.ElementArrayBufferObj->Size) {
_mesa_warning(ctx, "glDrawElements index out of buffer bounds");
return GL_FALSE;
}
@@ -258,10 +258,10 @@
return GL_FALSE;
/* Vertex buffer object tests */
- if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
+ if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) {
/* use indices in the buffer object */
/* make sure count doesn't go outside buffer bounds */
- if (index_bytes(type, count) >
ctx->Array.ArrayObj->ElementArrayBufferObj->Size) {
+ if (index_bytes(type, count) > ctx->Array.ElementArrayBufferObj->Size) {
_mesa_warning(ctx, "glDrawRangeElements index out of buffer bounds");
return GL_FALSE;
}
@@ -305,7 +305,7 @@
return GL_FALSE;
if (ctx->Const.CheckArrayBounds) {
- if (start + count > (GLint) ctx->Array.ArrayObj->_MaxElement)
+ if (start + count > (GLint) ctx->Array._MaxElement)
return GL_FALSE;
}
Removed: trunk/reactos/dll/opengl/mesa/main/arrayobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/array…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/arrayobj.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/arrayobj.c (removed)
@@ -1,533 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.6
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * (C) Copyright IBM Corporation 2006
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL OR IBM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-/**
- * \file arrayobj.c
- * Functions for the GL_APPLE_vertex_array_object extension.
- *
- * \todo
- * The code in this file borrows a lot from bufferobj.c. There's a certain
- * amount of cruft left over from that origin that may be unnecessary.
- *
- * \author Ian Romanick <idr(a)us.ibm.com>
- * \author Brian Paul
- */
-
-#include <precomp.h>
-
-/**
- * Look up the array object for the given ID.
- *
- * \returns
- * Either a pointer to the array object with the specified ID or \c NULL for
- * a non-existent ID. The spec defines ID 0 as being technically
- * non-existent.
- */
-
-static inline struct gl_array_object *
-lookup_arrayobj(struct gl_context *ctx, GLuint id)
-{
- if (id == 0)
- return NULL;
- else
- return (struct gl_array_object *)
- _mesa_HashLookup(ctx->Array.Objects, id);
-}
-
-
-/**
- * For all the vertex arrays in the array object, unbind any pointers
- * to any buffer objects (VBOs).
- * This is done just prior to array object destruction.
- */
-static void
-unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj)
-{
- GLuint i;
-
- for (i = 0; i < Elements(obj->VertexAttrib); i++)
- _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj, NULL);
-}
-
-
-/**
- * Allocate and initialize a new vertex array object.
- *
- * This function is intended to be called via
- * \c dd_function_table::NewArrayObject.
- */
-struct gl_array_object *
-_mesa_new_array_object( struct gl_context *ctx, GLuint name )
-{
- struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object);
- if (obj)
- _mesa_initialize_array_object(ctx, obj, name);
- return obj;
-}
-
-
-/**
- * Delete an array object.
- *
- * This function is intended to be called via
- * \c dd_function_table::DeleteArrayObject.
- */
-void
-_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj )
-{
- (void) ctx;
- unbind_array_object_vbos(ctx, obj);
- _mesa_reference_buffer_object(ctx, &obj->ElementArrayBufferObj, NULL);
- _glthread_DESTROY_MUTEX(obj->Mutex);
- free(obj);
-}
-
-
-/**
- * Set ptr to arrayObj w/ reference counting.
- */
-void
-_mesa_reference_array_object(struct gl_context *ctx,
- struct gl_array_object **ptr,
- struct gl_array_object *arrayObj)
-{
- if (*ptr == arrayObj)
- return;
-
- if (*ptr) {
- /* Unreference the old array object */
- GLboolean deleteFlag = GL_FALSE;
- struct gl_array_object *oldObj = *ptr;
-
- _glthread_LOCK_MUTEX(oldObj->Mutex);
- ASSERT(oldObj->RefCount > 0);
- oldObj->RefCount--;
-#if 0
- printf("ArrayObj %p %d DECR to %d\n",
- (void *) oldObj, oldObj->Name, oldObj->RefCount);
-#endif
- deleteFlag = (oldObj->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldObj->Mutex);
-
- if (deleteFlag) {
- ASSERT(ctx->Driver.DeleteArrayObject);
- ctx->Driver.DeleteArrayObject(ctx, oldObj);
- }
-
- *ptr = NULL;
- }
- ASSERT(!*ptr);
-
- if (arrayObj) {
- /* reference new array object */
- _glthread_LOCK_MUTEX(arrayObj->Mutex);
- if (arrayObj->RefCount == 0) {
- /* this array's being deleted (look just above) */
- /* Not sure this can every really happen. Warn if it does. */
- _mesa_problem(NULL, "referencing deleted array object");
- *ptr = NULL;
- }
- else {
- arrayObj->RefCount++;
-#if 0
- printf("ArrayObj %p %d INCR to %d\n",
- (void *) arrayObj, arrayObj->Name, arrayObj->RefCount);
-#endif
- *ptr = arrayObj;
- }
- _glthread_UNLOCK_MUTEX(arrayObj->Mutex);
- }
-}
-
-
-
-static void
-init_array(struct gl_context *ctx,
- struct gl_client_array *array, GLint size, GLint type)
-{
- array->Size = size;
- array->Type = type;
- array->Stride = 0;
- array->StrideB = 0;
- array->Ptr = NULL;
- array->Enabled = GL_FALSE;
- array->Normalized = GL_FALSE;
- array->Integer = GL_FALSE;
- array->_ElementSize = size * _mesa_sizeof_type(type);
- /* Vertex array buffers */
- _mesa_reference_buffer_object(ctx, &array->BufferObj,
- ctx->Shared->NullBufferObj);
-}
-
-
-/**
- * Initialize a gl_array_object's arrays.
- */
-void
-_mesa_initialize_array_object( struct gl_context *ctx,
- struct gl_array_object *obj,
- GLuint name )
-{
- GLuint i;
-
- obj->Name = name;
-
- _glthread_INIT_MUTEX(obj->Mutex);
- obj->RefCount = 1;
-
- /* Init the individual arrays */
- for (i = 0; i < Elements(obj->VertexAttrib); i++) {
- switch (i) {
- case VERT_ATTRIB_WEIGHT:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_WEIGHT], 1, GL_FLOAT);
- break;
- case VERT_ATTRIB_NORMAL:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_NORMAL], 3, GL_FLOAT);
- break;
- case VERT_ATTRIB_COLOR1:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_COLOR1], 3, GL_FLOAT);
- break;
- case VERT_ATTRIB_FOG:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_FOG], 1, GL_FLOAT);
- break;
- case VERT_ATTRIB_COLOR_INDEX:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX], 1,
GL_FLOAT);
- break;
- case VERT_ATTRIB_EDGEFLAG:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_EDGEFLAG], 1, GL_BOOL);
- break;
-#if FEATURE_point_size_array
- case VERT_ATTRIB_POINT_SIZE:
- init_array(ctx, &obj->VertexAttrib[VERT_ATTRIB_POINT_SIZE], 1,
GL_FLOAT);
- break;
-#endif
- default:
- init_array(ctx, &obj->VertexAttrib[i], 4, GL_FLOAT);
- break;
- }
- }
-
- _mesa_reference_buffer_object(ctx, &obj->ElementArrayBufferObj,
- ctx->Shared->NullBufferObj);
-}
-
-
-/**
- * Add the given array object to the array object pool.
- */
-static void
-save_array_object( struct gl_context *ctx, struct gl_array_object *obj )
-{
- if (obj->Name > 0) {
- /* insert into hash table */
- _mesa_HashInsert(ctx->Array.Objects, obj->Name, obj);
- }
-}
-
-
-/**
- * Remove the given array object from the array object pool.
- * Do not deallocate the array object though.
- */
-static void
-remove_array_object( struct gl_context *ctx, struct gl_array_object *obj )
-{
- if (obj->Name > 0) {
- /* remove from hash table */
- _mesa_HashRemove(ctx->Array.Objects, obj->Name);
- }
-}
-
-
-
-/**
- * Helper for update_arrays().
- * \return min(current min, array->_MaxElement).
- */
-static GLuint
-update_min(GLuint min, struct gl_client_array *array)
-{
- assert(array->Enabled);
- _mesa_update_array_max_element(array);
- return MIN2(min, array->_MaxElement);
-}
-
-
-/**
- * Examine vertex arrays to update the gl_array_object::_MaxElement field.
- */
-void
-_mesa_update_array_object_max_element(struct gl_context *ctx,
- struct gl_array_object *arrayObj)
-{
- GLbitfield64 enabled = arrayObj->_Enabled;
- GLuint min = ~0u;
-
- while (enabled) {
- GLint attrib = _mesa_ffsll(enabled) - 1;
- enabled &= ~BITFIELD64_BIT(attrib);
- min = update_min(min, &arrayObj->VertexAttrib[attrib]);
- }
-
- /* _MaxElement is one past the last legal array element */
- arrayObj->_MaxElement = min;
-}
-
-
-/**********************************************************************/
-/* API Functions */
-/**********************************************************************/
-
-
-/**
- * Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE().
- * \param genRequired specifies behavour when id was not generated with
- * glGenVertexArrays().
- */
-static void
-bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
-{
- struct gl_array_object * const oldObj = ctx->Array.ArrayObj;
- struct gl_array_object *newObj = NULL;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- ASSERT(oldObj != NULL);
-
- if ( oldObj->Name == id )
- return; /* rebinding the same array object- no change */
-
- /*
- * Get pointer to new array object (newObj)
- */
- if (id == 0) {
- /* The spec says there is no array object named 0, but we use
- * one internally because it simplifies things.
- */
- newObj = ctx->Array.DefaultArrayObj;
- }
- else {
- /* non-default array object */
- newObj = lookup_arrayobj(ctx, id);
- if (!newObj) {
- if (genRequired) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glBindVertexArray(id)");
- return;
- }
-
- /* For APPLE version, generate a new array object now */
- newObj = (*ctx->Driver.NewArrayObject)(ctx, id);
- if (!newObj) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindVertexArrayAPPLE");
- return;
- }
-
- save_array_object(ctx, newObj);
- }
-
- if (!newObj->_Used) {
- /* The "Interactions with APPLE_vertex_array_object" section of the
- * GL_ARB_vertex_array_object spec says:
- *
- * "The first bind call, either BindVertexArray or
- * BindVertexArrayAPPLE, determines the semantic of the object."
- */
- newObj->ARBsemantics = genRequired;
- newObj->_Used = GL_TRUE;
- }
- }
-
- ctx->NewState |= _NEW_ARRAY;
- ctx->Array.NewState |= VERT_BIT_ALL;
- _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj);
-
- /* Pass BindVertexArray call to device driver */
- if (ctx->Driver.BindArrayObject && newObj)
- ctx->Driver.BindArrayObject(ctx, newObj);
-}
-
-
-/**
- * ARB version of glBindVertexArray()
- * This function behaves differently from glBindVertexArrayAPPLE() in
- * that this function requires all ids to have been previously generated
- * by glGenVertexArrays[APPLE]().
- */
-void GLAPIENTRY
-_mesa_BindVertexArray( GLuint id )
-{
- GET_CURRENT_CONTEXT(ctx);
- bind_vertex_array(ctx, id, GL_TRUE);
-}
-
-
-/**
- * Bind a new array.
- *
- * \todo
- * The binding could be done more efficiently by comparing the non-NULL
- * pointers in the old and new objects. The only arrays that are "dirty" are
- * the ones that are non-NULL in either object.
- */
-void GLAPIENTRY
-_mesa_BindVertexArrayAPPLE( GLuint id )
-{
- GET_CURRENT_CONTEXT(ctx);
- bind_vertex_array(ctx, id, GL_FALSE);
-}
-
-
-/**
- * Delete a set of array objects.
- *
- * \param n Number of array objects to delete.
- * \param ids Array of \c n array object IDs.
- */
-void GLAPIENTRY
-_mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLsizei i;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (n < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteVertexArrayAPPLE(n)");
- return;
- }
-
- for (i = 0; i < n; i++) {
- struct gl_array_object *obj = lookup_arrayobj(ctx, ids[i]);
-
- if ( obj != NULL ) {
- ASSERT( obj->Name == ids[i] );
-
- /* If the array object is currently bound, the spec says "the binding
- * for that object reverts to zero and the default vertex array
- * becomes current."
- */
- if ( obj == ctx->Array.ArrayObj ) {
- CALL_BindVertexArrayAPPLE( ctx->Exec, (0) );
- }
-
- /* The ID is immediately freed for re-use */
- remove_array_object(ctx, obj);
-
- /* Unreference the array object.
- * If refcount hits zero, the object will be deleted.
- */
- _mesa_reference_array_object(ctx, &obj, NULL);
- }
- }
-}
-
-
-/**
- * Generate a set of unique array object IDs and store them in \c arrays.
- * Helper for _mesa_GenVertexArrays[APPLE]() functions below.
- * \param n Number of IDs to generate.
- * \param arrays Array of \c n locations to store the IDs.
- * \param vboOnly Will arrays have to reside in VBOs?
- */
-static void
-gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays)
-{
- GLuint first;
- GLint i;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (n < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glGenVertexArraysAPPLE");
- return;
- }
-
- if (!arrays) {
- return;
- }
-
- first = _mesa_HashFindFreeKeyBlock(ctx->Array.Objects, n);
-
- /* Allocate new, empty array objects and return identifiers */
- for (i = 0; i < n; i++) {
- struct gl_array_object *obj;
- GLuint name = first + i;
-
- obj = (*ctx->Driver.NewArrayObject)( ctx, name );
- if (!obj) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenVertexArraysAPPLE");
- return;
- }
- save_array_object(ctx, obj);
- arrays[i] = first + i;
- }
-}
-
-
-/**
- * ARB version of glGenVertexArrays()
- * All arrays will be required to live in VBOs.
- */
-void GLAPIENTRY
-_mesa_GenVertexArrays(GLsizei n, GLuint *arrays)
-{
- GET_CURRENT_CONTEXT(ctx);
- gen_vertex_arrays(ctx, n, arrays);
-}
-
-
-/**
- * APPLE version of glGenVertexArraysAPPLE()
- * Arrays may live in VBOs or ordinary memory.
- */
-void GLAPIENTRY
-_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays)
-{
- GET_CURRENT_CONTEXT(ctx);
- gen_vertex_arrays(ctx, n, arrays);
-}
-
-
-/**
- * Determine if ID is the name of an array object.
- *
- * \param id ID of the potential array object.
- * \return \c GL_TRUE if \c id is the name of a array object,
- * \c GL_FALSE otherwise.
- */
-GLboolean GLAPIENTRY
-_mesa_IsVertexArrayAPPLE( GLuint id )
-{
- struct gl_array_object * obj;
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
-
- if (id == 0)
- return GL_FALSE;
-
- obj = lookup_arrayobj(ctx, id);
-
- return (obj != NULL) ? GL_TRUE : GL_FALSE;
-}
Removed: trunk/reactos/dll/opengl/mesa/main/arrayobj.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/array…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/arrayobj.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/arrayobj.h (removed)
@@ -1,85 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.6
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- * (C) Copyright IBM Corporation 2006
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL OR IBM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef ARRAYOBJ_H
-#define ARRAYOBJ_H
-
-#include "glheader.h"
-
-struct gl_context;
-
-/**
- * \file arrayobj.h
- * Functions for the GL_APPLE_vertex_array_object extension.
- *
- * \author Ian Romanick <idr(a)us.ibm.com>
- * \author Brian Paul
- */
-
-/*
- * Internal functions
- */
-
-extern struct gl_array_object *
-_mesa_new_array_object( struct gl_context *ctx, GLuint name );
-
-extern void
-_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj );
-
-extern void
-_mesa_reference_array_object(struct gl_context *ctx,
- struct gl_array_object **ptr,
- struct gl_array_object *arrayObj);
-
-extern void
-_mesa_initialize_array_object( struct gl_context *ctx,
- struct gl_array_object *obj, GLuint name );
-
-
-extern void
-_mesa_update_array_object_max_element(struct gl_context *ctx,
- struct gl_array_object *arrayObj);
-
-
-/*
- * API functions
- */
-
-
-void GLAPIENTRY _mesa_BindVertexArray( GLuint id );
-
-void GLAPIENTRY _mesa_BindVertexArrayAPPLE( GLuint id );
-
-void GLAPIENTRY _mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids);
-
-void GLAPIENTRY _mesa_GenVertexArrays(GLsizei n, GLuint *arrays);
-
-void GLAPIENTRY _mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *buffer);
-
-GLboolean GLAPIENTRY _mesa_IsVertexArrayAPPLE( GLuint id );
-
-#endif /* ARRAYOBJ_H */
Modified: trunk/reactos/dll/opengl/mesa/main/attrib.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/attri…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/attrib.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/attrib.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -1057,31 +1057,6 @@
#define GL_CLIENT_UNPACK_BIT (1<<21)
/**
- * Copy gl_array_object from src to dest.
- * 'dest' must be in an initialized state.
- */
-static void
-copy_array_object(struct gl_context *ctx,
- struct gl_array_object *dest,
- struct gl_array_object *src)
-{
- GLuint i;
-
- /* skip Name */
- /* skip RefCount */
-
- /* In theory must be the same anyway, but on recreate make sure it matches */
- dest->ARBsemantics = src->ARBsemantics;
-
- for (i = 0; i < Elements(src->VertexAttrib); i++)
- _mesa_copy_client_array(ctx, &dest->VertexAttrib[i],
&src->VertexAttrib[i]);
-
- /* _Enabled must be the same than on push */
- dest->_Enabled = src->_Enabled;
- dest->_MaxElement = src->_MaxElement;
-}
-
-/**
* Copy gl_array_attrib from src to dest.
* 'dest' must be in an initialized state.
*/
@@ -1098,8 +1073,20 @@
/* skip NewState */
/* skip RebindArrays */
- if (!vbo_deleted)
- copy_array_object(ctx, dest->ArrayObj, src->ArrayObj);
+ if (!vbo_deleted)
+ {
+ GLuint i;
+
+ /* skip Name */
+ /* skip RefCount */
+
+ for (i = 0; i < Elements(src->VertexAttrib); i++)
+ _mesa_copy_client_array(ctx, &dest->VertexAttrib[i],
&src->VertexAttrib[i]);
+
+ /* _Enabled must be the same than on push */
+ dest->_Enabled = src->_Enabled;
+ dest->_MaxElement = src->_MaxElement;
+ }
/* skip ArrayBufferObj */
/* skip ElementArrayBufferObj */
@@ -1113,17 +1100,14 @@
struct gl_array_attrib *dest,
struct gl_array_attrib *src)
{
- /* Set the Name, needed for restore, but do never overwrite.
- * Needs to match value in the object hash. */
- dest->ArrayObj->Name = src->ArrayObj->Name;
/* And copy all of the rest. */
copy_array_attrib(ctx, dest, src, GL_FALSE);
/* Just reference them here */
_mesa_reference_buffer_object(ctx, &dest->ArrayBufferObj,
src->ArrayBufferObj);
- _mesa_reference_buffer_object(ctx, &dest->ArrayObj->ElementArrayBufferObj,
- src->ArrayObj->ElementArrayBufferObj);
+ _mesa_reference_buffer_object(ctx, &dest->ElementArrayBufferObj,
+ src->ElementArrayBufferObj);
}
/**
@@ -1134,29 +1118,8 @@
struct gl_array_attrib *dest,
struct gl_array_attrib *src)
{
- /* The ARB_vertex_array_object spec says:
- *
- * "BindVertexArray fails and an INVALID_OPERATION error is generated
- * if array is not a name returned from a previous call to
- * GenVertexArrays, or if such a name has since been deleted with
- * DeleteVertexArrays."
- *
- * Therefore popping a deleted VAO cannot magically recreate it.
- *
- * The semantics of objects created using APPLE_vertex_array_objects behave
- * differently. These objects expect to be recreated by pop. Alas.
- */
- const GLboolean arb_vao = (src->ArrayObj->Name != 0
- && src->ArrayObj->ARBsemantics);
-
- if (arb_vao && !_mesa_IsVertexArrayAPPLE(src->ArrayObj->Name))
- return;
-
- _mesa_BindVertexArrayAPPLE(src->ArrayObj->Name);
-
/* Restore or recreate the buffer objects by the names ... */
- if (!arb_vao
- || src->ArrayBufferObj->Name == 0
+ if (!src->ArrayBufferObj->Name == 0
|| _mesa_IsBufferARB(src->ArrayBufferObj->Name)) {
/* ... and restore its content */
copy_array_attrib(ctx, dest, src, GL_FALSE);
@@ -1167,11 +1130,10 @@
copy_array_attrib(ctx, dest, src, GL_TRUE);
}
- if (!arb_vao
- || src->ArrayObj->ElementArrayBufferObj->Name == 0
- || _mesa_IsBufferARB(src->ArrayObj->ElementArrayBufferObj->Name))
+ if (src->ElementArrayBufferObj->Name == 0
+ || _mesa_IsBufferARB(src->ElementArrayBufferObj->Name))
_mesa_BindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,
- src->ArrayObj->ElementArrayBufferObj->Name);
+ src->ElementArrayBufferObj->Name);
/* Better safe than sorry?! */
dest->RebindArrays = GL_TRUE;
@@ -1181,20 +1143,7 @@
* FIXME: of the old ArrayObj->_Enabled and the new _Enabled.
* ... just do it.
*/
- dest->NewState |= src->ArrayObj->_Enabled | dest->ArrayObj->_Enabled;
-}
-
-/**
- * init/alloc the fields of 'attrib'.
- * Needs to the init part matching free_array_attrib_data below.
- */
-static void
-init_array_attrib_data(struct gl_context *ctx,
- struct gl_array_attrib *attrib)
-{
- /* Get a non driver gl_array_object. */
- attrib->ArrayObj = CALLOC_STRUCT( gl_array_object );
- _mesa_initialize_array_object(ctx, attrib->ArrayObj, 0);
+ dest->NewState |= src->_Enabled | dest->_Enabled;
}
/**
@@ -1206,11 +1155,8 @@
free_array_attrib_data(struct gl_context *ctx,
struct gl_array_attrib *attrib)
{
- /* We use a non driver array object, so don't just unref since we would
- * end up using the drivers DeleteArrayObject function for deletion. */
- _mesa_delete_array_object(ctx, attrib->ArrayObj);
- attrib->ArrayObj = 0;
_mesa_reference_buffer_object(ctx, &attrib->ArrayBufferObj, NULL);
+ _mesa_free_varray_data(ctx, attrib);
}
@@ -1247,7 +1193,7 @@
if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
struct gl_array_attrib *attr;
attr = CALLOC_STRUCT( gl_array_attrib );
- init_array_attrib_data(ctx, attr);
+ _mesa_init_varray(ctx, attr);
save_array_attrib(ctx, attr, &ctx->Array);
save_attrib_data(&head, GL_CLIENT_VERTEX_ARRAY_BIT, attr);
}
Modified: trunk/reactos/dll/opengl/mesa/main/bufferobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/buffe…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/bufferobj.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/bufferobj.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -58,7 +58,7 @@
case GL_ARRAY_BUFFER_ARB:
return &ctx->Array.ArrayBufferObj;
case GL_ELEMENT_ARRAY_BUFFER_ARB:
- return &ctx->Array.ArrayObj->ElementArrayBufferObj;
+ return &ctx->Array.ElementArrayBufferObj;
default:
return NULL;
}
@@ -658,7 +658,6 @@
for (i = 0; i < n; i++) {
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]);
if (bufObj) {
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
GLuint j;
ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject);
@@ -671,14 +670,14 @@
}
/* unbind any vertex pointers bound to this buffer */
- for (j = 0; j < Elements(arrayObj->VertexAttrib); j++) {
- unbind(ctx, &arrayObj->VertexAttrib[j].BufferObj, bufObj);
+ for (j = 0; j < Elements(ctx->Array.VertexAttrib); j++) {
+ unbind(ctx, &ctx->Array.VertexAttrib[j].BufferObj, bufObj);
}
if (ctx->Array.ArrayBufferObj == bufObj) {
_mesa_BindBufferARB( GL_ARRAY_BUFFER_ARB, 0 );
}
- if (arrayObj->ElementArrayBufferObj == bufObj) {
+ if (ctx->Array.ElementArrayBufferObj == bufObj) {
_mesa_BindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, 0 );
}
@@ -1326,286 +1325,3 @@
ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj);
}
-
-#if FEATURE_APPLE_object_purgeable
-static GLenum
-buffer_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option)
-{
- struct gl_buffer_object *bufObj;
- GLenum retval;
-
- bufObj = _mesa_lookup_bufferobj(ctx, name);
- if (!bufObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectPurgeable(name = 0x%x)", name);
- return 0;
- }
- if (!_mesa_is_bufferobj(bufObj)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glObjectPurgeable(buffer 0)" );
- return 0;
- }
-
- if (bufObj->Purgeable) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glObjectPurgeable(name = 0x%x) is already purgeable",
name);
- return GL_VOLATILE_APPLE;
- }
-
- bufObj->Purgeable = GL_TRUE;
-
- retval = GL_VOLATILE_APPLE;
- if (ctx->Driver.BufferObjectPurgeable)
- retval = ctx->Driver.BufferObjectPurgeable(ctx, bufObj, option);
-
- return retval;
-}
-
-static GLenum
-texture_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option)
-{
- struct gl_texture_object *bufObj;
- GLenum retval;
-
- bufObj = _mesa_lookup_texture(ctx, name);
- if (!bufObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectPurgeable(name = 0x%x)", name);
- return 0;
- }
-
- if (bufObj->Purgeable) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glObjectPurgeable(name = 0x%x) is already purgeable",
name);
- return GL_VOLATILE_APPLE;
- }
-
- bufObj->Purgeable = GL_TRUE;
-
- retval = GL_VOLATILE_APPLE;
- if (ctx->Driver.TextureObjectPurgeable)
- retval = ctx->Driver.TextureObjectPurgeable(ctx, bufObj, option);
-
- return retval;
-}
-
-
-GLenum GLAPIENTRY
-_mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
-{
- GLenum retval;
-
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
-
- if (name == 0) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectPurgeable(name = 0x%x)", name);
- return 0;
- }
-
- switch (option) {
- case GL_VOLATILE_APPLE:
- case GL_RELEASED_APPLE:
- /* legal */
- break;
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glObjectPurgeable(name = 0x%x) invalid option: %d",
- name, option);
- return 0;
- }
-
- switch (objectType) {
- case GL_TEXTURE:
- retval = texture_object_purgeable(ctx, name, option);
- break;
- case GL_BUFFER_OBJECT_APPLE:
- retval = buffer_object_purgeable(ctx, name, option);
- break;
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glObjectPurgeable(name = 0x%x) invalid type: %d",
- name, objectType);
- return 0;
- }
-
- /* In strict conformance to the spec, we must only return VOLATILE when
- * when passed the VOLATILE option. Madness.
- *
- * XXX First fix the spec, then fix me.
- */
- return option == GL_VOLATILE_APPLE ? GL_VOLATILE_APPLE : retval;
-}
-
-
-static GLenum
-buffer_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
-{
- struct gl_buffer_object *bufObj;
- GLenum retval;
-
- bufObj = _mesa_lookup_bufferobj(ctx, name);
- if (!bufObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectUnpurgeable(name = 0x%x)", name);
- return 0;
- }
-
- if (! bufObj->Purgeable) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glObjectUnpurgeable(name = 0x%x) object is "
- " already \"unpurged\"", name);
- return 0;
- }
-
- bufObj->Purgeable = GL_FALSE;
-
- retval = option;
- if (ctx->Driver.BufferObjectUnpurgeable)
- retval = ctx->Driver.BufferObjectUnpurgeable(ctx, bufObj, option);
-
- return retval;
-}
-
-static GLenum
-texture_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
-{
- struct gl_texture_object *bufObj;
- GLenum retval;
-
- bufObj = _mesa_lookup_texture(ctx, name);
- if (!bufObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectUnpurgeable(name = 0x%x)", name);
- return 0;
- }
-
- if (! bufObj->Purgeable) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glObjectUnpurgeable(name = 0x%x) object is"
- " already \"unpurged\"", name);
- return 0;
- }
-
- bufObj->Purgeable = GL_FALSE;
-
- retval = option;
- if (ctx->Driver.TextureObjectUnpurgeable)
- retval = ctx->Driver.TextureObjectUnpurgeable(ctx, bufObj, option);
-
- return retval;
-}
-
-
-GLenum GLAPIENTRY
-_mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
-
- if (name == 0) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectUnpurgeable(name = 0x%x)", name);
- return 0;
- }
-
- switch (option) {
- case GL_RETAINED_APPLE:
- case GL_UNDEFINED_APPLE:
- /* legal */
- break;
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glObjectUnpurgeable(name = 0x%x) invalid option: %d",
- name, option);
- return 0;
- }
-
- switch (objectType) {
- case GL_BUFFER_OBJECT_APPLE:
- return buffer_object_unpurgeable(ctx, name, option);
- case GL_TEXTURE:
- return texture_object_unpurgeable(ctx, name, option);
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glObjectUnpurgeable(name = 0x%x) invalid type: %d",
- name, objectType);
- return 0;
- }
-}
-
-
-static void
-get_buffer_object_parameteriv(struct gl_context *ctx, GLuint name,
- GLenum pname, GLint *params)
-{
- struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, name);
- if (!bufObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glGetObjectParameteriv(name = 0x%x) invalid object", name);
- return;
- }
-
- switch (pname) {
- case GL_PURGEABLE_APPLE:
- *params = bufObj->Purgeable;
- break;
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetObjectParameteriv(name = 0x%x) invalid enum: %d",
- name, pname);
- break;
- }
-}
-
-static void
-get_texture_object_parameteriv(struct gl_context *ctx, GLuint name,
- GLenum pname, GLint *params)
-{
- struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, name);
- if (!texObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glObjectUnpurgeable(name = 0x%x)", name);
- return;
- }
-
- switch (pname) {
- case GL_PURGEABLE_APPLE:
- *params = texObj->Purgeable;
- break;
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetObjectParameteriv(name = 0x%x) invalid enum: %d",
- name, pname);
- break;
- }
-}
-
-
-void GLAPIENTRY
-_mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname,
- GLint *params)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (name == 0) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glGetObjectParameteriv(name = 0x%x)", name);
- return;
- }
-
- switch (objectType) {
- case GL_TEXTURE:
- get_texture_object_parameteriv(ctx, name, pname, params);
- break;
- case GL_BUFFER_OBJECT_APPLE:
- get_buffer_object_parameteriv(ctx, name, pname, params);
- break;
- default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetObjectParameteriv(name = 0x%x) invalid type: %d",
- name, objectType);
- }
-}
-
-#endif /* FEATURE_APPLE_object_purgeable */
Modified: trunk/reactos/dll/opengl/mesa/main/context.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/conte…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/context.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/context.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -494,7 +494,7 @@
_mesa_init_scissor( ctx );
_mesa_init_stencil( ctx );
_mesa_init_transform( ctx );
- _mesa_init_varray( ctx );
+ _mesa_init_varray(ctx, &ctx->Array);
_mesa_init_viewport( ctx );
if (!_mesa_init_texture( ctx ))
@@ -748,9 +748,7 @@
_mesa_free_texture_data( ctx );
_mesa_free_matrix_data( ctx );
_mesa_free_viewport_data( ctx );
- _mesa_free_varray_data(ctx);
-
- _mesa_delete_array_object(ctx, ctx->Array.DefaultArrayObj);
+ _mesa_free_varray_data(ctx, &ctx->Array);
_mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, NULL);
Modified: trunk/reactos/dll/opengl/mesa/main/dd.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/dd.h?…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/dd.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/dd.h [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -561,31 +561,6 @@
GLboolean (*UnmapBuffer)( struct gl_context *ctx,
struct gl_buffer_object *obj );
- /*@}*/
-
- /**
- * \name Functions for GL_APPLE_object_purgeable
- */
- /*@{*/
- /* variations on ObjectPurgeable */
- GLenum (*BufferObjectPurgeable)( struct gl_context *ctx, struct gl_buffer_object *obj,
GLenum option );
- GLenum (*RenderObjectPurgeable)( struct gl_context *ctx, struct gl_renderbuffer *obj,
GLenum option );
- GLenum (*TextureObjectPurgeable)( struct gl_context *ctx, struct gl_texture_object
*obj, GLenum option );
-
- /* variations on ObjectUnpurgeable */
- GLenum (*BufferObjectUnpurgeable)( struct gl_context *ctx, struct gl_buffer_object
*obj, GLenum option );
- GLenum (*RenderObjectUnpurgeable)( struct gl_context *ctx, struct gl_renderbuffer
*obj, GLenum option );
- GLenum (*TextureObjectUnpurgeable)( struct gl_context *ctx, struct gl_texture_object
*obj, GLenum option );
- /*@}*/
-
-
- /**
- * \name Vertex Array objects
- */
- /*@{*/
- struct gl_array_object * (*NewArrayObject)(struct gl_context *ctx, GLuint id);
- void (*DeleteArrayObject)(struct gl_context *ctx, struct gl_array_object *obj);
- void (*BindArrayObject)(struct gl_context *ctx, struct gl_array_object *obj);
/*@}*/
Modified: trunk/reactos/dll/opengl/mesa/main/dispatch.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/dispa…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/dispatch.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/dispatch.h [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -478,8 +478,6 @@
#define _gloffset_GetActiveAttribARB 569
#define _gloffset_FlushMappedBufferRange 580
#define _gloffset_MapBufferRange 581
-#define _gloffset_BindVertexArray 583
-#define _gloffset_GenVertexArrays 584
#define _gloffset_TexStorage1D 685
#define _gloffset_TexStorage2D 686
#define _gloffset_TexStorage3D 687
@@ -623,10 +621,6 @@
#define _gloffset_PointParameteriNV 863
#define _gloffset_PointParameterivNV 864
#define _gloffset_ActiveStencilFaceEXT 865
-#define _gloffset_BindVertexArrayAPPLE 866
-#define _gloffset_DeleteVertexArraysAPPLE 867
-#define _gloffset_GenVertexArraysAPPLE 868
-#define _gloffset_IsVertexArrayAPPLE 869
#define _gloffset_GetProgramNamedParameterdvNV 870
#define _gloffset_GetProgramNamedParameterfvNV 871
#define _gloffset_ProgramNamedParameter4dNV 872
@@ -698,8 +692,6 @@
#define VertexAttribDivisorARB_remap_index 171
#define FlushMappedBufferRange_remap_index 172
#define MapBufferRange_remap_index 173
-#define BindVertexArray_remap_index 175
-#define GenVertexArrays_remap_index 176
#define TexStorage1D_remap_index 277
#define TexStorage2D_remap_index 278
#define TexStorage3D_remap_index 279
@@ -844,10 +836,6 @@
#define PointParameteriNV_remap_index 455
#define PointParameterivNV_remap_index 456
#define ActiveStencilFaceEXT_remap_index 457
-#define BindVertexArrayAPPLE_remap_index 458
-#define DeleteVertexArraysAPPLE_remap_index 459
-#define GenVertexArraysAPPLE_remap_index 460
-#define IsVertexArrayAPPLE_remap_index 461
#define GetProgramNamedParameterdvNV_remap_index 462
#define GetProgramNamedParameterfvNV_remap_index 463
#define ProgramNamedParameter4dNV_remap_index 464
@@ -912,8 +900,6 @@
#define _gloffset_GetAttribLocationARB
driDispatchRemapTable[GetAttribLocationARB_remap_index]
#define _gloffset_FlushMappedBufferRange
driDispatchRemapTable[FlushMappedBufferRange_remap_index]
#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index]
-#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index]
-#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index]
#define _gloffset_TexStorage1D driDispatchRemapTable[TexStorage1D_remap_index]
#define _gloffset_TexStorage2D driDispatchRemapTable[TexStorage2D_remap_index]
#define _gloffset_TexStorage3D driDispatchRemapTable[TexStorage3D_remap_index]
@@ -1057,10 +1043,6 @@
#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index]
#define _gloffset_PointParameterivNV
driDispatchRemapTable[PointParameterivNV_remap_index]
#define _gloffset_ActiveStencilFaceEXT
driDispatchRemapTable[ActiveStencilFaceEXT_remap_index]
-#define _gloffset_BindVertexArrayAPPLE
driDispatchRemapTable[BindVertexArrayAPPLE_remap_index]
-#define _gloffset_DeleteVertexArraysAPPLE
driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index]
-#define _gloffset_GenVertexArraysAPPLE
driDispatchRemapTable[GenVertexArraysAPPLE_remap_index]
-#define _gloffset_IsVertexArrayAPPLE
driDispatchRemapTable[IsVertexArrayAPPLE_remap_index]
#define _gloffset_GetProgramNamedParameterdvNV
driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index]
#define _gloffset_GetProgramNamedParameterfvNV
driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index]
#define _gloffset_ProgramNamedParameter4dNV
driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index]
@@ -5577,28 +5559,6 @@
SET_by_offset(disp, _gloffset_MapBufferRange, fn);
}
-typedef void (GLAPIENTRYP _glptr_BindVertexArray)(GLuint);
-#define CALL_BindVertexArray(disp, parameters) \
- (* GET_BindVertexArray(disp)) parameters
-static inline _glptr_BindVertexArray GET_BindVertexArray(struct _glapi_table *disp) {
- return (_glptr_BindVertexArray) (GET_by_offset(disp, _gloffset_BindVertexArray));
-}
-
-static inline void SET_BindVertexArray(struct _glapi_table *disp, void (GLAPIENTRYP
fn)(GLuint)) {
- SET_by_offset(disp, _gloffset_BindVertexArray, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenVertexArrays)(GLsizei, GLuint *);
-#define CALL_GenVertexArrays(disp, parameters) \
- (* GET_GenVertexArrays(disp)) parameters
-static inline _glptr_GenVertexArrays GET_GenVertexArrays(struct _glapi_table *disp) {
- return (_glptr_GenVertexArrays) (GET_by_offset(disp, _gloffset_GenVertexArrays));
-}
-
-static inline void SET_GenVertexArrays(struct _glapi_table *disp, void (GLAPIENTRYP
fn)(GLsizei, GLuint *)) {
- SET_by_offset(disp, _gloffset_GenVertexArrays, fn);
-}
-
typedef void (GLAPIENTRYP _glptr_TexStorage1D)(GLenum, GLsizei, GLenum, GLsizei);
#define CALL_TexStorage1D(disp, parameters) \
(* GET_TexStorage1D(disp)) parameters
@@ -7172,50 +7132,6 @@
SET_by_offset(disp, _gloffset_ActiveStencilFaceEXT, fn);
}
-typedef void (GLAPIENTRYP _glptr_BindVertexArrayAPPLE)(GLuint);
-#define CALL_BindVertexArrayAPPLE(disp, parameters) \
- (* GET_BindVertexArrayAPPLE(disp)) parameters
-static inline _glptr_BindVertexArrayAPPLE GET_BindVertexArrayAPPLE(struct _glapi_table
*disp) {
- return (_glptr_BindVertexArrayAPPLE) (GET_by_offset(disp,
_gloffset_BindVertexArrayAPPLE));
-}
-
-static inline void SET_BindVertexArrayAPPLE(struct _glapi_table *disp, void (GLAPIENTRYP
fn)(GLuint)) {
- SET_by_offset(disp, _gloffset_BindVertexArrayAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_DeleteVertexArraysAPPLE)(GLsizei, const GLuint *);
-#define CALL_DeleteVertexArraysAPPLE(disp, parameters) \
- (* GET_DeleteVertexArraysAPPLE(disp)) parameters
-static inline _glptr_DeleteVertexArraysAPPLE GET_DeleteVertexArraysAPPLE(struct
_glapi_table *disp) {
- return (_glptr_DeleteVertexArraysAPPLE) (GET_by_offset(disp,
_gloffset_DeleteVertexArraysAPPLE));
-}
-
-static inline void SET_DeleteVertexArraysAPPLE(struct _glapi_table *disp, void
(GLAPIENTRYP fn)(GLsizei, const GLuint *)) {
- SET_by_offset(disp, _gloffset_DeleteVertexArraysAPPLE, fn);
-}
-
-typedef void (GLAPIENTRYP _glptr_GenVertexArraysAPPLE)(GLsizei, GLuint *);
-#define CALL_GenVertexArraysAPPLE(disp, parameters) \
- (* GET_GenVertexArraysAPPLE(disp)) parameters
-static inline _glptr_GenVertexArraysAPPLE GET_GenVertexArraysAPPLE(struct _glapi_table
*disp) {
- return (_glptr_GenVertexArraysAPPLE) (GET_by_offset(disp,
_gloffset_GenVertexArraysAPPLE));
-}
-
-static inline void SET_GenVertexArraysAPPLE(struct _glapi_table *disp, void (GLAPIENTRYP
fn)(GLsizei, GLuint *)) {
- SET_by_offset(disp, _gloffset_GenVertexArraysAPPLE, fn);
-}
-
-typedef GLboolean (GLAPIENTRYP _glptr_IsVertexArrayAPPLE)(GLuint);
-#define CALL_IsVertexArrayAPPLE(disp, parameters) \
- (* GET_IsVertexArrayAPPLE(disp)) parameters
-static inline _glptr_IsVertexArrayAPPLE GET_IsVertexArrayAPPLE(struct _glapi_table *disp)
{
- return (_glptr_IsVertexArrayAPPLE) (GET_by_offset(disp,
_gloffset_IsVertexArrayAPPLE));
-}
-
-static inline void SET_IsVertexArrayAPPLE(struct _glapi_table *disp, GLboolean
(GLAPIENTRYP fn)(GLuint)) {
- SET_by_offset(disp, _gloffset_IsVertexArrayAPPLE, fn);
-}
-
typedef void (GLAPIENTRYP _glptr_GetProgramNamedParameterdvNV)(GLuint, GLsizei, const
GLubyte *, GLdouble *);
#define CALL_GetProgramNamedParameterdvNV(disp, parameters) \
(* GET_GetProgramNamedParameterdvNV(disp)) parameters
@@ -7436,39 +7352,6 @@
SET_by_offset(disp, _gloffset_TextureRangeAPPLE, fn);
}
-typedef void (GLAPIENTRYP _glptr_GetObjectParameterivAPPLE)(GLenum, GLuint, GLenum, GLint
*);
-#define CALL_GetObjectParameterivAPPLE(disp, parameters) \
- (* GET_GetObjectParameterivAPPLE(disp)) parameters
-static inline _glptr_GetObjectParameterivAPPLE GET_GetObjectParameterivAPPLE(struct
_glapi_table *disp) {
- return (_glptr_GetObjectParameterivAPPLE) (GET_by_offset(disp,
_gloffset_GetObjectParameterivAPPLE));
-}
-
-static inline void SET_GetObjectParameterivAPPLE(struct _glapi_table *disp, void
(GLAPIENTRYP fn)(GLenum, GLuint, GLenum, GLint *)) {
- SET_by_offset(disp, _gloffset_GetObjectParameterivAPPLE, fn);
-}
-
-typedef GLenum (GLAPIENTRYP _glptr_ObjectPurgeableAPPLE)(GLenum, GLuint, GLenum);
-#define CALL_ObjectPurgeableAPPLE(disp, parameters) \
- (* GET_ObjectPurgeableAPPLE(disp)) parameters
-static inline _glptr_ObjectPurgeableAPPLE GET_ObjectPurgeableAPPLE(struct _glapi_table
*disp) {
- return (_glptr_ObjectPurgeableAPPLE) (GET_by_offset(disp,
_gloffset_ObjectPurgeableAPPLE));
-}
-
-static inline void SET_ObjectPurgeableAPPLE(struct _glapi_table *disp, GLenum
(GLAPIENTRYP fn)(GLenum, GLuint, GLenum)) {
- SET_by_offset(disp, _gloffset_ObjectPurgeableAPPLE, fn);
-}
-
-typedef GLenum (GLAPIENTRYP _glptr_ObjectUnpurgeableAPPLE)(GLenum, GLuint, GLenum);
-#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) \
- (* GET_ObjectUnpurgeableAPPLE(disp)) parameters
-static inline _glptr_ObjectUnpurgeableAPPLE GET_ObjectUnpurgeableAPPLE(struct
_glapi_table *disp) {
- return (_glptr_ObjectUnpurgeableAPPLE) (GET_by_offset(disp,
_gloffset_ObjectUnpurgeableAPPLE));
-}
-
-static inline void SET_ObjectUnpurgeableAPPLE(struct _glapi_table *disp, GLenum
(GLAPIENTRYP fn)(GLenum, GLuint, GLenum)) {
- SET_by_offset(disp, _gloffset_ObjectUnpurgeableAPPLE, fn);
-}
-
typedef GLuint (GLAPIENTRYP _glptr_CreateShaderProgramEXT)(GLenum, const GLchar *);
#define CALL_CreateShaderProgramEXT(disp, parameters) \
(* GET_CreateShaderProgramEXT(disp)) parameters
Modified: trunk/reactos/dll/opengl/mesa/main/dlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/dlist…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/dlist.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/dlist.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -6730,16 +6730,6 @@
SET_PointParameteriNV(table, save_PointParameteriNV);
SET_PointParameterivNV(table, save_PointParameterivNV);
- /* 273. GL_APPLE_vertex_array_object */
- SET_BindVertexArrayAPPLE(table, _mesa_BindVertexArrayAPPLE);
- SET_DeleteVertexArraysAPPLE(table, _mesa_DeleteVertexArraysAPPLE);
- SET_GenVertexArraysAPPLE(table, _mesa_GenVertexArraysAPPLE);
- SET_IsVertexArrayAPPLE(table, _mesa_IsVertexArrayAPPLE);
-
- /* GL_ARB_vertex_array_object */
- SET_BindVertexArray(table, _mesa_BindVertexArray);
- SET_GenVertexArrays(table, _mesa_GenVertexArrays);
-
/* ???. GL_EXT_depth_bounds_test */
SET_DepthBoundsEXT(table, save_DepthBoundsEXT);
@@ -6773,13 +6763,6 @@
#if FEATURE_ARB_map_buffer_range
SET_MapBufferRange(table, _mesa_MapBufferRange); /* no dlist save */
SET_FlushMappedBufferRange(table, _mesa_FlushMappedBufferRange); /* no dl */
-#endif
-
- /* 371. GL_APPLE_object_purgeable */
-#if FEATURE_APPLE_object_purgeable
- SET_ObjectPurgeableAPPLE(table, _mesa_ObjectPurgeableAPPLE);
- SET_ObjectUnpurgeableAPPLE(table, _mesa_ObjectUnpurgeableAPPLE);
- SET_GetObjectParameterivAPPLE(table, _mesa_GetObjectParameterivAPPLE);
#endif
/* GL_EXT_texture_integer */
Modified: trunk/reactos/dll/opengl/mesa/main/enable.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/enabl…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/enable.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/enable.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -41,77 +41,49 @@
static void
client_state(struct gl_context *ctx, GLenum cap, GLboolean state)
{
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
GLbitfield64 flag;
GLboolean *var;
switch (cap) {
case GL_VERTEX_ARRAY:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled;
flag = VERT_BIT_POS;
break;
case GL_NORMAL_ARRAY:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled;
flag = VERT_BIT_NORMAL;
break;
case GL_COLOR_ARRAY:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled;
flag = VERT_BIT_COLOR0;
break;
case GL_INDEX_ARRAY:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled;
flag = VERT_BIT_COLOR_INDEX;
break;
case GL_TEXTURE_COORD_ARRAY:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_TEX].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].Enabled;
flag = VERT_BIT_TEX;
break;
case GL_EDGE_FLAG_ARRAY:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled;
flag = VERT_BIT_EDGEFLAG;
break;
case GL_FOG_COORDINATE_ARRAY_EXT:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled;
flag = VERT_BIT_FOG;
break;
case GL_SECONDARY_COLOR_ARRAY_EXT:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled;
flag = VERT_BIT_COLOR1;
break;
#if FEATURE_point_size_array
case GL_POINT_SIZE_ARRAY_OES:
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled;
+ var = &ctx->Array.VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled;
flag = VERT_BIT_POINT_SIZE;
break;
#endif
-
-#if FEATURE_NV_vertex_program
- case GL_VERTEX_ATTRIB_ARRAY0_NV:
- case GL_VERTEX_ATTRIB_ARRAY1_NV:
- case GL_VERTEX_ATTRIB_ARRAY2_NV:
- case GL_VERTEX_ATTRIB_ARRAY3_NV:
- case GL_VERTEX_ATTRIB_ARRAY4_NV:
- case GL_VERTEX_ATTRIB_ARRAY5_NV:
- case GL_VERTEX_ATTRIB_ARRAY6_NV:
- case GL_VERTEX_ATTRIB_ARRAY7_NV:
- case GL_VERTEX_ATTRIB_ARRAY8_NV:
- case GL_VERTEX_ATTRIB_ARRAY9_NV:
- case GL_VERTEX_ATTRIB_ARRAY10_NV:
- case GL_VERTEX_ATTRIB_ARRAY11_NV:
- case GL_VERTEX_ATTRIB_ARRAY12_NV:
- case GL_VERTEX_ATTRIB_ARRAY13_NV:
- case GL_VERTEX_ATTRIB_ARRAY14_NV:
- case GL_VERTEX_ATTRIB_ARRAY15_NV:
- CHECK_EXTENSION(NV_vertex_program, cap);
- {
- GLint n = (GLint) cap - GL_VERTEX_ATTRIB_ARRAY0_NV;
- ASSERT(VERT_ATTRIB_GENERIC(n) <
Elements(ctx->Array.ArrayObj->VertexAttrib));
- var = &arrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(n)].Enabled;
- flag = VERT_BIT_GENERIC(n);
- }
- break;
-#endif /* FEATURE_NV_vertex_program */
default:
goto invalid_enum_error;
@@ -128,9 +100,9 @@
*var = state;
if (state)
- ctx->Array.ArrayObj->_Enabled |= flag;
+ ctx->Array._Enabled |= flag;
else
- ctx->Array.ArrayObj->_Enabled &= ~flag;
+ ctx->Array._Enabled &= ~flag;
if (ctx->Driver.Enable) {
ctx->Driver.Enable( ctx, cap, state );
@@ -906,24 +878,24 @@
/* client-side state */
case GL_VERTEX_ARRAY:
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled != 0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled != 0);
case GL_NORMAL_ARRAY:
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled !=
0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled != 0);
case GL_COLOR_ARRAY:
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled !=
0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled != 0);
case GL_INDEX_ARRAY:
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled
!= 0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled != 0);
case GL_TEXTURE_COORD_ARRAY:
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX]
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_TEX]
.Enabled != 0);
case GL_EDGE_FLAG_ARRAY:
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled !=
0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled != 0);
case GL_FOG_COORDINATE_ARRAY_EXT:
CHECK_EXTENSION(EXT_fog_coord);
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled != 0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled != 0);
case GL_SECONDARY_COLOR_ARRAY_EXT:
CHECK_EXTENSION(EXT_secondary_color);
- return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled !=
0);
+ return (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled != 0);
#if FEATURE_point_size_array
case GL_POINT_SIZE_ARRAY_OES:
return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled
!= 0);
Modified: trunk/reactos/dll/opengl/mesa/main/extensions.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/exten…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/extensions.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/extensions.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -73,7 +73,6 @@
{ "GL_ARB_texture_mirrored_repeat", o(dummy_true),
2001 },
{ "GL_ARB_texture_storage", o(ARB_texture_storage),
2011 },
{ "GL_ARB_transpose_matrix", o(ARB_transpose_matrix),
1999 },
- { "GL_ARB_vertex_array_object", o(ARB_vertex_array_object),
2006 },
{ "GL_ARB_vertex_buffer_object", o(dummy_true),
2003 },
{ "GL_ARB_window_pos", o(ARB_window_pos),
2001 },
/* EXT extensions */
@@ -112,9 +111,7 @@
{ "GL_EXT_vertex_array", o(dummy_true),
1995 },
/* Vendor extensions */
- { "GL_APPLE_object_purgeable", o(APPLE_object_purgeable),
2006 },
{ "GL_APPLE_packed_pixels", o(APPLE_packed_pixels),
2002 },
- { "GL_APPLE_vertex_array_object",
o(APPLE_vertex_array_object), 2002 },
{ "GL_ATI_blend_equation_separate",
o(EXT_blend_equation_separate), 2003 },
{ "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3),
2002 },
{ "GL_IBM_multimode_draw_arrays",
o(IBM_multimode_draw_arrays), 1998 },
@@ -206,11 +203,6 @@
ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
/*ctx->Extensions.ARB_texture_float = GL_TRUE;*/
ctx->Extensions.ARB_texture_storage = GL_TRUE;
- ctx->Extensions.ARB_vertex_array_object = GL_TRUE;
- ctx->Extensions.APPLE_vertex_array_object = GL_TRUE;
-#if FEATURE_APPLE_object_purgeable
- ctx->Extensions.APPLE_object_purgeable = GL_TRUE;
-#endif
ctx->Extensions.ATI_texture_env_combine3 = GL_TRUE;
ctx->Extensions.EXT_blend_color = GL_TRUE;
ctx->Extensions.EXT_blend_equation_separate = GL_TRUE;
Modified: trunk/reactos/dll/opengl/mesa/main/get.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/get.c…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/get.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/get.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -262,12 +262,10 @@
EXTRA_EXT(NV_point_sprite);
EXTRA_EXT(NV_light_max_exponent);
EXTRA_EXT(EXT_depth_bounds_test);
-EXTRA_EXT(APPLE_vertex_array_object);
EXTRA_EXT(EXT_compiled_vertex_array);
EXTRA_EXT2(NV_point_sprite, ARB_point_sprite);
static const int extra_version_30[] = { EXTRA_VERSION_30, EXTRA_END };
-static const int extra_version_31[] = { EXTRA_VERSION_31, EXTRA_END };
static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END };
#define API_OPENGL_BIT (1 << API_OPENGL)
@@ -739,10 +737,6 @@
{ GL_DEPTH_BOUNDS_EXT, CONTEXT_FLOAT2(Depth.BoundsMin),
extra_EXT_depth_bounds_test },
- /* GL_APPLE_vertex_array_object */
- { GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name),
- extra_APPLE_vertex_array_object },
-
/* GL_EXT_texture_integer */
{ GL_RGBA_INTEGER_MODE_EXT, BUFFER_BOOL(_IntegerColor),
extra_EXT_texture_integer },
@@ -929,7 +923,7 @@
case GL_TEXTURE_COORD_ARRAY_SIZE:
case GL_TEXTURE_COORD_ARRAY_TYPE:
case GL_TEXTURE_COORD_ARRAY_STRIDE:
- array = &ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX];
+ array = &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX];
v->value_int = *(GLuint *) ((char *) array + d->offset);
break;
@@ -1032,7 +1026,7 @@
case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
buffer_obj = (struct gl_buffer_object **)
- ((char *) ctx->Array.ArrayObj + d->offset);
+ ((char *) &ctx->Array + d->offset);
v->value_int = (*buffer_obj)->Name;
break;
case GL_ARRAY_BUFFER_BINDING_ARB:
@@ -1040,10 +1034,10 @@
break;
case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
v->value_int =
- ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX].BufferObj->Name;
+ ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].BufferObj->Name;
break;
case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
- v->value_int = ctx->Array.ArrayObj->ElementArrayBufferObj->Name;
+ v->value_int = ctx->Array.ElementArrayBufferObj->Name;
break;
case GL_FOG_COLOR:
@@ -1195,7 +1189,7 @@
*p = ((char *) ctx + d->offset);
return d;
case LOC_ARRAY:
- *p = ((char *) ctx->Array.ArrayObj + d->offset);
+ *p = ((char *)&ctx->Array + d->offset);
return d;
case LOC_TEXUNIT:
unit = &ctx->Texture.Unit;
Modified: trunk/reactos/dll/opengl/mesa/main/getstring.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/getst…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/getstring.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/getstring.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -125,28 +125,28 @@
switch (pname) {
case GL_VERTEX_ARRAY_POINTER:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Ptr;
break;
case GL_NORMAL_ARRAY_POINTER:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Ptr;
break;
case GL_COLOR_ARRAY_POINTER:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Ptr;
break;
case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Ptr;
break;
case GL_FOG_COORDINATE_ARRAY_POINTER_EXT:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_FOG].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Ptr;
break;
case GL_INDEX_ARRAY_POINTER:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Ptr;
break;
case GL_TEXTURE_COORD_ARRAY_POINTER:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].Ptr;
break;
case GL_EDGE_FLAG_ARRAY_POINTER:
- *params = (GLvoid *)
ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Ptr;
+ *params = (GLvoid *) ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Ptr;
break;
case GL_FEEDBACK_BUFFER_POINTER:
*params = ctx->Feedback.Buffer;
Modified: trunk/reactos/dll/opengl/mesa/main/mtypes.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/mtype…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/mtypes.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/mtypes.h [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -1203,22 +1203,6 @@
_glthread_Mutex Mutex;
/**
- * Does the VAO use ARB semantics or Apple semantics?
- *
- * There are several ways in which ARB_vertex_array_object and
- * APPLE_vertex_array_object VAOs have differing semantics. At the very
- * least,
- *
- * - ARB VAOs require that all array data be sourced from vertex buffer
- * objects, but Apple VAOs do not.
- *
- * - ARB VAOs require that names come from GenVertexArrays.
- *
- * This flag notes which behavior governs this VAO.
- */
- GLboolean ARBsemantics;
-
- /**
* Has this array object been bound?
*/
GLboolean _Used;
@@ -1244,23 +1228,28 @@
*/
struct gl_array_attrib
{
- /** Currently bound array object. See _mesa_BindVertexArrayAPPLE() */
- struct gl_array_object *ArrayObj;
-
- /** The default vertex array object */
- struct gl_array_object *DefaultArrayObj;
-
- /** Array objects (GL_ARB/APPLE_vertex_array_object) */
- struct _mesa_HashTable *Objects;
-
- GLuint LockFirst; /**< GL_EXT_compiled_vertex_array */
- GLuint LockCount; /**< GL_EXT_compiled_vertex_array */
-
- GLbitfield64 NewState; /**< mask of VERT_BIT_* values */
- GLboolean RebindArrays; /**< whether the VBO module should rebind arrays */
-
- /* GL_ARB_vertex_buffer_object */
- struct gl_buffer_object *ArrayBufferObj;
+ /** Vertex attribute arrays */
+ struct gl_client_array VertexAttrib[VERT_ATTRIB_MAX];
+
+ /** Mask of VERT_BIT_* values indicating which arrays are enabled */
+ GLbitfield64 _Enabled;
+
+ /**
+ * Min of all enabled arrays' _MaxElement. When arrays reside inside VBOs
+ * we can determine the max legal (in bounds) glDrawElements array index.
+ */
+ GLuint _MaxElement;
+
+ struct gl_buffer_object *ElementArrayBufferObj;
+
+ GLuint LockFirst; /**< GL_EXT_compiled_vertex_array */
+ GLuint LockCount; /**< GL_EXT_compiled_vertex_array */
+
+ GLbitfield64 NewState; /**< mask of VERT_BIT_* values */
+ GLboolean RebindArrays; /**< whether the VBO module should rebind arrays */
+
+ /* GL_ARB_vertex_buffer_object */
+ struct gl_buffer_object *ArrayBufferObj;
};
@@ -1582,7 +1571,6 @@
GLboolean ARB_texture_env_dot3;
GLboolean ARB_texture_storage;
GLboolean ARB_transpose_matrix;
- GLboolean ARB_vertex_array_object;
GLboolean ARB_window_pos;
GLboolean EXT_blend_color;
GLboolean EXT_blend_equation_separate;
@@ -1606,8 +1594,6 @@
GLboolean EXT_texture_integer;
/* vendor extensions */
GLboolean APPLE_packed_pixels;
- GLboolean APPLE_vertex_array_object;
- GLboolean APPLE_object_purgeable;
GLboolean ATI_texture_env_combine3;
GLboolean IBM_rasterpos_clip;
GLboolean IBM_multimode_draw_arrays;
Modified: trunk/reactos/dll/opengl/mesa/main/precomp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/preco…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/precomp.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/precomp.h [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -6,7 +6,6 @@
#include "api_exec.h"
#include "api_loopback.h"
#include "api_validate.h"
-#include "arrayobj.h"
#include "attrib.h"
#include "blend.h"
#include "bufferobj.h"
Modified: trunk/reactos/dll/opengl/mesa/main/state.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/state…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/state.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/state.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -61,7 +61,6 @@
static void
update_arrays( struct gl_context *ctx )
{
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
GLuint min = ~0;
/* find min of _MaxElement values for all enabled arrays.
@@ -70,46 +69,46 @@
*/
/* 0 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_POS]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_POS].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_POS]);
}
/* 2 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_NORMAL]);
}
/* 3 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR0]);
}
/* 4 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR1]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR1]);
}
/* 5 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_FOG]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_FOG].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_FOG]);
}
/* 6 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_COLOR_INDEX]);
}
/* 8 */
- if (arrayObj->VertexAttrib[VERT_ATTRIB_TEX].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_TEX]);
- }
-
- if (arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) {
- min = update_min(min, &arrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG]);
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_TEX].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_TEX]);
+ }
+
+ if (ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled) {
+ min = update_min(min, &ctx->Array.VertexAttrib[VERT_ATTRIB_EDGEFLAG]);
}
/* _MaxElement is one past the last legal array element */
- arrayObj->_MaxElement = min;
+ ctx->Array._MaxElement = min;
}
static void
Modified: trunk/reactos/dll/opengl/mesa/main/varray.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/varra…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/varray.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/varray.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -118,8 +118,7 @@
return;
}
- if (ctx->Array.ArrayObj->ARBsemantics &&
- !_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) {
+ if (!_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) {
/* GL_ARB_vertex_array_object requires that all arrays reside in VBOs.
* Generate GL_INVALID_OPERATION if that's not true.
*/
@@ -129,7 +128,7 @@
elementSize = _mesa_sizeof_type(type) * size;
- array = &ctx->Array.ArrayObj->VertexAttrib[attrib];
+ array = &ctx->Array.VertexAttrib[attrib];
array->Size = size;
array->Type = type;
array->Stride = stride;
@@ -609,46 +608,22 @@
dst->_MaxElement = src->_MaxElement;
}
-
-
-/**
- * Print vertex array's fields.
- */
static void
-print_array(const char *name, GLint index, const struct gl_client_array *array)
-{
- if (index >= 0)
- printf(" %s[%d]: ", name, index);
- else
- printf(" %s: ", name);
- printf("Ptr=%p, Type=0x%x, Size=%d, ElemSize=%u, Stride=%d, Buffer=%u(Size %lu),
MaxElem=%u\n",
- array->Ptr, array->Type, array->Size,
- array->_ElementSize, array->StrideB,
- array->BufferObj->Name, (unsigned long) array->BufferObj->Size,
- array->_MaxElement);
-}
-
-
-/**
- * Print current vertex object/array info. For debug.
- */
-void
-_mesa_print_arrays(struct gl_context *ctx)
-{
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
-
- _mesa_update_array_object_max_element(ctx, arrayObj);
-
- printf("Array Object %u\n", arrayObj->Name);
- if (arrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled)
- print_array("Vertex", -1,
&arrayObj->VertexAttrib[VERT_ATTRIB_POS]);
- if (arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled)
- print_array("Normal", -1,
&arrayObj->VertexAttrib[VERT_ATTRIB_NORMAL]);
- if (arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled)
- print_array("Color", -1,
&arrayObj->VertexAttrib[VERT_ATTRIB_COLOR0]);
- if (arrayObj->VertexAttrib[VERT_ATTRIB_TEX].Enabled)
- print_array("TexCoord", -1,
&arrayObj->VertexAttrib[VERT_ATTRIB_TEX]);
- printf(" _MaxElement = %u\n", arrayObj->_MaxElement);
+init_array(struct gl_context *ctx,
+ struct gl_client_array *array, GLint size, GLint type)
+{
+ array->Size = size;
+ array->Type = type;
+ array->Stride = 0;
+ array->StrideB = 0;
+ array->Ptr = NULL;
+ array->Enabled = GL_FALSE;
+ array->Normalized = GL_FALSE;
+ array->Integer = GL_FALSE;
+ array->_ElementSize = size * _mesa_sizeof_type(type);
+ /* Vertex array buffers */
+ _mesa_reference_buffer_object(ctx, &array->BufferObj,
+ ctx->Shared->NullBufferObj);
}
@@ -656,25 +631,41 @@
* Initialize vertex array state for given context.
*/
void
-_mesa_init_varray(struct gl_context *ctx)
-{
- ctx->Array.DefaultArrayObj = _mesa_new_array_object(ctx, 0);
- _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj,
- ctx->Array.DefaultArrayObj);
-
- ctx->Array.Objects = _mesa_NewHashTable();
-}
-
-
-/**
- * Callback for deleting an array object. Called by _mesa_HashDeleteAll().
- */
-static void
-delete_arrayobj_cb(GLuint id, void *data, void *userData)
-{
- struct gl_array_object *arrayObj = (struct gl_array_object *) data;
- struct gl_context *ctx = (struct gl_context *) userData;
- _mesa_delete_array_object(ctx, arrayObj);
+_mesa_init_varray(struct gl_context *ctx, struct gl_array_attrib *array)
+{
+ GLuint i;
+
+ /* Init the individual arrays */
+ for (i = 0; i < Elements(array->VertexAttrib); i++) {
+ switch (i) {
+ case VERT_ATTRIB_WEIGHT:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_WEIGHT], 1, GL_FLOAT);
+ break;
+ case VERT_ATTRIB_NORMAL:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_NORMAL], 3, GL_FLOAT);
+ break;
+ case VERT_ATTRIB_COLOR1:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_COLOR1], 3, GL_FLOAT);
+ break;
+ case VERT_ATTRIB_FOG:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_FOG], 1, GL_FLOAT);
+ break;
+ case VERT_ATTRIB_COLOR_INDEX:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_COLOR_INDEX], 1,
GL_FLOAT);
+ break;
+ case VERT_ATTRIB_EDGEFLAG:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_EDGEFLAG], 1,
GL_BOOL);
+ break;
+ #if FEATURE_point_size_array
+ case VERT_ATTRIB_POINT_SIZE:
+ init_array(ctx, &array->VertexAttrib[VERT_ATTRIB_POINT_SIZE], 1,
GL_FLOAT);
+ break;
+ #endif
+ default:
+ init_array(ctx, &array->VertexAttrib[i], 4, GL_FLOAT);
+ break;
+ }
+ }
}
@@ -682,8 +673,14 @@
* Free vertex array state for given context.
*/
void
-_mesa_free_varray_data(struct gl_context *ctx)
-{
- _mesa_HashDeleteAll(ctx->Array.Objects, delete_arrayobj_cb, ctx);
- _mesa_DeleteHashTable(ctx->Array.Objects);
-}
+_mesa_free_varray_data(struct gl_context *ctx, struct gl_array_attrib* array)
+{
+ GLuint i;
+
+ /* Uninit the individual arrays */
+ for (i = 0; i < Elements(array->VertexAttrib); i++)
+ {
+ _mesa_reference_buffer_object(ctx, &array->VertexAttrib[i].BufferObj,
NULL);
+ memset(&array->VertexAttrib[i], 0, sizeof(struct gl_client_array));
+ }
+}
Modified: trunk/reactos/dll/opengl/mesa/main/varray.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/varra…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/varray.h [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/varray.h [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -175,15 +175,11 @@
struct gl_client_array *dst,
struct gl_client_array *src);
-
extern void
-_mesa_print_arrays(struct gl_context *ctx);
-
-extern void
-_mesa_init_varray( struct gl_context * ctx );
+_mesa_init_varray( struct gl_context * ctx, struct gl_array_attrib *array);
extern void
-_mesa_free_varray_data(struct gl_context *ctx);
+_mesa_free_varray_data(struct gl_context *ctx, struct gl_array_attrib *array);
#else
Modified: trunk/reactos/dll/opengl/mesa/main/version.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/main/versi…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/main/version.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/main/version.c [iso-8859-1] Tue Jun 17 09:02:19 2014
@@ -78,8 +78,7 @@
ctx->Extensions.EXT_blend_equation_separate);
const GLboolean ver_2_1 = (ver_2_0);
const GLboolean ver_3_0 = (ver_2_1 &&
- ctx->Extensions.ARB_map_buffer_range &&
- ctx->Extensions.APPLE_vertex_array_object);
+ ctx->Extensions.ARB_map_buffer_range);
if (ver_3_0) {
Modified: trunk/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/vbo/vbo_ex…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/vbo/vbo_exec_array.c [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -224,15 +224,14 @@
check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
const void *elements, GLint basevertex)
{
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
const void *elemMap;
GLint i, k;
- if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
+ if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) {
elemMap = ctx->Driver.MapBufferRange(ctx, 0,
- ctx->Array.ArrayObj->ElementArrayBufferObj->Size,
+ ctx->Array.ElementArrayBufferObj->Size,
GL_MAP_READ_BIT,
- ctx->Array.ArrayObj->ElementArrayBufferObj);
+ ctx->Array.ElementArrayBufferObj);
elements = ADD_POINTERS(elements, elemMap);
}
@@ -255,17 +254,17 @@
}
/* check element j of each enabled array */
- for (k = 0; k < Elements(arrayObj->VertexAttrib); k++) {
- check_array_data(ctx, &arrayObj->VertexAttrib[k], k, j);
- }
- }
-
- if (_mesa_is_bufferobj(arrayObj->ElementArrayBufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, ctx->Array.ArrayObj->ElementArrayBufferObj);
- }
-
- for (k = 0; k < Elements(arrayObj->VertexAttrib); k++) {
- unmap_array_buffer(ctx, &arrayObj->VertexAttrib[k]);
+ for (k = 0; k < Elements(ctx->Array.VertexAttrib); k++) {
+ check_array_data(ctx, &ctx->Array.VertexAttrib[k], k, j);
+ }
+ }
+
+ if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) {
+ ctx->Driver.UnmapBuffer(ctx, ctx->Array.ElementArrayBufferObj);
+ }
+
+ for (k = 0; k < Elements(ctx->Array.VertexAttrib); k++) {
+ unmap_array_buffer(ctx, &ctx->Array.VertexAttrib[k]);
}
}
@@ -289,7 +288,6 @@
{
struct vbo_context *vbo = vbo_context(ctx);
struct vbo_exec_context *exec = &vbo->exec;
- struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
int i;
printf("vbo_exec_DrawArrays(mode 0x%x, start %d, count %d):\n",
@@ -305,7 +303,7 @@
exec->array.inputs[i]->Size,
stride,
/*exec->array.inputs[i]->Enabled,*/
- arrayObj->VertexAttrib[VERT_ATTRIB(i)].Enabled,
+ ctx->Array.VertexAttrib[VERT_ATTRIB(i)].Enabled,
exec->array.inputs[i]->Ptr,
bufName);
@@ -342,7 +340,7 @@
{
struct vbo_context *vbo = vbo_context(ctx);
struct vbo_exec_context *exec = &vbo->exec;
- struct gl_client_array *vertexAttrib = ctx->Array.ArrayObj->VertexAttrib;
+ struct gl_client_array *vertexAttrib = ctx->Array.VertexAttrib;
const struct gl_client_array **inputs = &exec->array.inputs[0];
GLbitfield64 const_inputs = 0x0;
GLuint i;
@@ -546,7 +544,7 @@
ib.count = count;
ib.type = type;
- ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
+ ib.obj = ctx->Array.ElementArrayBufferObj;
ib.ptr = indices;
prim[0].begin = 1;
@@ -619,7 +617,7 @@
return;
if (end < start ||
- end >= ctx->Array.ArrayObj->_MaxElement) {
+ end >= ctx->Array._MaxElement) {
/* The application requested we draw using a range of indices that's
* outside the bounds of the current VBO. This is invalid and appears
* to give undefined results. The safest thing to do is to simply
@@ -633,7 +631,7 @@
"\trange is outside VBO bounds (max=%u); ignoring.\n"
"\tThis should be fixed in the application.",
start, end, count, type, indices,
- ctx->Array.ArrayObj->_MaxElement - 1);
+ ctx->Array._MaxElement - 1);
}
index_bounds_valid = GL_FALSE;
}
@@ -658,7 +656,7 @@
printf("glDraw[Range]Elements"
"(start %u, end %u, type 0x%x, count %d) ElemBuf %u\n",
start, end, type, count,
- ctx->Array.ArrayObj->ElementArrayBufferObj->Name);
+ ctx->Array.ElementArrayBufferObj->Name);
}
#if 0
Modified: trunk/reactos/dll/opengl/mesa/vbo/vbo_save_api.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/opengl/mesa/vbo/vbo_sa…
==============================================================================
--- trunk/reactos/dll/opengl/mesa/vbo/vbo_save_api.c [iso-8859-1] (original)
+++ trunk/reactos/dll/opengl/mesa/vbo/vbo_save_api.c [iso-8859-1] Tue Jun 17 09:02:19
2014
@@ -1084,9 +1084,8 @@
_ae_map_vbos(ctx);
- if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj))
- indices =
- ADD_POINTERS(ctx->Array.ArrayObj->ElementArrayBufferObj->Pointer,
indices);
+ if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj))
+ indices = ADD_POINTERS(ctx->Array.ElementArrayBufferObj->Pointer, indices);
vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_WEAK |
VBO_SAVE_PRIM_NO_CURRENT_UPDATE));