2 ##########################################################################
4 # Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
7 # Permission is hereby granted, free of charge, to any person obtaining a
8 # copy of this software and associated documentation files (the
9 # "Software"), to deal in the Software without restriction, including
10 # without limitation the rights to use, copy, modify, merge, publish,
11 # distribute, sub license, and/or sell copies of the Software, and to
12 # permit persons to whom the Software is furnished to do so, subject to
13 # the following conditions:
15 # The above copyright notice and this permission notice (including the
16 # next paragraph) shall be included in all copies or substantial portions
19 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
22 # IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
23 # ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 ##########################################################################
33 import Image
# http://www.pythonware.com/products/pil/
35 PIPE_FORMAT_LAYOUT_RGBAZS
= 0
36 PIPE_FORMAT_LAYOUT_YCBCR
= 1
37 PIPE_FORMAT_LAYOUT_DXT
= 2
39 PIPE_FORMAT_COMP_R
= 0
40 PIPE_FORMAT_COMP_G
= 1
41 PIPE_FORMAT_COMP_B
= 2
42 PIPE_FORMAT_COMP_A
= 3
43 PIPE_FORMAT_COMP_0
= 4
44 PIPE_FORMAT_COMP_1
= 5
45 PIPE_FORMAT_COMP_Z
= 6
46 PIPE_FORMAT_COMP_S
= 7
48 PIPE_FORMAT_TYPE_UNKNOWN
= 0
49 PIPE_FORMAT_TYPE_FLOAT
= 1
50 PIPE_FORMAT_TYPE_UNORM
= 2
51 PIPE_FORMAT_TYPE_SNORM
= 3
52 PIPE_FORMAT_TYPE_USCALED
= 4
53 PIPE_FORMAT_TYPE_SSCALED
= 5
54 PIPE_FORMAT_TYPE_SRGB
= 6
56 def _PIPE_FORMAT_RGBAZS( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, EXP8
, TYPE
):
57 return ((PIPE_FORMAT_LAYOUT_RGBAZS
<< 0) |\
66 def _PIPE_FORMAT_SWZ( SWZX
, SWZY
, SWZZ
, SWZW
):
67 return (((SWZX
) << 0) |
((SWZY
) << 3) |
((SWZZ
) << 6) |
((SWZW
) << 9))
69 def _PIPE_FORMAT_RGBAZS_1( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, TYPE
):
70 return _PIPE_FORMAT_RGBAZS( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, 0, TYPE
)
72 def _PIPE_FORMAT_RGBAZS_8( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, TYPE
):
73 return _PIPE_FORMAT_RGBAZS( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, 1, TYPE
)
75 def _PIPE_FORMAT_RGBAZS_64( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, TYPE
):
76 return _PIPE_FORMAT_RGBAZS( SWZ
, SIZEX
, SIZEY
, SIZEZ
, SIZEW
, 2, TYPE
)
78 _PIPE_FORMAT_R001
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_1
)
79 _PIPE_FORMAT_RG01
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_1
)
80 _PIPE_FORMAT_RGB1
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_B
, PIPE_FORMAT_COMP_1
)
81 _PIPE_FORMAT_RGBA
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_B
, PIPE_FORMAT_COMP_A
)
82 _PIPE_FORMAT_ARGB
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_A
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_B
)
83 _PIPE_FORMAT_BGRA
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_B
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_A
)
84 _PIPE_FORMAT_1RGB
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_1
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_B
)
85 _PIPE_FORMAT_BGR1
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_B
, PIPE_FORMAT_COMP_G
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_1
)
86 _PIPE_FORMAT_0000
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
)
87 _PIPE_FORMAT_000R
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_R
)
88 _PIPE_FORMAT_RRR1
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_1
)
89 _PIPE_FORMAT_RRRR
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
)
90 _PIPE_FORMAT_RRRG
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_R
, PIPE_FORMAT_COMP_G
)
91 _PIPE_FORMAT_Z000
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_Z
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
)
92 _PIPE_FORMAT_0Z00
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_Z
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
)
93 _PIPE_FORMAT_SZ00
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_S
, PIPE_FORMAT_COMP_Z
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
)
94 _PIPE_FORMAT_ZS00
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_Z
, PIPE_FORMAT_COMP_S
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
)
95 _PIPE_FORMAT_S000
= _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_S
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
, PIPE_FORMAT_COMP_0
)
97 def _PIPE_FORMAT_YCBCR( REV
):
98 return ((PIPE_FORMAT_LAYOUT_YCBCR
<< 0) |\
101 def _PIPE_FORMAT_DXT( LEVEL
, RSIZE
, GSIZE
, BSIZE
, ASIZE
):
102 return ((PIPE_FORMAT_LAYOUT_DXT
<< 0) | \
109 PIPE_FORMAT_NONE
= _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_0000
, 0, 0, 0, 0, PIPE_FORMAT_TYPE_UNKNOWN
)
110 PIPE_FORMAT_A8R8G8B8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_ARGB
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
111 PIPE_FORMAT_X8R8G8B8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_1RGB
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
112 PIPE_FORMAT_B8G8R8A8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_BGRA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
113 PIPE_FORMAT_B8G8R8X8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_BGR1
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
114 PIPE_FORMAT_A1R5G5B5_UNORM
= _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_ARGB
, 1, 5, 5, 5, PIPE_FORMAT_TYPE_UNORM
)
115 PIPE_FORMAT_A4R4G4B4_UNORM
= _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_ARGB
, 4, 4, 4, 4, PIPE_FORMAT_TYPE_UNORM
)
116 PIPE_FORMAT_R5G6B5_UNORM
= _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_RGB1
, 5, 6, 5, 0, PIPE_FORMAT_TYPE_UNORM
)
117 PIPE_FORMAT_L8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRR1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_UNORM
)
118 PIPE_FORMAT_A8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_000R
, 0, 0, 0, 1, PIPE_FORMAT_TYPE_UNORM
)
119 PIPE_FORMAT_I8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRRR
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
120 PIPE_FORMAT_A8L8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRRG
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
121 PIPE_FORMAT_YCBCR
= _PIPE_FORMAT_YCBCR( 0 )
122 PIPE_FORMAT_YCBCR_REV
= _PIPE_FORMAT_YCBCR( 1 )
123 PIPE_FORMAT_Z16_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000
, 2, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
124 PIPE_FORMAT_Z32_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
125 PIPE_FORMAT_Z32_FLOAT
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT
)
126 PIPE_FORMAT_S8Z24_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_SZ00
, 1, 3, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
127 PIPE_FORMAT_Z24S8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_ZS00
, 3, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
128 PIPE_FORMAT_X8Z24_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_0Z00
, 1, 3, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
129 PIPE_FORMAT_Z24X8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000
, 3, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
130 PIPE_FORMAT_S8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_S000
, 1, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
131 PIPE_FORMAT_R64_FLOAT
= _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_R001
, 1, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT
)
132 PIPE_FORMAT_R64G64_FLOAT
= _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RG01
, 1, 1, 0, 0, PIPE_FORMAT_TYPE_FLOAT
)
133 PIPE_FORMAT_R64G64B64_FLOAT
= _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RGB1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_FLOAT
)
134 PIPE_FORMAT_R64G64B64A64_FLOAT
= _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RGBA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_FLOAT
)
135 PIPE_FORMAT_R32_FLOAT
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT
)
136 PIPE_FORMAT_R32G32_FLOAT
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 4, 4, 0, 0, PIPE_FORMAT_TYPE_FLOAT
)
137 PIPE_FORMAT_R32G32B32_FLOAT
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 4, 4, 4, 0, PIPE_FORMAT_TYPE_FLOAT
)
138 PIPE_FORMAT_R32G32B32A32_FLOAT
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 4, 4, 4, 4, PIPE_FORMAT_TYPE_FLOAT
)
139 PIPE_FORMAT_R32_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
140 PIPE_FORMAT_R32G32_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 4, 4, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
141 PIPE_FORMAT_R32G32B32_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 4, 4, 4, 0, PIPE_FORMAT_TYPE_UNORM
)
142 PIPE_FORMAT_R32G32B32A32_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 4, 4, 4, 4, PIPE_FORMAT_TYPE_UNORM
)
143 PIPE_FORMAT_R32_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_USCALED
)
144 PIPE_FORMAT_R32G32_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 4, 4, 0, 0, PIPE_FORMAT_TYPE_USCALED
)
145 PIPE_FORMAT_R32G32B32_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 4, 4, 4, 0, PIPE_FORMAT_TYPE_USCALED
)
146 PIPE_FORMAT_R32G32B32A32_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 4, 4, 4, 4, PIPE_FORMAT_TYPE_USCALED
)
147 PIPE_FORMAT_R32_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_SNORM
)
148 PIPE_FORMAT_R32G32_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 4, 4, 0, 0, PIPE_FORMAT_TYPE_SNORM
)
149 PIPE_FORMAT_R32G32B32_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 4, 4, 4, 0, PIPE_FORMAT_TYPE_SNORM
)
150 PIPE_FORMAT_R32G32B32A32_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 4, 4, 4, 4, PIPE_FORMAT_TYPE_SNORM
)
151 PIPE_FORMAT_R32_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 4, 0, 0, 0, PIPE_FORMAT_TYPE_SSCALED
)
152 PIPE_FORMAT_R32G32_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 4, 4, 0, 0, PIPE_FORMAT_TYPE_SSCALED
)
153 PIPE_FORMAT_R32G32B32_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 4, 4, 4, 0, PIPE_FORMAT_TYPE_SSCALED
)
154 PIPE_FORMAT_R32G32B32A32_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 4, 4, 4, 4, PIPE_FORMAT_TYPE_SSCALED
)
155 PIPE_FORMAT_R16_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 2, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
156 PIPE_FORMAT_R16G16_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 2, 2, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
157 PIPE_FORMAT_R16G16B16_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 2, 2, 2, 0, PIPE_FORMAT_TYPE_UNORM
)
158 PIPE_FORMAT_R16G16B16A16_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 2, 2, 2, 2, PIPE_FORMAT_TYPE_UNORM
)
159 PIPE_FORMAT_R16_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 2, 0, 0, 0, PIPE_FORMAT_TYPE_USCALED
)
160 PIPE_FORMAT_R16G16_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 2, 2, 0, 0, PIPE_FORMAT_TYPE_USCALED
)
161 PIPE_FORMAT_R16G16B16_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 2, 2, 2, 0, PIPE_FORMAT_TYPE_USCALED
)
162 PIPE_FORMAT_R16G16B16A16_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 2, 2, 2, 2, PIPE_FORMAT_TYPE_USCALED
)
163 PIPE_FORMAT_R16_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 2, 0, 0, 0, PIPE_FORMAT_TYPE_SNORM
)
164 PIPE_FORMAT_R16G16_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 2, 2, 0, 0, PIPE_FORMAT_TYPE_SNORM
)
165 PIPE_FORMAT_R16G16B16_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 2, 2, 2, 0, PIPE_FORMAT_TYPE_SNORM
)
166 PIPE_FORMAT_R16G16B16A16_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 2, 2, 2, 2, PIPE_FORMAT_TYPE_SNORM
)
167 PIPE_FORMAT_R16_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 2, 0, 0, 0, PIPE_FORMAT_TYPE_SSCALED
)
168 PIPE_FORMAT_R16G16_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 2, 2, 0, 0, PIPE_FORMAT_TYPE_SSCALED
)
169 PIPE_FORMAT_R16G16B16_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 2, 2, 2, 0, PIPE_FORMAT_TYPE_SSCALED
)
170 PIPE_FORMAT_R16G16B16A16_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 2, 2, 2, 2, PIPE_FORMAT_TYPE_SSCALED
)
171 PIPE_FORMAT_R8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 1, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
172 PIPE_FORMAT_R8G8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 1, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM
)
173 PIPE_FORMAT_R8G8B8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_UNORM
)
174 PIPE_FORMAT_R8G8B8A8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
175 PIPE_FORMAT_R8G8B8X8_UNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM
)
176 PIPE_FORMAT_R8_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 1, 0, 0, 0, PIPE_FORMAT_TYPE_USCALED
)
177 PIPE_FORMAT_R8G8_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 1, 1, 0, 0, PIPE_FORMAT_TYPE_USCALED
)
178 PIPE_FORMAT_R8G8B8_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_USCALED
)
179 PIPE_FORMAT_R8G8B8A8_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_USCALED
)
180 PIPE_FORMAT_R8G8B8X8_USCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_USCALED
)
181 PIPE_FORMAT_R8_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 1, 0, 0, 0, PIPE_FORMAT_TYPE_SNORM
)
182 PIPE_FORMAT_R8G8_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 1, 1, 0, 0, PIPE_FORMAT_TYPE_SNORM
)
183 PIPE_FORMAT_R8G8B8_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SNORM
)
184 PIPE_FORMAT_R8G8B8A8_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SNORM
)
185 PIPE_FORMAT_R8G8B8X8_SNORM
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SNORM
)
186 PIPE_FORMAT_R8_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001
, 1, 0, 0, 0, PIPE_FORMAT_TYPE_SSCALED
)
187 PIPE_FORMAT_R8G8_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01
, 1, 1, 0, 0, PIPE_FORMAT_TYPE_SSCALED
)
188 PIPE_FORMAT_R8G8B8_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SSCALED
)
189 PIPE_FORMAT_R8G8B8A8_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SSCALED
)
190 PIPE_FORMAT_R8G8B8X8_SSCALED
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SSCALED
)
191 PIPE_FORMAT_L8_SRGB
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRR1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SRGB
)
192 PIPE_FORMAT_A8_L8_SRGB
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRRG
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SRGB
)
193 PIPE_FORMAT_R8G8B8_SRGB
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SRGB
)
194 PIPE_FORMAT_R8G8B8A8_SRGB
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SRGB
)
195 PIPE_FORMAT_R8G8B8X8_SRGB
= _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1
, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SRGB
)
196 PIPE_FORMAT_DXT1_RGB
= _PIPE_FORMAT_DXT( 1, 8, 8, 8, 0 )
197 PIPE_FORMAT_DXT1_RGBA
= _PIPE_FORMAT_DXT( 1, 8, 8, 8, 8 )
198 PIPE_FORMAT_DXT3_RGBA
= _PIPE_FORMAT_DXT( 3, 8, 8, 8, 8 )
199 PIPE_FORMAT_DXT5_RGBA
= _PIPE_FORMAT_DXT( 5, 8, 8, 8, 8 )
202 PIPE_FORMAT_NONE
: "PIPE_FORMAT_NONE",
203 PIPE_FORMAT_A8R8G8B8_UNORM
: "PIPE_FORMAT_A8R8G8B8_UNORM",
204 PIPE_FORMAT_X8R8G8B8_UNORM
: "PIPE_FORMAT_X8R8G8B8_UNORM",
205 PIPE_FORMAT_B8G8R8A8_UNORM
: "PIPE_FORMAT_B8G8R8A8_UNORM",
206 PIPE_FORMAT_B8G8R8X8_UNORM
: "PIPE_FORMAT_B8G8R8X8_UNORM",
207 PIPE_FORMAT_A1R5G5B5_UNORM
: "PIPE_FORMAT_A1R5G5B5_UNORM",
208 PIPE_FORMAT_A4R4G4B4_UNORM
: "PIPE_FORMAT_A4R4G4B4_UNORM",
209 PIPE_FORMAT_R5G6B5_UNORM
: "PIPE_FORMAT_R5G6B5_UNORM",
210 PIPE_FORMAT_L8_UNORM
: "PIPE_FORMAT_L8_UNORM",
211 PIPE_FORMAT_A8_UNORM
: "PIPE_FORMAT_A8_UNORM",
212 PIPE_FORMAT_I8_UNORM
: "PIPE_FORMAT_I8_UNORM",
213 PIPE_FORMAT_A8L8_UNORM
: "PIPE_FORMAT_A8L8_UNORM",
214 PIPE_FORMAT_YCBCR
: "PIPE_FORMAT_YCBCR",
215 PIPE_FORMAT_YCBCR_REV
: "PIPE_FORMAT_YCBCR_REV",
216 PIPE_FORMAT_Z16_UNORM
: "PIPE_FORMAT_Z16_UNORM",
217 PIPE_FORMAT_Z32_UNORM
: "PIPE_FORMAT_Z32_UNORM",
218 PIPE_FORMAT_Z32_FLOAT
: "PIPE_FORMAT_Z32_FLOAT",
219 PIPE_FORMAT_S8Z24_UNORM
: "PIPE_FORMAT_S8Z24_UNORM",
220 PIPE_FORMAT_Z24S8_UNORM
: "PIPE_FORMAT_Z24S8_UNORM",
221 PIPE_FORMAT_X8Z24_UNORM
: "PIPE_FORMAT_X8Z24_UNORM",
222 PIPE_FORMAT_Z24X8_UNORM
: "PIPE_FORMAT_Z24X8_UNORM",
223 PIPE_FORMAT_S8_UNORM
: "PIPE_FORMAT_S8_UNORM",
224 PIPE_FORMAT_R64_FLOAT
: "PIPE_FORMAT_R64_FLOAT",
225 PIPE_FORMAT_R64G64_FLOAT
: "PIPE_FORMAT_R64G64_FLOAT",
226 PIPE_FORMAT_R64G64B64_FLOAT
: "PIPE_FORMAT_R64G64B64_FLOAT",
227 PIPE_FORMAT_R64G64B64A64_FLOAT
: "PIPE_FORMAT_R64G64B64A64_FLOAT",
228 PIPE_FORMAT_R32_FLOAT
: "PIPE_FORMAT_R32_FLOAT",
229 PIPE_FORMAT_R32G32_FLOAT
: "PIPE_FORMAT_R32G32_FLOAT",
230 PIPE_FORMAT_R32G32B32_FLOAT
: "PIPE_FORMAT_R32G32B32_FLOAT",
231 PIPE_FORMAT_R32G32B32A32_FLOAT
: "PIPE_FORMAT_R32G32B32A32_FLOAT",
232 PIPE_FORMAT_R32_UNORM
: "PIPE_FORMAT_R32_UNORM",
233 PIPE_FORMAT_R32G32_UNORM
: "PIPE_FORMAT_R32G32_UNORM",
234 PIPE_FORMAT_R32G32B32_UNORM
: "PIPE_FORMAT_R32G32B32_UNORM",
235 PIPE_FORMAT_R32G32B32A32_UNORM
: "PIPE_FORMAT_R32G32B32A32_UNORM",
236 PIPE_FORMAT_R32_USCALED
: "PIPE_FORMAT_R32_USCALED",
237 PIPE_FORMAT_R32G32_USCALED
: "PIPE_FORMAT_R32G32_USCALED",
238 PIPE_FORMAT_R32G32B32_USCALED
: "PIPE_FORMAT_R32G32B32_USCALED",
239 PIPE_FORMAT_R32G32B32A32_USCALED
: "PIPE_FORMAT_R32G32B32A32_USCALED",
240 PIPE_FORMAT_R32_SNORM
: "PIPE_FORMAT_R32_SNORM",
241 PIPE_FORMAT_R32G32_SNORM
: "PIPE_FORMAT_R32G32_SNORM",
242 PIPE_FORMAT_R32G32B32_SNORM
: "PIPE_FORMAT_R32G32B32_SNORM",
243 PIPE_FORMAT_R32G32B32A32_SNORM
: "PIPE_FORMAT_R32G32B32A32_SNORM",
244 PIPE_FORMAT_R32_SSCALED
: "PIPE_FORMAT_R32_SSCALED",
245 PIPE_FORMAT_R32G32_SSCALED
: "PIPE_FORMAT_R32G32_SSCALED",
246 PIPE_FORMAT_R32G32B32_SSCALED
: "PIPE_FORMAT_R32G32B32_SSCALED",
247 PIPE_FORMAT_R32G32B32A32_SSCALED
: "PIPE_FORMAT_R32G32B32A32_SSCALED",
248 PIPE_FORMAT_R16_UNORM
: "PIPE_FORMAT_R16_UNORM",
249 PIPE_FORMAT_R16G16_UNORM
: "PIPE_FORMAT_R16G16_UNORM",
250 PIPE_FORMAT_R16G16B16_UNORM
: "PIPE_FORMAT_R16G16B16_UNORM",
251 PIPE_FORMAT_R16G16B16A16_UNORM
: "PIPE_FORMAT_R16G16B16A16_UNORM",
252 PIPE_FORMAT_R16_USCALED
: "PIPE_FORMAT_R16_USCALED",
253 PIPE_FORMAT_R16G16_USCALED
: "PIPE_FORMAT_R16G16_USCALED",
254 PIPE_FORMAT_R16G16B16_USCALED
: "PIPE_FORMAT_R16G16B16_USCALED",
255 PIPE_FORMAT_R16G16B16A16_USCALED
: "PIPE_FORMAT_R16G16B16A16_USCALED",
256 PIPE_FORMAT_R16_SNORM
: "PIPE_FORMAT_R16_SNORM",
257 PIPE_FORMAT_R16G16_SNORM
: "PIPE_FORMAT_R16G16_SNORM",
258 PIPE_FORMAT_R16G16B16_SNORM
: "PIPE_FORMAT_R16G16B16_SNORM",
259 PIPE_FORMAT_R16G16B16A16_SNORM
: "PIPE_FORMAT_R16G16B16A16_SNORM",
260 PIPE_FORMAT_R16_SSCALED
: "PIPE_FORMAT_R16_SSCALED",
261 PIPE_FORMAT_R16G16_SSCALED
: "PIPE_FORMAT_R16G16_SSCALED",
262 PIPE_FORMAT_R16G16B16_SSCALED
: "PIPE_FORMAT_R16G16B16_SSCALED",
263 PIPE_FORMAT_R16G16B16A16_SSCALED
: "PIPE_FORMAT_R16G16B16A16_SSCALED",
264 PIPE_FORMAT_R8_UNORM
: "PIPE_FORMAT_R8_UNORM",
265 PIPE_FORMAT_R8G8_UNORM
: "PIPE_FORMAT_R8G8_UNORM",
266 PIPE_FORMAT_R8G8B8_UNORM
: "PIPE_FORMAT_R8G8B8_UNORM",
267 PIPE_FORMAT_R8G8B8A8_UNORM
: "PIPE_FORMAT_R8G8B8A8_UNORM",
268 PIPE_FORMAT_R8G8B8X8_UNORM
: "PIPE_FORMAT_R8G8B8X8_UNORM",
269 PIPE_FORMAT_R8_USCALED
: "PIPE_FORMAT_R8_USCALED",
270 PIPE_FORMAT_R8G8_USCALED
: "PIPE_FORMAT_R8G8_USCALED",
271 PIPE_FORMAT_R8G8B8_USCALED
: "PIPE_FORMAT_R8G8B8_USCALED",
272 PIPE_FORMAT_R8G8B8A8_USCALED
: "PIPE_FORMAT_R8G8B8A8_USCALED",
273 PIPE_FORMAT_R8G8B8X8_USCALED
: "PIPE_FORMAT_R8G8B8X8_USCALED",
274 PIPE_FORMAT_R8_SNORM
: "PIPE_FORMAT_R8_SNORM",
275 PIPE_FORMAT_R8G8_SNORM
: "PIPE_FORMAT_R8G8_SNORM",
276 PIPE_FORMAT_R8G8B8_SNORM
: "PIPE_FORMAT_R8G8B8_SNORM",
277 PIPE_FORMAT_R8G8B8A8_SNORM
: "PIPE_FORMAT_R8G8B8A8_SNORM",
278 PIPE_FORMAT_R8G8B8X8_SNORM
: "PIPE_FORMAT_R8G8B8X8_SNORM",
279 PIPE_FORMAT_R8_SSCALED
: "PIPE_FORMAT_R8_SSCALED",
280 PIPE_FORMAT_R8G8_SSCALED
: "PIPE_FORMAT_R8G8_SSCALED",
281 PIPE_FORMAT_R8G8B8_SSCALED
: "PIPE_FORMAT_R8G8B8_SSCALED",
282 PIPE_FORMAT_R8G8B8A8_SSCALED
: "PIPE_FORMAT_R8G8B8A8_SSCALED",
283 PIPE_FORMAT_R8G8B8X8_SSCALED
: "PIPE_FORMAT_R8G8B8X8_SSCALED",
284 PIPE_FORMAT_L8_SRGB
: "PIPE_FORMAT_L8_SRGB",
285 PIPE_FORMAT_A8_L8_SRGB
: "PIPE_FORMAT_A8_L8_SRGB",
286 PIPE_FORMAT_R8G8B8_SRGB
: "PIPE_FORMAT_R8G8B8_SRGB",
287 PIPE_FORMAT_R8G8B8A8_SRGB
: "PIPE_FORMAT_R8G8B8A8_SRGB",
288 PIPE_FORMAT_R8G8B8X8_SRGB
: "PIPE_FORMAT_R8G8B8X8_SRGB",
289 PIPE_FORMAT_DXT1_RGB
: "PIPE_FORMAT_DXT1_RGB",
290 PIPE_FORMAT_DXT1_RGBA
: "PIPE_FORMAT_DXT1_RGBA",
291 PIPE_FORMAT_DXT3_RGBA
: "PIPE_FORMAT_DXT3_RGBA",
292 PIPE_FORMAT_DXT5_RGBA
: "PIPE_FORMAT_DXT5_RGBA",
296 def read_header(infile
):
298 header
= infile
.read(struct
.calcsize(header_fmt
))
299 return struct
.unpack_from(header_fmt
, header
)
301 def read_pixel(infile
, fmt
, cpp
):
303 r
, g
, b
, a
= map(ord, infile
.read(4))
307 def process(infilename
, outfilename
):
308 infile
= open(infilename
, "rb")
309 format
, cpp
, width
, height
= read_header(infile
)
310 sys
.stderr
.write("format = %s, cpp = %u, width = %u, height = %u\n" % (formats
[format
], cpp
, width
, height
))
311 outimage
= Image
.new(
313 size
=(width
, height
),
315 outpixels
= outimage
.load()
316 for y
in range(height
):
317 for x
in range(width
):
318 r
, g
, b
, a
= read_pixel(infile
, format
, cpp
)
319 outpixels
[x
, y
] = r
, g
, b
320 outimage
.save(outfilename
, "PNG")
324 if sys
.platform
== 'win32':
326 from glob
import glob
328 for arg
in sys
.argv
[1:]:
329 args
.extend(glob(arg
))
332 for infilename
in args
:
333 root
, ext
= os
.path
.splitext(infilename
)
334 outfilename
= root
+ ".png"
335 process(infilename
, outfilename
)
338 if __name__
== '__main__':