1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
from ctypes import *
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()
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)
|