add ARB_shader_objects interfaces, shared and context state
authorMichal Krol <mjkrol@gmail.org>
Thu, 13 Jan 2005 14:09:58 +0000 (14:09 +0000)
committerMichal Krol <mjkrol@gmail.org>
Thu, 13 Jan 2005 14:09:58 +0000 (14:09 +0000)
src/mesa/main/mtypes.h

index bf24596..082c43f 100644 (file)
@@ -9,7 +9,7 @@
  * Mesa 3-D graphics library
  * Version:  6.3
  *
- * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2005  Brian Paul   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"),
@@ -1844,6 +1844,79 @@ struct gl_occlusion_state
    GLuint PassedCounter;
    struct _mesa_HashTable *QueryObjects;
 };
+\r
+/* gl2 unique interface identifier */\r
+/* each gl2 interface has its own interface id used for object queries */\r
+enum gl2_uiid\r
+{\r
+       UIID_UNKNOWN,                                                   /* supported by all objects */\r
+       UIID_GENERIC,                                                   /* generic object */\r
+       UIID_CONTAINER,                                                 /* contains generic objects */\r
+       UIID_SHADER,                                                    /* shader object */\r
+       UIID_FRAGMENT_SHADER,                                   /* fragment shader */\r
+       UIID_VERTEX_SHADER,                                             /* vertex shader */\r
+       UIID_PROGRAM                                                    /* program object */\r
+};\r
+\r
+struct gl2_unknown_intf\r
+{\r
+       GLvoid (* AddRef) (struct gl2_unknown_intf **);\r
+       GLvoid (* Release) (struct gl2_unknown_intf **);\r
+       struct gl2_unknown_intf **(* QueryInterface) (struct gl2_unknown_intf **, enum gl2_uiid uiid);\r
+};\r
+\r
+struct gl2_generic_intf\r
+{\r
+       struct gl2_unknown_intf _unknown;\r
+       GLvoid (* Delete) (struct gl2_generic_intf **);\r
+       GLenum (* GetType) (struct gl2_generic_intf **);\r
+       GLhandleARB (* GetName) (struct gl2_generic_intf **);\r
+       GLboolean (* GetDeleteStatus) (struct gl2_generic_intf **);\r
+       const GLcharARB *(* GetInfoLog) (struct gl2_generic_intf **);\r
+};\r
+\r
+struct gl2_container_intf\r
+{\r
+       struct gl2_generic_intf _generic;\r
+       GLboolean (* Attach) (struct gl2_container_intf **, struct gl2_generic_intf **);\r
+       GLboolean (* Detach) (struct gl2_container_intf **, struct gl2_generic_intf **);\r
+       GLsizei (* GetAttachedCount) (struct gl2_container_intf **);\r
+       struct gl2_generic_intf **(* GetAttached) (struct gl2_container_intf **, GLuint);\r
+};\r
+\r
+struct gl2_shader_intf\r
+{\r
+       struct gl2_generic_intf _generic;\r
+       GLenum (* GetSubType) (struct gl2_shader_intf **);\r
+       GLboolean (* GetCompileStatus) (struct gl2_shader_intf **);\r
+       GLvoid (* SetSource) (struct gl2_shader_intf **, GLcharARB *, GLint *, GLsizei);\r
+       const GLcharARB *(* GetSource) (struct gl2_shader_intf **);\r
+       GLvoid (* Compile) (struct gl2_shader_intf **);\r
+};\r
+\r
+struct gl2_program_intf\r
+{\r
+       struct gl2_container_intf _container;\r
+       GLboolean (* GetLinkStatus) (struct gl2_program_intf **);\r
+       GLboolean (* GetValidateStatus) (struct gl2_program_intf **);\r
+       GLvoid (* Link) (struct gl2_program_intf **);\r
+       GLvoid (* Validate) (struct gl2_program_intf **);\r
+};\r
+\r
+struct gl2_fragment_shader_intf\r
+{\r
+       struct gl2_shader_intf _shader;\r
+};\r
+\r
+struct gl2_vertex_shader_intf\r
+{\r
+       struct gl2_shader_intf _shader;\r
+};\r
+\r
+struct gl_shader_objects_state\r
+{\r
+       struct gl2_program_intf **current_program;\r
+};\r
 
 
 /**
@@ -1886,7 +1959,9 @@ struct gl_shared_state
 
 #if FEATURE_ARB_vertex_buffer_object
    struct _mesa_HashTable *BufferObjects;
-#endif
+#endif\r
+\r
+   struct _mesa_HashTable *GL2Objects;
 
    void *DriverData;  /**< Device driver shared state */
 };
@@ -2516,7 +2591,9 @@ struct __GLcontextRec
    struct gl_fragment_program_state FragmentProgram;  /**< GL_NV_fragment_program */
    struct gl_ati_fragment_shader_state ATIFragmentShader;  /**< GL_ATI_fragment_shader */
 
-   struct gl_occlusion_state Occlusion;  /**< GL_ARB_occlusion_query */
+   struct gl_occlusion_state Occlusion;  /**< GL_ARB_occlusion_query */\r
+\r
+   struct gl_shader_objects_state ShaderObjects;       /* GL_ARB_shader_objects */
    /*@}*/
 
    GLenum ErrorValue;        /**< Last error code */