Mesa (master): st/dri: add inline for dri2 check done in multiple places

George Sapountzis gsap7 at kemper.freedesktop.org
Thu Mar 25 15:03:04 UTC 2010


Module: Mesa
Branch: master
Commit: d7f78065acb09769195a58303ce3e9a401bf7a43
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7f78065acb09769195a58303ce3e9a401bf7a43

Author: George Sapountzis <gsapountzis at gmail.com>
Date:   Thu Mar 25 17:01:51 2010 +0200

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 17b9f1c..733d71f 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 e9944e0..3b805c5 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 263c1e1..67ab89e 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;
 




More information about the mesa-commit mailing list