]> git.cworth.org Git - apitrace/blobdiff - specs/gltypes.py
Allow float-based attrib_lists as found in WGL.
[apitrace] / specs / gltypes.py
index 45231b244cf29304bbf4592413af93b3f6e91be0..5f325103cd49b6debe31db84e9db9e9edadadc6e 100644 (file)
@@ -100,15 +100,19 @@ GLshader = Handle("shader", GLuint)
 GLlocation = Handle("location", GLint, key=('program', GLhandleARB))
 GLlocationARB = Handle("location", GLint, key=('programObj', GLhandleARB))
 
+contextKey = ('reinterpret_cast<uintptr_t>(glretrace::getCurrentContext())', UIntPtr)
+
 GLprogramARB = Handle("programARB", GLuint)
 GLframebuffer = Handle("framebuffer", GLuint)
 GLrenderbuffer = Handle("renderbuffer", GLuint)
 GLfragmentShaderATI = Handle("fragmentShaderATI", GLuint)
-GLarray = Handle("array", GLuint)
+GLarray = Handle("array", GLuint, key=contextKey) # per-context
+GLarrayAPPLE = Handle("arrayAPPLE", GLuint) # shared
 GLregion = Handle("region", GLuint)
 GLpipeline = Handle("pipeline", GLuint)
 GLsampler = Handle("sampler", GLuint)
 GLfeedback = Handle("feedback", GLuint)
+GLfence = Handle("fence", GLuint)
 
 # GL mappings are pointers to linear memory regions.
 #
@@ -229,3 +233,64 @@ GLbitfield_barrier = Flags(GLbitfield, [
     "GL_ATOMIC_COUNTER_BARRIER_BIT",            # 0x00001000
 ])
 
+# GL_ARB_vertex_array_bgra
+size_bgra = FakeEnum(GLint, [
+    "GL_BGRA",
+])
+
+
+def GLindexBuffer(countExpr, typeExpr):
+    # Indices arguments are polymorphic:
+    # - offsets when element array buffer is bound
+    # - or a blob otherwise.
+    sizeExpr = '%s*_gl_type_size(%s)' % (countExpr, typeExpr)
+    return Polymorphic('_element_array_buffer_binding()', [
+            ('0', Blob(Const(GLvoid), sizeExpr)),
+        ],
+        IntPointer("const GLvoid *"), 
+        contextLess=False,
+    )
+
+# Polymorphic object name
+def GLname(targetExpr):
+    return Polymorphic(targetExpr, [
+        ('GL_BUFFER', GLbuffer),
+        ('GL_SHADER', GLshader),
+        ('GL_PROGRAM', GLprogram),
+        ('GL_VERTEX_ARRAY', GLarray),
+        ('GL_QUERY', GLquery),
+        ('GL_PROGRAM_PIPELINE', GLpipeline),
+        ('GL_TRANSFORM_FEEDBACK', GLuint),
+        ('GL_SAMPLER', GLsampler),
+        ('GL_TEXTURE', GLtexture),
+        ('GL_TEXTURE_1D', GLtexture),
+        ('GL_TEXTURE_1D_ARRAY', GLtexture),
+        ('GL_TEXTURE_2D', GLtexture),
+        ('GL_TEXTURE_2D_MULTISAMPLE', GLtexture),
+        ('GL_TEXTURE_2D_ARRAY', GLtexture),
+        ('GL_TEXTURE_RECTANGLE', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_POSITIVE_X', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_NEGATIVE_X', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_POSITIVE_Y', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_NEGATIVE_Y', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_POSITIVE_Z', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_NEGATIVE_Z', GLtexture),
+        ('GL_TEXTURE_CUBE_MAP_ARRAY', GLtexture),
+        ('GL_TEXTURE_3D', GLtexture),
+        ('GL_RENDERBUFFER', GLrenderbuffer),
+        ('GL_FRAMEBUFFER', GLframebuffer),
+        ('GL_DISPLAY_LIST', GLlist),
+        ('GL_FENCE_APPLE', GLfence),
+        ('GL_DRAW_PIXELS_APPLE', GLuint), # GL_APPLE_fence
+    ], GLuint)
+
+
+# GL_AMD_performance_monitor
+GLperfMonitorCounterInfoAMD = Polymorphic('pname', [
+        ('GL_COUNTER_TYPE_AMD', Pointer(GLenum)),
+        ('GL_PERCENTAGE_AMD', Pointer(Float)),
+        ('GL_COUNTER_RANGE_AMD', Array(Float, 2)),
+    ],
+    OpaquePointer(GLvoid),
+)