X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fpolygon.c;h=d7d52daa89ef1cddd532323e732c66f100385174;hb=66159f94a5ce00b2e7c06766d7d1ecc1208c2f69;hp=376a87a396770a8996980b27cd48d9dda9004d4b;hpb=b8e1e8d2d8ae6ffbf8f271b46ee89788a926b3b0;p=mesa.git diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c index 376a87a3967..d7d52daa89e 100644 --- a/src/mesa/main/polygon.c +++ b/src/mesa/main/polygon.c @@ -30,11 +30,11 @@ #include "glheader.h" #include "imports.h" -#include "bufferobj.h" #include "context.h" #include "image.h" #include "enums.h" -#include "macros.h" +#include "pack.h" +#include "pbo.h" #include "polygon.h" #include "mtypes.h" @@ -143,6 +143,10 @@ _mesa_PolygonMode( GLenum face, GLenum mode ) switch (face) { case GL_FRONT: + if (ctx->API == API_OPENGL_CORE) { + _mesa_error( ctx, GL_INVALID_ENUM, "glPolygonMode(face)" ); + return; + } if (ctx->Polygon.FrontMode == mode) return; FLUSH_VERTICES(ctx, _NEW_POLYGON); @@ -157,6 +161,10 @@ _mesa_PolygonMode( GLenum face, GLenum mode ) ctx->Polygon.BackMode = mode; break; case GL_BACK: + if (ctx->API == API_OPENGL_CORE) { + _mesa_error( ctx, GL_INVALID_ENUM, "glPolygonMode(face)" ); + return; + } if (ctx->Polygon.BackMode == mode) return; FLUSH_VERTICES(ctx, _NEW_POLYGON); @@ -191,11 +199,12 @@ _mesa_PolygonMode( GLenum face, GLenum mode ) * too. */ void -_mesa_polygon_stipple(GLcontext *ctx, const GLubyte *pattern) +_mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern) { pattern = _mesa_map_validate_pbo_source(ctx, 2, &ctx->Unpack, 32, 32, 1, - GL_COLOR_INDEX, GL_BITMAP, pattern, + GL_COLOR_INDEX, GL_BITMAP, + INT_MAX, pattern, "glPolygonStipple"); if (!pattern) return; @@ -231,7 +240,7 @@ _mesa_PolygonStipple( const GLubyte *pattern ) * Called by glPolygonStipple. */ void GLAPIENTRY -_mesa_GetPolygonStipple( GLubyte *dest ) +_mesa_GetnPolygonStippleARB( GLsizei bufSize, GLubyte *dest ) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -241,8 +250,8 @@ _mesa_GetPolygonStipple( GLubyte *dest ) dest = _mesa_map_validate_pbo_dest(ctx, 2, &ctx->Pack, 32, 32, 1, - GL_COLOR_INDEX, GL_BITMAP, dest, - "glGetPolygonStipple"); + GL_COLOR_INDEX, GL_BITMAP, + bufSize, dest, "glGetPolygonStipple"); if (!dest) return; @@ -252,6 +261,13 @@ _mesa_GetPolygonStipple( GLubyte *dest ) } +void GLAPIENTRY +_mesa_GetPolygonStipple( GLubyte *dest ) +{ + _mesa_GetnPolygonStippleARB(INT_MAX, dest); +} + + void GLAPIENTRY _mesa_PolygonOffset( GLfloat factor, GLfloat units ) { @@ -294,10 +310,10 @@ _mesa_PolygonOffsetEXT( GLfloat factor, GLfloat bias ) * * \param ctx GL context. * - * Initializes __GLcontextRec::Polygon and __GLcontextRec::PolygonStipple + * Initializes __struct gl_contextRec::Polygon and __struct gl_contextRec::PolygonStipple * attribute groups. */ -void _mesa_init_polygon( GLcontext * ctx ) +void _mesa_init_polygon( struct gl_context * ctx ) { /* Polygon group */ ctx->Polygon.CullFlag = GL_FALSE; @@ -316,7 +332,7 @@ void _mesa_init_polygon( GLcontext * ctx ) /* Polygon Stipple group */ - MEMSET( ctx->PolygonStipple, 0xff, 32*sizeof(GLuint) ); + memset( ctx->PolygonStipple, 0xff, 32*sizeof(GLuint) ); } /*@}*/