summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorGeorge Sapountzis <gsapountzis@gmail.com>2010-03-25 17:01:51 +0200
committerGeorge Sapountzis <gsapountzis@gmail.com>2010-03-25 17:01:51 +0200
commitd7f78065acb09769195a58303ce3e9a401bf7a43 (patch)
tree3e849dc3612eaec4150a6b7e3049d5b9422caa41 /src/gallium/state_trackers
parent20755c5c4c88f8c442fc5b65f5368a32d0693a07 (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.c9
-rw-r--r--src/gallium/state_trackers/dri/dri_screen.h10
-rw-r--r--src/gallium/state_trackers/dri/dri_st_api.c2
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;