From d7f78065acb09769195a58303ce3e9a401bf7a43 Mon Sep 17 00:00:00 2001 From: George Sapountzis Date: Thu, 25 Mar 2010 17:01:51 +0200 Subject: st/dri: add inline for dri2 check done in multiple places --- src/gallium/state_trackers/dri/dri_screen.c | 9 ++------- src/gallium/state_trackers/dri/dri_screen.h | 10 ++++++++++ src/gallium/state_trackers/dri/dri_st_api.c | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c index 17b9f1c5faf..733d71f9959 100644 --- a/src/gallium/state_trackers/dri/dri_screen.c +++ b/src/gallium/state_trackers/dri/dri_screen.c @@ -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: diff --git a/src/gallium/state_trackers/dri/dri_screen.h b/src/gallium/state_trackers/dri/dri_screen.h index e9944e0f63e..3b805c539f9 100644 --- a/src/gallium/state_trackers/dri/dri_screen.h +++ b/src/gallium/state_trackers/dri/dri_screen.h @@ -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 ** diff --git a/src/gallium/state_trackers/dri/dri_st_api.c b/src/gallium/state_trackers/dri/dri_st_api.c index 263c1e19a70..67ab89e7aa8 100644 --- a/src/gallium/state_trackers/dri/dri_st_api.c +++ b/src/gallium/state_trackers/dri/dri_st_api.c @@ -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; -- cgit v1.2.3