Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5563 | serge | 1 | /************************************************************************** |
2 | * |
||
3 | * Copyright 2010 VMware, Inc. |
||
4 | * All Rights Reserved. |
||
5 | * |
||
6 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
7 | * copy of this software and associated documentation files (the |
||
8 | * "Software"), to deal in the Software without restriction, including |
||
9 | * without limitation the rights to use, copy, modify, merge, publish, |
||
10 | * distribute, sub license, and/or sell copies of the Software, and to |
||
11 | * permit persons to whom the Software is furnished to do so, subject to |
||
12 | * the following conditions: |
||
13 | * |
||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
||
17 | * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, |
||
18 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
||
19 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE |
||
20 | * USE OR OTHER DEALINGS IN THE SOFTWARE. |
||
21 | * |
||
22 | * The above copyright notice and this permission notice (including the |
||
23 | * next paragraph) shall be included in all copies or substantial portions |
||
24 | * of the Software. |
||
25 | * |
||
26 | **************************************************************************/ |
||
27 | |||
28 | |||
29 | #ifndef U_FORMAT_S3TC_H_ |
||
30 | #define U_FORMAT_S3TC_H_ |
||
31 | |||
32 | |||
33 | #include "pipe/p_compiler.h" |
||
34 | |||
35 | |||
36 | enum util_format_dxtn { |
||
37 | UTIL_FORMAT_DXT1_RGB = 0x83F0, |
||
38 | UTIL_FORMAT_DXT1_RGBA = 0x83F1, |
||
39 | UTIL_FORMAT_DXT3_RGBA = 0x83F2, |
||
40 | UTIL_FORMAT_DXT5_RGBA = 0x83F3 |
||
41 | }; |
||
42 | |||
43 | |||
44 | typedef void |
||
45 | (*util_format_dxtn_fetch_t)( int src_stride, |
||
46 | const uint8_t *src, |
||
47 | int col, int row, |
||
48 | uint8_t *dst ); |
||
49 | |||
50 | typedef void |
||
51 | (*util_format_dxtn_pack_t)( int src_comps, |
||
52 | int width, int height, |
||
53 | const uint8_t *src, |
||
54 | enum util_format_dxtn dst_format, |
||
55 | uint8_t *dst, |
||
56 | int dst_stride); |
||
57 | |||
58 | extern boolean util_format_s3tc_enabled; |
||
59 | |||
60 | extern util_format_dxtn_fetch_t util_format_dxt1_rgb_fetch; |
||
61 | extern util_format_dxtn_fetch_t util_format_dxt1_rgba_fetch; |
||
62 | extern util_format_dxtn_fetch_t util_format_dxt3_rgba_fetch; |
||
63 | extern util_format_dxtn_fetch_t util_format_dxt5_rgba_fetch; |
||
64 | |||
65 | extern util_format_dxtn_pack_t util_format_dxtn_pack; |
||
66 | |||
67 | |||
68 | void |
||
69 | util_format_s3tc_init(void); |
||
70 | |||
71 | |||
72 | void |
||
73 | util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
74 | |||
75 | void |
||
76 | util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
77 | |||
78 | void |
||
79 | util_format_dxt1_rgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
80 | |||
81 | void |
||
82 | util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
83 | |||
84 | void |
||
85 | util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
86 | |||
87 | void |
||
88 | util_format_dxt1_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
89 | |||
90 | void |
||
91 | util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
92 | |||
93 | void |
||
94 | util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
95 | |||
96 | void |
||
97 | util_format_dxt3_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
98 | |||
99 | void |
||
100 | util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
101 | |||
102 | void |
||
103 | util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
104 | |||
105 | void |
||
106 | util_format_dxt5_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
107 | |||
108 | void |
||
109 | util_format_dxt1_srgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
110 | |||
111 | void |
||
112 | util_format_dxt1_srgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
113 | |||
114 | void |
||
115 | util_format_dxt1_srgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
116 | |||
117 | void |
||
118 | util_format_dxt1_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
119 | |||
120 | void |
||
121 | util_format_dxt1_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
122 | |||
123 | void |
||
124 | util_format_dxt1_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
125 | |||
126 | void |
||
127 | util_format_dxt3_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
128 | |||
129 | void |
||
130 | util_format_dxt3_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
131 | |||
132 | void |
||
133 | util_format_dxt3_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
134 | |||
135 | void |
||
136 | util_format_dxt5_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
137 | |||
138 | void |
||
139 | util_format_dxt5_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
140 | |||
141 | void |
||
142 | util_format_dxt5_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j); |
||
143 | |||
144 | |||
145 | void |
||
146 | util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
147 | |||
148 | void |
||
149 | util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
150 | |||
151 | void |
||
152 | util_format_dxt1_rgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
153 | |||
154 | void |
||
155 | util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
156 | |||
157 | void |
||
158 | util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
159 | |||
160 | void |
||
161 | util_format_dxt1_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
162 | |||
163 | void |
||
164 | util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
165 | |||
166 | void |
||
167 | util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
168 | |||
169 | void |
||
170 | util_format_dxt3_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
171 | |||
172 | void |
||
173 | util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
174 | |||
175 | void |
||
176 | util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
177 | |||
178 | void |
||
179 | util_format_dxt5_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
180 | |||
181 | void |
||
182 | util_format_dxt1_srgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
183 | |||
184 | void |
||
185 | util_format_dxt1_srgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
186 | |||
187 | void |
||
188 | util_format_dxt1_srgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
189 | |||
190 | void |
||
191 | util_format_dxt1_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
192 | |||
193 | void |
||
194 | util_format_dxt1_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
195 | |||
196 | void |
||
197 | util_format_dxt1_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
198 | |||
199 | void |
||
200 | util_format_dxt3_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
201 | |||
202 | void |
||
203 | util_format_dxt3_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
204 | |||
205 | void |
||
206 | util_format_dxt3_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
207 | |||
208 | void |
||
209 | util_format_dxt5_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
210 | |||
211 | void |
||
212 | util_format_dxt5_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height); |
||
213 | |||
214 | void |
||
215 | util_format_dxt5_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j); |
||
216 | |||
217 | |||
218 | #endif /* U_FORMAT_S3TC_H_ */ |