Home | History | Annotate | Download | only in main
      1 
      2 /*
      3  * Mesa 3-D graphics library
      4  *
      5  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
      6  *
      7  * Permission is hereby granted, free of charge, to any person obtaining a
      8  * copy of this software and associated documentation files (the "Software"),
      9  * to deal in the Software without restriction, including without limitation
     10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     11  * and/or sell copies of the Software, and to permit persons to whom the
     12  * Software is furnished to do so, subject to the following conditions:
     13  *
     14  * The above copyright notice and this permission notice shall be included
     15  * in all copies or substantial portions of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     20  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
     21  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     22  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     23  * OTHER DEALINGS IN THE SOFTWARE.
     24  */
     25 
     26 
     27 #ifndef API_VALIDATE_H
     28 #define API_VALIDATE_H
     29 
     30 #include <stdbool.h>
     31 #include "glheader.h"
     32 
     33 struct gl_buffer_object;
     34 struct gl_context;
     35 struct gl_transform_feedback_object;
     36 
     37 
     38 extern GLboolean
     39 _mesa_valid_to_render(struct gl_context *ctx, const char *where);
     40 
     41 extern bool
     42 _mesa_is_valid_prim_mode(struct gl_context *ctx, GLenum mode);
     43 
     44 extern GLboolean
     45 _mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name);
     46 
     47 
     48 extern GLboolean
     49 _mesa_validate_DrawArrays(struct gl_context *ctx, GLenum mode, GLsizei count);
     50 
     51 extern GLboolean
     52 _mesa_validate_DrawElements(struct gl_context *ctx,
     53 			    GLenum mode, GLsizei count, GLenum type,
     54 			    const GLvoid *indices);
     55 
     56 extern GLboolean
     57 _mesa_validate_MultiDrawElements(struct gl_context *ctx,
     58                                  GLenum mode, const GLsizei *count,
     59                                  GLenum type, const GLvoid * const *indices,
     60                                  GLsizei primcount);
     61 
     62 extern GLboolean
     63 _mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode,
     64 				 GLuint start, GLuint end,
     65 				 GLsizei count, GLenum type,
     66 				 const GLvoid *indices);
     67 
     68 
     69 extern GLboolean
     70 _mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint first,
     71                                    GLsizei count, GLsizei primcount);
     72 
     73 extern GLboolean
     74 _mesa_validate_DrawElementsInstanced(struct gl_context *ctx,
     75                                      GLenum mode, GLsizei count, GLenum type,
     76                                      const GLvoid *indices, GLsizei primcount);
     77 
     78 extern GLboolean
     79 _mesa_validate_DrawTransformFeedback(struct gl_context *ctx,
     80                                      GLenum mode,
     81                                      struct gl_transform_feedback_object *obj,
     82                                      GLuint stream,
     83                                      GLsizei numInstances);
     84 
     85 extern GLboolean
     86 _mesa_validate_DrawArraysIndirect(struct gl_context *ctx,
     87                                   GLenum mode,
     88                                   const GLvoid *indirect);
     89 
     90 extern GLboolean
     91 _mesa_validate_DrawElementsIndirect(struct gl_context *ctx,
     92                                     GLenum mode,
     93                                     GLenum type,
     94                                     const GLvoid *indirect);
     95 
     96 extern GLboolean
     97 _mesa_validate_MultiDrawArraysIndirect(struct gl_context *ctx,
     98                                        GLenum mode,
     99                                        const GLvoid *indirect,
    100                                        GLsizei primcount,
    101                                        GLsizei stride);
    102 
    103 extern GLboolean
    104 _mesa_validate_MultiDrawElementsIndirect(struct gl_context *ctx,
    105                                          GLenum mode,
    106                                          GLenum type,
    107                                          const GLvoid *indirect,
    108                                          GLsizei primcount,
    109                                          GLsizei stride);
    110 
    111 extern GLboolean
    112 _mesa_validate_MultiDrawArraysIndirectCount(struct gl_context *ctx,
    113                                             GLenum mode,
    114                                             GLintptr indirect,
    115                                             GLintptr drawcount,
    116                                             GLsizei maxdrawcount,
    117                                             GLsizei stride);
    118 
    119 extern GLboolean
    120 _mesa_validate_MultiDrawElementsIndirectCount(struct gl_context *ctx,
    121                                               GLenum mode, GLenum type,
    122                                               GLintptr indirect,
    123                                               GLintptr drawcount,
    124                                               GLsizei maxdrawcount,
    125                                               GLsizei stride);
    126 
    127 extern GLboolean
    128 _mesa_validate_DispatchCompute(struct gl_context *ctx,
    129                                const GLuint *num_groups);
    130 
    131 extern GLboolean
    132 _mesa_validate_DispatchComputeIndirect(struct gl_context *ctx,
    133                                        GLintptr indirect);
    134 
    135 extern GLboolean
    136 _mesa_validate_DispatchComputeGroupSizeARB(struct gl_context *ctx,
    137                                            const GLuint *num_groups,
    138                                            const GLuint *group_size);
    139 
    140 #endif
    141