st/dri: add inline for dri2 check done in multiple places

This commit is contained in:
George Sapountzis 2010-03-25 17:01:51 +02:00
parent 20755c5c4c
commit d7f78065ac
3 changed files with 13 additions and 8 deletions

View File

@ -148,9 +148,7 @@ dri_fill_in_modes(struct dri_screen *screen,
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0);
/* We can only get a 16 or 32 bit depth buffer with getBuffersWithFormat */
if (screen->sPriv->dri2.loader &&
(screen->sPriv->dri2.loader->base.version > 2) &&
(screen->sPriv->dri2.loader->getBuffersWithFormat != NULL)) {
if (dri_with_format(screen->sPriv)) {
pf_z16 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z16_UNORM,
PIPE_TEXTURE_2D,
PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
@ -352,8 +350,6 @@ dri_init_screen2(__DRIscreen * sPriv)
{
struct dri_screen *screen;
struct drm_create_screen_arg arg;
const __DRIdri2LoaderExtension *dri2_ext =
sPriv->dri2.loader;
screen = CALLOC_STRUCT(dri_screen);
if (!screen)
@ -379,8 +375,7 @@ dri_init_screen2(__DRIscreen * sPriv)
driParseOptionInfo(&screen->optionCache,
__driConfigOptions, __driNConfigOptions);
screen->auto_fake_front = dri2_ext->base.version >= 3 &&
dri2_ext->getBuffersWithFormat != NULL;
screen->auto_fake_front = dri_with_format(sPriv);
return dri_fill_in_modes(screen, 32);
fail:

View File

@ -75,6 +75,16 @@ dri_screen(__DRIscreen * sPriv)
return (struct dri_screen *)sPriv->private;
}
static INLINE boolean
dri_with_format(__DRIscreen * sPriv)
{
const __DRIdri2LoaderExtension *loader = sPriv->dri2.loader;
return loader
&& (loader->base.version >= 3)
&& (loader->getBuffersWithFormat != NULL);
}
extern const uint __driNConfigOptions;
const __DRIconfig **

View File

@ -172,7 +172,7 @@ dri_drawable_get_buffers(struct dri_drawable *drawable,
unsigned num_attachments, i;
assert(loader);
with_format = (loader->base.version > 2 && loader->getBuffersWithFormat);
with_format = dri_with_format(drawable->sPriv);
num_attachments = 0;