mesa: point size arrays
This commit is contained in:

committed by
Keith Whitwell

parent
f8e50dd796
commit
1cf2c8a043
@@ -164,6 +164,15 @@ _mesa_initialize_array_object( GLcontext *ctx,
|
||||
obj->VertexAttrib[i].Normalized = GL_FALSE;
|
||||
}
|
||||
|
||||
#if FEATURE_point_size_array
|
||||
obj->PointSize.Type = GL_FLOAT;
|
||||
obj->PointSize.Stride = 0;
|
||||
obj->PointSize.StrideB = 0;
|
||||
obj->PointSize.Ptr = NULL;
|
||||
obj->PointSize.Enabled = GL_FALSE;
|
||||
obj->PointSize.BufferObj = ctx->Array.NullBufferObj;
|
||||
#endif
|
||||
|
||||
#if FEATURE_ARB_vertex_buffer_object
|
||||
/* Vertex array buffers */
|
||||
obj->Vertex.BufferObj = ctx->Array.NullBufferObj;
|
||||
|
@@ -93,6 +93,13 @@ client_state(GLcontext *ctx, GLenum cap, GLboolean state)
|
||||
flag = _NEW_ARRAY_COLOR1;
|
||||
break;
|
||||
|
||||
#if FEATURE_point_size_array
|
||||
case GL_POINT_SIZE_ARRAY_OES:
|
||||
var = &ctx->Array.ArrayObj->PointSize.Enabled;
|
||||
flag = _NEW_ARRAY_POINT_SIZE;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if FEATURE_NV_vertex_program
|
||||
case GL_VERTEX_ATTRIB_ARRAY0_NV:
|
||||
case GL_VERTEX_ATTRIB_ARRAY1_NV:
|
||||
@@ -665,6 +672,7 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state)
|
||||
case GL_EDGE_FLAG_ARRAY:
|
||||
case GL_FOG_COORDINATE_ARRAY_EXT:
|
||||
case GL_SECONDARY_COLOR_ARRAY_EXT:
|
||||
case GL_POINT_SIZE_ARRAY_OES:
|
||||
client_state( ctx, cap, state );
|
||||
return;
|
||||
|
||||
@@ -1189,6 +1197,10 @@ _mesa_IsEnabled( GLenum cap )
|
||||
case GL_SECONDARY_COLOR_ARRAY_EXT:
|
||||
CHECK_EXTENSION(EXT_secondary_color);
|
||||
return (ctx->Array.ArrayObj->SecondaryColor.Enabled != 0);
|
||||
#if FEATURE_point_size_array
|
||||
case GL_POINT_SIZE_ARRAY_OES:
|
||||
return (ctx->Array.ArrayObj->PointSize.Enabled != 0);
|
||||
#endif
|
||||
|
||||
/* GL_EXT_histogram */
|
||||
case GL_HISTOGRAM:
|
||||
|
@@ -166,6 +166,16 @@
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef GL_OES_point_size_array
|
||||
#define GL_POINT_SIZE_ARRAY_OES 0x8B9C
|
||||
#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A
|
||||
#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B
|
||||
#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C
|
||||
#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(CAPI) && defined(WIN32) && !defined(BUILD_FOR_SNAP)
|
||||
#define CAPI _cdecl
|
||||
#endif
|
||||
|
@@ -49,6 +49,7 @@
|
||||
#define FEATURE_fixedpt 0
|
||||
#define FEATURE_histogram _HAVE_FULL_GL
|
||||
#define FEATURE_pixel_transfer _HAVE_FULL_GL
|
||||
#define FEATURE_point_size_array 0
|
||||
#define FEATURE_texgen _HAVE_FULL_GL
|
||||
#define FEATURE_texture_fxt1 _HAVE_FULL_GL
|
||||
#define FEATURE_texture_s3tc _HAVE_FULL_GL
|
||||
|
@@ -1693,6 +1693,7 @@ struct gl_array_object
|
||||
struct gl_client_array Index;
|
||||
struct gl_client_array EdgeFlag;
|
||||
struct gl_client_array TexCoord[MAX_TEXTURE_COORD_UNITS];
|
||||
struct gl_client_array PointSize;
|
||||
/*@}*/
|
||||
|
||||
/** Generic arrays for vertex programs/shaders */
|
||||
@@ -2734,6 +2735,7 @@ struct gl_matrix_stack
|
||||
#define _NEW_ARRAY_FOGCOORD VERT_BIT_FOG
|
||||
#define _NEW_ARRAY_INDEX VERT_BIT_COLOR_INDEX
|
||||
#define _NEW_ARRAY_EDGEFLAG VERT_BIT_EDGEFLAG
|
||||
#define _NEW_ARRAY_POINT_SIZE VERT_BIT_COLOR_INDEX /* aliased */
|
||||
#define _NEW_ARRAY_TEXCOORD_0 VERT_BIT_TEX0
|
||||
#define _NEW_ARRAY_TEXCOORD_1 VERT_BIT_TEX1
|
||||
#define _NEW_ARRAY_TEXCOORD_2 VERT_BIT_TEX2
|
||||
@@ -2751,6 +2753,7 @@ struct gl_matrix_stack
|
||||
/*@}*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \name A bunch of flags that we think might be useful to drivers.
|
||||
*
|
||||
|
@@ -463,6 +463,37 @@ _mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr)
|
||||
}
|
||||
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_PointSizePointer(GLenum type, GLsizei stride, const GLvoid *ptr)
|
||||
{
|
||||
GLsizei elementSize;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
if (stride < 0) {
|
||||
_mesa_error( ctx, GL_INVALID_VALUE, "glPointSizePointer(stride)" );
|
||||
return;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case GL_FLOAT:
|
||||
elementSize = sizeof(GLfloat);
|
||||
break;
|
||||
#if FEATURE_fixedpt
|
||||
case GL_FIXED:
|
||||
elementSize = sizeof(GLfixed);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glPointSizePointer(type)" );
|
||||
return;
|
||||
}
|
||||
|
||||
update_array(ctx, &ctx->Array.ArrayObj->PointSize, _NEW_ARRAY_POINT_SIZE,
|
||||
elementSize, 1, type, stride, GL_FALSE, ptr);
|
||||
}
|
||||
|
||||
|
||||
#if FEATURE_NV_vertex_program
|
||||
void GLAPIENTRY
|
||||
_mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type,
|
||||
|
@@ -111,6 +111,10 @@ _mesa_SecondaryColorPointerEXT(GLint size, GLenum type,
|
||||
GLsizei stride, const GLvoid *ptr);
|
||||
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_PointSizePointer(GLenum type, GLsizei stride, const GLvoid *ptr);
|
||||
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_VertexAttribPointerNV(GLuint index, GLint size, GLenum type,
|
||||
GLsizei stride, const GLvoid *pointer);
|
||||
|
@@ -105,6 +105,10 @@ static void bind_array_obj( GLcontext *ctx )
|
||||
exec->array.legacy_array[VERT_ATTRIB_COLOR1] = &ctx->Array.ArrayObj->SecondaryColor;
|
||||
exec->array.legacy_array[VERT_ATTRIB_FOG] = &ctx->Array.ArrayObj->FogCoord;
|
||||
exec->array.legacy_array[VERT_ATTRIB_COLOR_INDEX] = &ctx->Array.ArrayObj->Index;
|
||||
if (ctx->Array.ArrayObj->PointSize.Enabled) {
|
||||
/* this aliases COLOR_INDEX */
|
||||
exec->array.legacy_array[VERT_ATTRIB_POINT_SIZE] = &ctx->Array.ArrayObj->PointSize;
|
||||
}
|
||||
exec->array.legacy_array[VERT_ATTRIB_EDGEFLAG] = &ctx->Array.ArrayObj->EdgeFlag;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
|
Reference in New Issue
Block a user