summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2010-07-26 20:01:05 -0700
committerCorbin Simpson <MostAwesomeDude@gmail.com>2010-07-26 20:01:05 -0700
commit0945f7ed3e8896d68677a6657bbb571865408ac8 (patch)
tree5a5a853dc2485fe93452171f8cb4a104291d2ee4
parentee8a01fce56f88af660e4c8daab89afc6a8b3d10 (diff)
Switch to Cython.
-rw-r--r--drm.py6
-rwxr-xr-xformats.py172
-rwxr-xr-xmain.py9
-rw-r--r--pylladium.pyx436
-rw-r--r--screen.py164
5 files changed, 443 insertions, 344 deletions
diff --git a/drm.py b/drm.py
index a16f0c2..608fc95 100644
--- a/drm.py
+++ b/drm.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
from ctypes import *
-import screen
+import pylladium
class drm_create_screen_arg(Structure):
_fields_ = [("mode", c_uint)]
@@ -14,7 +14,7 @@ drm_api._fields_ = [
("name", c_char_p),
("driver_name", c_char_p),
("create_screen",
- CFUNCTYPE(POINTER(screen.pipe_screen),
+ CFUNCTYPE(POINTER(pylladium.pipe_screen),
POINTER(drm_api),
c_int,
POINTER(drm_create_screen_arg))),
@@ -32,7 +32,7 @@ class DrmApi(object):
def create_screen(self, fd):
arg = drm_create_screen_arg()
arg.mode = 0 # DRM_CREATE_NORMAL
- s = screen.Screen(self.drm_api[0].create_screen(self.drm_api, fd, byref(arg)))
+ s = pylladium.Screen(self.drm_api[0].create_screen(self.drm_api, fd, byref(arg)))
return s
@property
diff --git a/formats.py b/formats.py
deleted file mode 100755
index 6f9e1dd..0000000
--- a/formats.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env python
-
-import pprint
-import sys
-
-def parse_enums(f):
- handle = open(f, "r")
- d = {}
-
- for chaff in handle:
- if "enum pipe_format" in chaff:
- break
-
- for format in handle:
- if format == "PIPE_FORMAT_NONE":
- break
-
- try:
- name, number = format.split("=")
- except ValueError:
- continue
-
- name = name.strip()
- number = int(number.split(",", 1)[0])
- if not name.startswith("PIPE_FORMAT_"):
- continue
- d[name[12:]] = number
-
- return d
-
-if __name__ == "__main__":
- d = parse_enums(sys.argv[-1])
- f = sys.argv[-2]
- handle = open(f, "r+")
- while not handle.readline().startswith("###"):
- pass
- handle.truncate()
- handle.write("by_name = ")
- pprint.pprint(d, handle)
- handle.close()
-
-###
-by_name = {'A8B8G8R8_SRGB': 98,
- 'A8B8G8R8_UNORM': 121,
- 'A8R8G8B8_SRGB': 102,
- 'A8R8G8B8_UNORM': 3,
- 'A8_UNORM': 10,
- 'B10G10R10A2_UNORM': 131,
- 'B4G4R4A4_UNORM': 6,
- 'B4G4R4X4_UNORM': 135,
- 'B5G5R5A1_UNORM': 5,
- 'B5G5R5X1_UNORM': 122,
- 'B5G6R5_UNORM': 7,
- 'B8G8R8A8_SRGB': 100,
- 'B8G8R8A8_UNORM': 1,
- 'B8G8R8X8_SRGB': 101,
- 'B8G8R8X8_UNORM': 2,
- 'DXT1_RGB': 105,
- 'DXT1_RGBA': 106,
- 'DXT1_SRGB': 109,
- 'DXT1_SRGBA': 110,
- 'DXT3_RGBA': 107,
- 'DXT3_SRGBA': 111,
- 'DXT5_RGBA': 108,
- 'DXT5_SRGBA': 112,
- 'G8R8_G8B8_UNORM': 118,
- 'I8_UNORM': 11,
- 'L16_UNORM': 13,
- 'L4A4_UNORM': 130,
- 'L8A8_SRGB': 96,
- 'L8A8_UNORM': 12,
- 'L8_SRGB': 95,
- 'L8_UNORM': 9,
- 'NONE': 0,
- 'R10G10B10A2_UNORM': 8,
- 'R10G10B10A2_USCALED': 123,
- 'R10G10B10X2_SNORM': 129,
- 'R10G10B10X2_USCALED': 128,
- 'R10SG10SB10SA2U_NORM': 132,
- 'R11G11B10_FLOAT': 124,
- 'R16G16B16A16_FLOAT': 94,
- 'R16G16B16A16_SNORM': 59,
- 'R16G16B16A16_SSCALED': 63,
- 'R16G16B16A16_UNORM': 51,
- 'R16G16B16A16_USCALED': 55,
- 'R16G16B16_FLOAT': 93,
- 'R16G16B16_SNORM': 58,
- 'R16G16B16_SSCALED': 62,
- 'R16G16B16_UNORM': 50,
- 'R16G16B16_USCALED': 54,
- 'R16G16_FLOAT': 92,
- 'R16G16_SNORM': 57,
- 'R16G16_SSCALED': 61,
- 'R16G16_UNORM': 49,
- 'R16G16_USCALED': 53,
- 'R16_FLOAT': 91,
- 'R16_SNORM': 56,
- 'R16_SSCALED': 60,
- 'R16_UNORM': 48,
- 'R16_USCALED': 52,
- 'R1_UNORM': 127,
- 'R32G32B32A32_FIXED': 90,
- 'R32G32B32A32_FLOAT': 31,
- 'R32G32B32A32_SNORM': 43,
- 'R32G32B32A32_SSCALED': 47,
- 'R32G32B32A32_UNORM': 35,
- 'R32G32B32A32_USCALED': 39,
- 'R32G32B32_FIXED': 89,
- 'R32G32B32_FLOAT': 30,
- 'R32G32B32_SNORM': 42,
- 'R32G32B32_SSCALED': 46,
- 'R32G32B32_UNORM': 34,
- 'R32G32B32_USCALED': 38,
- 'R32G32_FIXED': 88,
- 'R32G32_FLOAT': 29,
- 'R32G32_SNORM': 41,
- 'R32G32_SSCALED': 45,
- 'R32G32_UNORM': 33,
- 'R32G32_USCALED': 37,
- 'R32_FIXED': 87,
- 'R32_FLOAT': 28,
- 'R32_SNORM': 40,
- 'R32_SSCALED': 44,
- 'R32_UNORM': 32,
- 'R32_USCALED': 36,
- 'R5SG5SB6U_NORM': 120,
- 'R64G64B64A64_FLOAT': 27,
- 'R64G64B64_FLOAT': 26,
- 'R64G64_FLOAT': 25,
- 'R64_FLOAT': 24,
- 'R8G8B8A8_SNORM': 77,
- 'R8G8B8A8_SRGB': 104,
- 'R8G8B8A8_SSCALED': 85,
- 'R8G8B8A8_UNORM': 67,
- 'R8G8B8A8_USCALED': 72,
- 'R8G8B8X8_UNORM': 134,
- 'R8G8B8_SNORM': 76,
- 'R8G8B8_SRGB': 97,
- 'R8G8B8_SSCALED': 84,
- 'R8G8B8_UNORM': 66,
- 'R8G8B8_USCALED': 71,
- 'R8G8Bx_SNORM': 133,
- 'R8G8_B8G8_UNORM': 117,
- 'R8G8_SNORM': 75,
- 'R8G8_SSCALED': 83,
- 'R8G8_UNORM': 65,
- 'R8G8_USCALED': 70,
- 'R8SG8SB8UX8U_NORM': 119,
- 'R8_SNORM': 74,
- 'R8_SSCALED': 82,
- 'R8_UNORM': 64,
- 'R8_USCALED': 69,
- 'R9G9B9E5_FLOAT': 125,
- 'RGTC1_SNORM': 114,
- 'RGTC1_UNORM': 113,
- 'RGTC2_SNORM': 116,
- 'RGTC2_UNORM': 115,
- 'S8_USCALED': 23,
- 'S8_USCALED_Z24_UNORM': 20,
- 'UYVY': 14,
- 'X8B8G8R8_SRGB': 99,
- 'X8B8G8R8_UNORM': 68,
- 'X8R8G8B8_SRGB': 103,
- 'X8R8G8B8_UNORM': 4,
- 'X8Z24_UNORM': 22,
- 'YUYV': 15,
- 'Z16_UNORM': 16,
- 'Z24X8_UNORM': 21,
- 'Z24_UNORM_S8_USCALED': 19,
- 'Z32_FLOAT': 18,
- 'Z32_FLOAT_S8X24_USCALED': 126,
- 'Z32_UNORM': 17}
diff --git a/main.py b/main.py
index 24a7d91..8d8fabe 100755
--- a/main.py
+++ b/main.py
@@ -4,8 +4,7 @@ import os
import sys
import drm
-import formats
-import screen
+import pylladium
os.environ["LD_BIND_NOW"] = "Yes, please!"
@@ -28,12 +27,12 @@ if s.params["GLSL"]:
else:
print "No GLSL..."
-b = screen.Bindings()
+b = pylladium.Bindings()
b.RENDER_TARGET = True
b.SAMPLER_VIEW = True
-g = screen.Geom()
+g = pylladium.Geom()
-for name, number in formats.by_name.iteritems():
+for name, number in pylladium.by_name.iteritems():
if s.is_format_supported(number, 2, b, g):
print "%s is an acceptable FBO colorbuf" % name
diff --git a/pylladium.pyx b/pylladium.pyx
new file mode 100644
index 0000000..4a81d94
--- /dev/null
+++ b/pylladium.pyx
@@ -0,0 +1,436 @@
+from ctypes import *
+
+class pipe_context(Structure):
+ pass
+
+pipe_context._fields_ = [
+ ("winsys", c_void_p),
+ ("screen", c_void_p),
+
+ ("priv", c_void_p),
+ ("draw", c_void_p),
+
+ ("destroy", CFUNCTYPE(None, POINTER(pipe_context))),
+
+ ("draw_arrays", CFUNCTYPE(None,
+ POINTER(pipe_context),
+ c_uint,
+ c_uint,
+ c_uint)),
+ ("draw_elements", CFUNCTYPE(None,
+ POINTER(pipe_context),
+ c_void_p,
+ c_uint,
+ c_int,
+ c_uint,
+ c_uint,
+ c_uint)),
+ ("draw_arrays_instanced", c_void_p),
+ ("draw_elements_instanced", c_void_p),
+ ("draw_range_elements", c_void_p),
+ ("render_condition", c_void_p),
+
+ ("create_query", c_void_p),
+ ("destroy_query", c_void_p),
+ ("begin_query", c_void_p),
+ ("end_query", c_void_p),
+ ("get_query_result", c_void_p),
+
+ ("create_blend_state", c_void_p),
+ ("bind_blend_state", c_void_p),
+ ("delete_blend_state", c_void_p),
+
+ ("create_sampler_state", c_void_p),
+ ("bind_fragment_sampler_states", c_void_p),
+ ("bind_vertex_sampler_states", c_void_p),
+ ("delete_sampler_state", c_void_p),
+
+ ("create_rasterizer_state", c_void_p),
+ ("bind_rasterizer_state", c_void_p),
+ ("delete_rasterizer_state", c_void_p),
+
+ ("create_depth_stencil_alpha_state", c_void_p),
+ ("bind_depth_stencil_alpha_state", c_void_p),
+ ("delete_depth_stencil_alpha_state", c_void_p),
+
+ ("create_fs_state", c_void_p),
+ ("bind_fs_state", c_void_p),
+ ("delete_fs_state", c_void_p),
+
+ ("create_vs_state", c_void_p),
+ ("bind_vs_state", c_void_p),
+ ("delete_vs_state", c_void_p),
+
+ ("create_gs_state", c_void_p),
+ ("bind_gs_state", c_void_p),
+ ("delete_gs_state", c_void_p),
+
+ ("create_vertex_elements_state", c_void_p),
+ ("bind_vertex_elements_state", c_void_p),
+ ("delete_vertex_elements_state", c_void_p),
+
+ ("set_blend_color", c_void_p),
+ ("set_stencil_ref", c_void_p),
+ ("set_clip_state", c_void_p),
+ ("set_constant_buffer", c_void_p),
+ ("set_framebuffer_state", c_void_p),
+ ("set_polygon_stipple", c_void_p),
+ ("set_scissor_state", c_void_p),
+ ("set_viewport_state", c_void_p),
+ ("set_fragment_sampler_views", c_void_p),
+ ("set_vertex_sampler_views", c_void_p),
+ ("set_vertex_buffers", c_void_p),
+
+ ("surface_copy", c_void_p),
+ ("surface_fill", c_void_p),
+
+ ("clear", c_void_p),
+ ("flush", c_void_p),
+
+ ("is_resource_referenced", c_void_p),
+ ("create_sampler_view", c_void_p),
+ ("sampler_view_destroy", c_void_p),
+
+ ("get_transfer", c_void_p),
+ ("transfer_destroy", c_void_p),
+ ("transfer_map", c_void_p),
+ ("transfer_flush_region", c_void_p),
+ ("transfer_unmap", c_void_p),
+ ("transfer_inline_write", c_void_p),
+]
+#!/usr/bin/env python
+
+import pprint
+import sys
+
+def parse_enums(f):
+ handle = open(f, "r")
+ d = {}
+
+ for chaff in handle:
+ if "enum pipe_format" in chaff:
+ break
+
+ for format in handle:
+ if format == "PIPE_FORMAT_NONE":
+ break
+
+ try:
+ name, number = format.split("=")
+ except ValueError:
+ continue
+
+ name = name.strip()
+ number = int(number.split(",", 1)[0])
+ if not name.startswith("PIPE_FORMAT_"):
+ continue
+ d[name[12:]] = number
+
+ return d
+
+if __name__ == "__main__":
+ d = parse_enums(sys.argv[-1])
+ f = sys.argv[-2]
+ handle = open(f, "r+")
+ while not handle.readline().startswith("###"):
+ pass
+ handle.truncate()
+ handle.write("by_name = ")
+ pprint.pprint(d, handle)
+ handle.close()
+
+###
+by_name = {'A8B8G8R8_SRGB': 98,
+ 'A8B8G8R8_UNORM': 121,
+ 'A8R8G8B8_SRGB': 102,
+ 'A8R8G8B8_UNORM': 3,
+ 'A8_UNORM': 10,
+ 'B10G10R10A2_UNORM': 131,
+ 'B4G4R4A4_UNORM': 6,
+ 'B4G4R4X4_UNORM': 135,
+ 'B5G5R5A1_UNORM': 5,
+ 'B5G5R5X1_UNORM': 122,
+ 'B5G6R5_UNORM': 7,
+ 'B8G8R8A8_SRGB': 100,
+ 'B8G8R8A8_UNORM': 1,
+ 'B8G8R8X8_SRGB': 101,
+ 'B8G8R8X8_UNORM': 2,
+ 'DXT1_RGB': 105,
+ 'DXT1_RGBA': 106,
+ 'DXT1_SRGB': 109,
+ 'DXT1_SRGBA': 110,
+ 'DXT3_RGBA': 107,
+ 'DXT3_SRGBA': 111,
+ 'DXT5_RGBA': 108,
+ 'DXT5_SRGBA': 112,
+ 'G8R8_G8B8_UNORM': 118,
+ 'I8_UNORM': 11,
+ 'L16_UNORM': 13,
+ 'L4A4_UNORM': 130,
+ 'L8A8_SRGB': 96,
+ 'L8A8_UNORM': 12,
+ 'L8_SRGB': 95,
+ 'L8_UNORM': 9,
+ 'NONE': 0,
+ 'R10G10B10A2_UNORM': 8,
+ 'R10G10B10A2_USCALED': 123,
+ 'R10G10B10X2_SNORM': 129,
+ 'R10G10B10X2_USCALED': 128,
+ 'R10SG10SB10SA2U_NORM': 132,
+ 'R11G11B10_FLOAT': 124,
+ 'R16G16B16A16_FLOAT': 94,
+ 'R16G16B16A16_SNORM': 59,
+ 'R16G16B16A16_SSCALED': 63,
+ 'R16G16B16A16_UNORM': 51,
+ 'R16G16B16A16_USCALED': 55,
+ 'R16G16B16_FLOAT': 93,
+ 'R16G16B16_SNORM': 58,
+ 'R16G16B16_SSCALED': 62,
+ 'R16G16B16_UNORM': 50,
+ 'R16G16B16_USCALED': 54,
+ 'R16G16_FLOAT': 92,
+ 'R16G16_SNORM': 57,
+ 'R16G16_SSCALED': 61,
+ 'R16G16_UNORM': 49,
+ 'R16G16_USCALED': 53,
+ 'R16_FLOAT': 91,
+ 'R16_SNORM': 56,
+ 'R16_SSCALED': 60,
+ 'R16_UNORM': 48,
+ 'R16_USCALED': 52,
+ 'R1_UNORM': 127,
+ 'R32G32B32A32_FIXED': 90,
+ 'R32G32B32A32_FLOAT': 31,
+ 'R32G32B32A32_SNORM': 43,
+ 'R32G32B32A32_SSCALED': 47,
+ 'R32G32B32A32_UNORM': 35,
+ 'R32G32B32A32_USCALED': 39,
+ 'R32G32B32_FIXED': 89,
+ 'R32G32B32_FLOAT': 30,
+ 'R32G32B32_SNORM': 42,
+ 'R32G32B32_SSCALED': 46,
+ 'R32G32B32_UNORM': 34,
+ 'R32G32B32_USCALED': 38,
+ 'R32G32_FIXED': 88,
+ 'R32G32_FLOAT': 29,
+ 'R32G32_SNORM': 41,
+ 'R32G32_SSCALED': 45,
+ 'R32G32_UNORM': 33,
+ 'R32G32_USCALED': 37,
+ 'R32_FIXED': 87,
+ 'R32_FLOAT': 28,
+ 'R32_SNORM': 40,
+ 'R32_SSCALED': 44,
+ 'R32_UNORM': 32,
+ 'R32_USCALED': 36,
+ 'R5SG5SB6U_NORM': 120,
+ 'R64G64B64A64_FLOAT': 27,
+ 'R64G64B64_FLOAT': 26,
+ 'R64G64_FLOAT': 25,
+ 'R64_FLOAT': 24,
+ 'R8G8B8A8_SNORM': 77,
+ 'R8G8B8A8_SRGB': 104,
+ 'R8G8B8A8_SSCALED': 85,
+ 'R8G8B8A8_UNORM': 67,
+ 'R8G8B8A8_USCALED': 72,
+ 'R8G8B8X8_UNORM': 134,
+ 'R8G8B8_SNORM': 76,
+ 'R8G8B8_SRGB': 97,
+ 'R8G8B8_SSCALED': 84,
+ 'R8G8B8_UNORM': 66,
+ 'R8G8B8_USCALED': 71,
+ 'R8G8Bx_SNORM': 133,
+ 'R8G8_B8G8_UNORM': 117,
+ 'R8G8_SNORM': 75,
+ 'R8G8_SSCALED': 83,
+ 'R8G8_UNORM': 65,
+ 'R8G8_USCALED': 70,
+ 'R8SG8SB8UX8U_NORM': 119,
+ 'R8_SNORM': 74,
+ 'R8_SSCALED': 82,
+ 'R8_UNORM': 64,
+ 'R8_USCALED': 69,
+ 'R9G9B9E5_FLOAT': 125,
+ 'RGTC1_SNORM': 114,
+ 'RGTC1_UNORM': 113,
+ 'RGTC2_SNORM': 116,
+ 'RGTC2_UNORM': 115,
+ 'S8_USCALED': 23,
+ 'S8_USCALED_Z24_UNORM': 20,
+ 'UYVY': 14,
+ 'X8B8G8R8_SRGB': 99,
+ 'X8B8G8R8_UNORM': 68,
+ 'X8R8G8B8_SRGB': 103,
+ 'X8R8G8B8_UNORM': 4,
+ 'X8Z24_UNORM': 22,
+ 'YUYV': 15,
+ 'Z16_UNORM': 16,
+ 'Z24X8_UNORM': 21,
+ 'Z24_UNORM_S8_USCALED': 19,
+ 'Z32_FLOAT': 18,
+ 'Z32_FLOAT_S8X24_USCALED': 126,
+ 'Z32_UNORM': 17}
+from ctypes import *
+
+class bind_bitfield(Structure):
+ _fields_ = [
+ ("DEPTH_STENCIL", c_uint, 1),
+ ("RENDER_TARGET", c_uint, 1),
+ ("SAMPLER_VIEW", c_uint, 1),
+ ("VERTEX_BUFFER", c_uint, 1),
+ ("INDEX_BUFFER", c_uint, 1),
+ ("CONSTANT_BUFFER", c_uint, 1),
+ ("BLIT_SOURCE", c_uint, 1),
+ ("BLIT_DESTINATION", c_uint, 1),
+ ("DISPLAY_TARGET", c_uint, 1),
+ ("TRANSFER_WRITE", c_uint, 1),
+ ("TRANSFER_READ", c_uint, 1),
+ ]
+
+class Bindings(Union):
+ _anonymous_ = ("bitfield",)
+ _fields_ = [
+ ("bitfield", bind_bitfield),
+ ("value", c_uint),
+ ]
+
+class geom_bitfield(Structure):
+ _fields_ = [
+ ("NON_SQUARE", c_uint, 1),
+ ("NON_POWER_OF_TWO", c_uint, 1),
+ ]
+
+class Geom(Union):
+ _anonymous_ = ("bitfield",)
+ _fields_ = [
+ ("bitfield", geom_bitfield),
+ ("value", c_uint),
+ ]
+
+class pipe_screen(Structure):
+ pass
+
+pipe_screen._fields_ = [
+ ("winsys", c_void_p),
+ ("destroy", CFUNCTYPE(None, POINTER(pipe_screen))),
+ ("get_name", CFUNCTYPE(c_char_p, POINTER(pipe_screen))),
+ ("get_vendor", CFUNCTYPE(c_char_p, POINTER(pipe_screen))),
+ ("get_param", CFUNCTYPE(c_int, POINTER(pipe_screen), c_int)),
+ ("get_paramf", CFUNCTYPE(c_float, POINTER(pipe_screen), c_int)),
+ ("context_create", CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p)),
+ ("is_format_supported",
+ CFUNCTYPE(c_int,
+ POINTER(pipe_screen),
+ c_int,
+ c_int,
+ c_uint,
+ c_uint)),
+ ("resource_create", CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p)),
+ ("resource_from_handle",
+ CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p, c_void_p)),
+ ("resource_get_handle",
+ CFUNCTYPE(c_int, POINTER(pipe_screen), c_void_p, c_void_p)),
+ ("resource_destroy", CFUNCTYPE(None, POINTER(pipe_screen), c_void_p)),
+ ("get_tex_surface",
+ CFUNCTYPE(c_void_p,
+ POINTER(pipe_screen),
+ c_void_p,
+ c_uint,
+ c_uint,
+ c_uint,
+ c_uint)),
+ ("tex_surface_destroy", CFUNCTYPE(None, c_void_p)),
+ ("user_buffer_create",
+ CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p, c_uint, c_uint)),
+ ("flush_frontbuffer",
+ CFUNCTYPE(None, POINTER(pipe_screen), c_void_p, c_void_p)),
+ ("fence_reference",
+ CFUNCTYPE(None, POINTER(pipe_screen), c_void_p, c_void_p)),
+ ("fence_signalled",
+ CFUNCTYPE(c_int, POINTER(pipe_screen), c_void_p, c_uint)),
+ ("fence_finish",
+ CFUNCTYPE(c_int, POINTER(pipe_screen), c_void_p, c_uint)),
+]
+
+params = {
+ "MAX_TEXTURE_IMAGE_UNITS": 1,
+ "MAX_RENDER_TARGETS": 8,
+ "MAX_TEXTURE_2D_LEVELS": 11,
+ "MAX_TEXTURE_3D_LEVELS": 12,
+ "MAX_TEXTURE_CUBE_LEVELS": 13,
+ "MAX_TEXTURE_ANISOTROPY": 18,
+ "MAX_TEXTURE_LOD_BIAS": 19,
+ "MAX_VERTEX_TEXTURE_UNITS": 26,
+ "MAX_PREDICATE_REGISTERS": 30,
+ "PIPE_CAP_MAX_COMBINED_SAMPLERS": 31,
+ "PIPE_CAP_MAX_CONST_BUFFERS": 32,
+ "PIPE_CAP_MAX_CONST_BUFFER_SIZE": 33,
+}
+
+parambs = {
+ "NPOT_TEXTURES": 2,
+ "TWO_SIDED_STENCIL": 3,
+ "GLSL": 4,
+ "DUAL_SOURCE_BLEND": 5,
+ "ANISOTROPIC_FILTER": 6,
+ "POINT_SPRITE": 7,
+ "OCCLUSION_QUERY": 9,
+ "TEXTURE_SHADOW_MAP": 10,
+ "TEXTURE_MIRROR_CLAMP": 24,
+ "TEXTURE_MIRROR_REPEAT": 25,
+ "TGSI_CONT_SUPPORTED": 27,
+ "BLEND_EQUATION_SEPARATE": 28,
+ "SM3": 29,
+ "PIPE_CAP_INDEP_BLEND_ENABLE": 34,
+ "PIPE_CAP_INDEP_BLEND_FUNC": 35,
+ "PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT": 36,
+ "PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT": 37,
+ "PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER": 38,
+ "PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER": 39,
+}
+
+paramfs = {
+ "MAX_LINE_WIDTH": 14,
+ "MAX_LINE_WIDTH_AA": 15,
+ "MAX_POINT_WIDTH": 16,
+ "MAX_POINT_WIDTH_AA": 17,
+ "GUARD_BAND_LEFT": 20,
+ "GUARD_BAND_TOP": 21,
+ "GUARD_BAND_RIGHT": 22,
+ "GUARD_BAND_BOTTOM": 23,
+}
+
+class Screen(object):
+
+ def __init__(self, s):
+ self.pipe_screen = s
+ self.init_params()
+ self.format_supported_dict = {}
+
+ def __del__(self):
+ self.destroy()
+
+ def init_params(self):
+ self.params = {}
+ for k, v in params.iteritems():
+ self.params[k] = self.pipe_screen[0].get_param(self.pipe_screen, v)
+ for k, v in parambs.iteritems():
+ self.params[k] = bool(self.pipe_screen[0].get_param(self.pipe_screen, v))
+ for k, v in paramfs.iteritems():
+ self.params[k] = self.pipe_screen[0].get_paramf(self.pipe_screen, v)
+
+ def destroy(self):
+ self.pipe_screen[0].destroy(self.pipe_screen)
+
+ @property
+ def name(self):
+ return self.pipe_screen[0].get_name(self.pipe_screen)
+
+ @property
+ def vendor(self):
+ return self.pipe_screen[0].get_vendor(self.pipe_screen)
+
+ def is_format_supported(self, format, target, bindings, geom_flags):
+ return bool(self.pipe_screen[0].is_format_supported(self.pipe_screen,
+ format, target, bindings.value, geom_flags.value))
+
diff --git a/screen.py b/screen.py
deleted file mode 100644
index fa0c717..0000000
--- a/screen.py
+++ /dev/null
@@ -1,164 +0,0 @@
-from ctypes import *
-
-class bind_bitfield(Structure):
- _fields_ = [
- ("DEPTH_STENCIL", c_uint, 1),
- ("RENDER_TARGET", c_uint, 1),
- ("SAMPLER_VIEW", c_uint, 1),
- ("VERTEX_BUFFER", c_uint, 1),
- ("INDEX_BUFFER", c_uint, 1),
- ("CONSTANT_BUFFER", c_uint, 1),
- ("BLIT_SOURCE", c_uint, 1),
- ("BLIT_DESTINATION", c_uint, 1),
- ("DISPLAY_TARGET", c_uint, 1),
- ("TRANSFER_WRITE", c_uint, 1),
- ("TRANSFER_READ", c_uint, 1),
- ]
-
-class Bindings(Union):
- _anonymous_ = ("bitfield",)
- _fields_ = [
- ("bitfield", bind_bitfield),
- ("value", c_uint),
- ]
-
-class geom_bitfield(Structure):
- _fields_ = [
- ("NON_SQUARE", c_uint, 1),
- ("NON_POWER_OF_TWO", c_uint, 1),
- ]
-
-class Geom(Union):
- _anonymous_ = ("bitfield",)
- _fields_ = [
- ("bitfield", geom_bitfield),
- ("value", c_uint),
- ]
-
-class pipe_screen(Structure):
- pass
-
-pipe_screen._fields_ = [
- ("winsys", c_void_p),
- ("destroy", CFUNCTYPE(None, POINTER(pipe_screen))),
- ("get_name", CFUNCTYPE(c_char_p, POINTER(pipe_screen))),
- ("get_vendor", CFUNCTYPE(c_char_p, POINTER(pipe_screen))),
- ("get_param", CFUNCTYPE(c_int, POINTER(pipe_screen), c_int)),
- ("get_paramf", CFUNCTYPE(c_float, POINTER(pipe_screen), c_int)),
- ("context_create", CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p)),
- ("is_format_supported",
- CFUNCTYPE(c_int,
- POINTER(pipe_screen),
- c_int,
- c_int,
- c_uint,
- c_uint)),
- ("resource_create", CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p)),
- ("resource_from_handle",
- CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p, c_void_p)),
- ("resource_get_handle",
- CFUNCTYPE(c_int, POINTER(pipe_screen), c_void_p, c_void_p)),
- ("resource_destroy", CFUNCTYPE(None, POINTER(pipe_screen), c_void_p)),
- ("get_tex_surface",
- CFUNCTYPE(c_void_p,
- POINTER(pipe_screen),
- c_void_p,
- c_uint,
- c_uint,
- c_uint,
- c_uint)),
- ("tex_surface_destroy", CFUNCTYPE(None, c_void_p)),
- ("user_buffer_create",
- CFUNCTYPE(c_void_p, POINTER(pipe_screen), c_void_p, c_uint, c_uint)),
- ("flush_frontbuffer",
- CFUNCTYPE(None, POINTER(pipe_screen), c_void_p, c_void_p)),
- ("fence_reference",
- CFUNCTYPE(None, POINTER(pipe_screen), c_void_p, c_void_p)),
- ("fence_signalled",
- CFUNCTYPE(c_int, POINTER(pipe_screen), c_void_p, c_uint)),
- ("fence_finish",
- CFUNCTYPE(c_int, POINTER(pipe_screen), c_void_p, c_uint)),
-]
-
-params = {
- "MAX_TEXTURE_IMAGE_UNITS": 1,
- "MAX_RENDER_TARGETS": 8,
- "MAX_TEXTURE_2D_LEVELS": 11,
- "MAX_TEXTURE_3D_LEVELS": 12,
- "MAX_TEXTURE_CUBE_LEVELS": 13,
- "MAX_TEXTURE_ANISOTROPY": 18,
- "MAX_TEXTURE_LOD_BIAS": 19,
- "MAX_VERTEX_TEXTURE_UNITS": 26,
- "MAX_PREDICATE_REGISTERS": 30,
- "PIPE_CAP_MAX_COMBINED_SAMPLERS": 31,
- "PIPE_CAP_MAX_CONST_BUFFERS": 32,
- "PIPE_CAP_MAX_CONST_BUFFER_SIZE": 33,
-}
-
-parambs = {
- "NPOT_TEXTURES": 2,
- "TWO_SIDED_STENCIL": 3,
- "GLSL": 4,
- "DUAL_SOURCE_BLEND": 5,
- "ANISOTROPIC_FILTER": 6,
- "POINT_SPRITE": 7,
- "OCCLUSION_QUERY": 9,
- "TEXTURE_SHADOW_MAP": 10,
- "TEXTURE_MIRROR_CLAMP": 24,
- "TEXTURE_MIRROR_REPEAT": 25,
- "TGSI_CONT_SUPPORTED": 27,
- "BLEND_EQUATION_SEPARATE": 28,
- "SM3": 29,
- "PIPE_CAP_INDEP_BLEND_ENABLE": 34,
- "PIPE_CAP_INDEP_BLEND_FUNC": 35,
- "PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT": 36,
- "PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT": 37,
- "PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER": 38,
- "PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER": 39,
-}
-
-paramfs = {
- "MAX_LINE_WIDTH": 14,
- "MAX_LINE_WIDTH_AA": 15,
- "MAX_POINT_WIDTH": 16,
- "MAX_POINT_WIDTH_AA": 17,
- "GUARD_BAND_LEFT": 20,
- "GUARD_BAND_TOP": 21,
- "GUARD_BAND_RIGHT": 22,
- "GUARD_BAND_BOTTOM": 23,
-}
-
-class Screen(object):
-
- def __init__(self, s):
- self.pipe_screen = s
- self.init_params()
- self.format_supported_dict = {}
-
- def __del__(self):
- self.destroy()
-
- def init_params(self):
- self.params = {}
- for k, v in params.iteritems():
- self.params[k] = self.pipe_screen[0].get_param(self.pipe_screen, v)
- for k, v in parambs.iteritems():
- self.params[k] = bool(self.pipe_screen[0].get_param(self.pipe_screen, v))
- for k, v in paramfs.iteritems():
- self.params[k] = self.pipe_screen[0].get_paramf(self.pipe_screen, v)
-
- def destroy(self):
- self.pipe_screen[0].destroy(self.pipe_screen)
-
- @property
- def name(self):
- return self.pipe_screen[0].get_name(self.pipe_screen)
-
- @property
- def vendor(self):
- return self.pipe_screen[0].get_vendor(self.pipe_screen)
-
- def is_format_supported(self, format, target, bindings, geom_flags):
- return bool(self.pipe_screen[0].is_format_supported(self.pipe_screen,
- format, target, bindings.value, geom_flags.value))
-