On Tue, Sep 20, 2011 at 08:51:26AM -0600, Brian Paul wrote: > On 09/20/2011 08:36 AM, Brian Paul wrote: > >On 09/19/2011 08:39 PM, Yuanhan Liu wrote: > >>On Mon, Sep 19, 2011 at 08:09:09AM -0600, Brian Paul wrote: > >>>On 09/19/2011 01:02 AM, Yuanhan Liu wrote: > >>>>According to opengl spec, trigger GL_INVALID_ENUM error if mode is > >>>>not > >>>>one of those valid primitive mode while calling glBegin. > >>>> > >>>>Signed-off-by: Yuanhan Liu<yuanhan....@linux.intel.com> > >>>>--- > >>>>src/mesa/vbo/vbo_exec_api.c | 24 ++++++++++++++++++++++++ > >>>>1 files changed, 24 insertions(+), 0 deletions(-) > >>>> > >>>>diff --git a/src/mesa/vbo/vbo_exec_api.c > >>>>b/src/mesa/vbo/vbo_exec_api.c > >>>>index cad7c46..72f9661 100644 > >>>>--- a/src/mesa/vbo/vbo_exec_api.c > >>>>+++ b/src/mesa/vbo/vbo_exec_api.c > >>>>@@ -552,6 +552,25 @@ static void GLAPIENTRY vbo_exec_EvalPoint2( > >>>>GLint i, GLint j ) > >>>>#endif /* FEATURE_evaluators */ > >>>> > >>>> > >>>>+static GLboolean _mesa_valid_prim_mode(GLenum mode) > >>>>+{ > >>>>+ switch(mode) { > >>>>+ case GL_POINTS: > >>>>+ case GL_LINES: > >>>>+ case GL_LINE_LOOP: > >>>>+ case GL_LINE_STRIP: > >>>>+ case GL_TRIANGLES: > >>>>+ case GL_TRIANGLE_STRIP: > >>>>+ case GL_TRIANGLE_FAN: > >>>>+ case GL_QUADS: > >>>>+ case GL_QUAD_STRIP: > >>>>+ case GL_POLYGON: > >>>>+ return GL_TRUE; > >>>>+ default: > >>>>+ return GL_FALSE; > >>>>+ } > >>>>+} > >>>>+ > >>>>/** > >>>>* Called via glBegin. > >>>>*/ > >>>>@@ -570,6 +589,11 @@ static void GLAPIENTRY vbo_exec_Begin( GLenum > >>>>mode ) > >>>>return; > >>>>} > >>>> > >>>>+ if (!_mesa_valid_prim_mode(mode)) { > >>>>+ _mesa_error(ctx, GL_INVALID_ENUM, "glBegin"); > >>>>+ return; > >>>>+ } > >>>>+ > >>>>if (!_mesa_valid_to_render(ctx, "glBegin")) { > >>>>return; > >>>>} > >>> > >>>I think we're actually validating the prim mode elsewhere, but it > >>>looks like we're not generating GL_INVALID_ENUM as we should. Could > >>>you investigate this a bit further? > >> > >>From my investigation, nope. I didn't find it does check both at the > >>glBegin call > >>time and the draw execution time. > > > >Hmmm, you're right. I couldn't find the validation code either (except > >on the display list path). > > > >I'll apply your original patch soon. > > Scratch that. I've got a new patch that also properly checks the > mode for glDrawArrays, glDrawElements, etc.
Yeah, I should check those too. Thanks. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev