85
85
{ PIPE_FORMAT_B4G4R4A4_UNORM, { 4, 4, 4, 4}, {16, 4, 0, 12} }
88
static const struct stw_pf_color_info
89
stw_pf_color_extended[] = {
90
{ PIPE_FORMAT_R32G32B32A32_FLOAT, { 32, 32, 32, 32}, { 0, 32, 64, 96} }
89
93
static const struct stw_pf_depth_info
90
94
stw_pf_depth_stencil[] = {
215
* Add the depth/stencil/accum/ms variants for a particular color format.
218
add_color_format_variants(const struct stw_pf_color_info *color,
221
struct pipe_screen *screen = stw_dev->screen;
222
unsigned ms, db, ds, acc;
223
unsigned bind_flags = PIPE_BIND_RENDER_TARGET;
226
bind_flags |= PIPE_BIND_DISPLAY_TARGET;
229
if (!screen->is_format_supported(screen, color->format,
230
PIPE_TEXTURE_2D, 0, bind_flags)) {
234
for (ms = 0; ms < Elements(stw_pf_multisample); ms++) {
235
unsigned samples = stw_pf_multisample[ms];
237
/* FIXME: re-enabled MSAA when we can query it */
241
for (db = 0; db < Elements(stw_pf_doublebuffer); db++) {
242
unsigned doublebuffer = stw_pf_doublebuffer[db];
244
for (ds = 0; ds < Elements(stw_pf_depth_stencil); ds++) {
245
const struct stw_pf_depth_info *depth = &stw_pf_depth_stencil[ds];
247
if (!screen->is_format_supported(screen, depth->format,
249
PIPE_BIND_DEPTH_STENCIL)) {
253
for (acc = 0; acc < 2; acc++) {
254
stw_pixelformat_add(stw_dev, extended, color, depth,
255
acc * 16, doublebuffer, samples);
208
264
stw_pixelformat_init( void )
210
struct pipe_screen *screen = stw_dev->screen;
213
268
assert( !stw_dev->pixelformat_count );
214
269
assert( !stw_dev->pixelformat_extended_count );
216
for(i = 0; i < Elements(stw_pf_multisample); ++i) {
217
unsigned samples = stw_pf_multisample[i];
219
/* FIXME: re-enabled MSAA when we can query it */
223
for(j = 0; j < Elements(stw_pf_color); ++j) {
224
const struct stw_pf_color_info *color = &stw_pf_color[j];
226
if(!screen->is_format_supported(screen, color->format, PIPE_TEXTURE_2D,
227
0, PIPE_BIND_RENDER_TARGET |
228
PIPE_BIND_DISPLAY_TARGET))
231
for(k = 0; k < Elements(stw_pf_doublebuffer); ++k) {
232
unsigned doublebuffer = stw_pf_doublebuffer[k];
234
for(l = 0; l < Elements(stw_pf_depth_stencil); ++l) {
235
const struct stw_pf_depth_info *depth = &stw_pf_depth_stencil[l];
237
if(!screen->is_format_supported(screen, depth->format, PIPE_TEXTURE_2D,
238
0, PIPE_BIND_DEPTH_STENCIL))
241
stw_pixelformat_add( stw_dev, color, depth, 0, doublebuffer, samples );
242
stw_pixelformat_add( stw_dev, color, depth, 16, doublebuffer, samples );
271
/* normal, displayable formats */
272
for (i = 0; i < Elements(stw_pf_color); i++) {
273
add_color_format_variants(&stw_pf_color[i], FALSE);
276
/* extended, pbuffer-only formats */
277
for (i = 0; i < Elements(stw_pf_color_extended); i++) {
278
add_color_format_variants(&stw_pf_color_extended[i], TRUE);
248
281
assert( stw_dev->pixelformat_count <= stw_dev->pixelformat_extended_count );
249
282
assert( stw_dev->pixelformat_extended_count <= STW_MAX_PIXELFORMATS );