diff options
author | George Sapountzis <gsapountzis@gmail.com> | 2010-03-25 17:01:51 +0200 |
---|---|---|
committer | George Sapountzis <gsapountzis@gmail.com> | 2010-03-25 17:01:51 +0200 |
commit | d7f78065acb09769195a58303ce3e9a401bf7a43 (patch) | |
tree | 3e849dc3612eaec4150a6b7e3049d5b9422caa41 /src/gallium/state_trackers | |
parent | 20755c5c4c88f8c442fc5b65f5368a32d0693a07 (diff) |
st/dri: add inline for dri2 check done in multiple places
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r-- | src/gallium/state_trackers/dri/dri_screen.c | 9 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/dri_screen.h | 10 | ||||
-rw-r--r-- | 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; |