diff --git a/glamor/glamor.c b/glamor/glamor.c index bbcf94258..3634e70da 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -169,20 +169,7 @@ glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, if (w == 0 || h == 0 || type == GLAMOR_MEMORY) return pixmap; - switch (depth) { -#if 0 - case 8: - format = GL_ALPHA; - break; -#endif - case 24: - format = GL_RGB; - break; - default: - format = GL_RGBA; - break; - } - + gl_iformat_for_depth(depth, &format); /* Create the texture used to store the pixmap's data. */ dispatch->glGenTextures(1, &tex); dispatch->glBindTexture(GL_TEXTURE_2D, tex); diff --git a/glamor/glamor_pixmap.c b/glamor/glamor_pixmap.c index 884dd83a7..f43a90b3c 100644 --- a/glamor/glamor_pixmap.c +++ b/glamor/glamor_pixmap.c @@ -221,23 +221,10 @@ __glamor_upload_pixmap_to_texture(PixmapPtr pixmap, GLenum format, void *texels; GLenum iformat; - switch (pixmap->drawable.depth) { -#if 0 - case 8: - iformat = GL_ALPHA; - break; -#endif - case 24: - iformat = GL_RGB; - break; - default: - iformat = GL_RGBA; - break; - } - - if (glamor_priv->gl_flavor == GLAMOR_GL_ES2) { + if (glamor_priv->gl_flavor == GLAMOR_GL_ES2) iformat = format; - } + else + gl_iformat_for_depth(pixmap->drawable.depth, &iformat); stride = pixmap->devKind; row_length = (stride * 8) / pixmap->drawable.bitsPerPixel; diff --git a/glamor/glamor_utils.h b/glamor/glamor_utils.h index dfb77113e..49c7e1de6 100644 --- a/glamor/glamor_utils.h +++ b/glamor/glamor_utils.h @@ -224,6 +224,26 @@ format_for_depth(int depth) } } +static inline void +gl_iformat_for_depth(int depth, GLenum * format) +{ + switch (depth) { +#if 0 + case 8: + *format = GL_ALPHA; + break; +#endif + case 24: + *format = GL_RGB; + break; + default: + *format = GL_RGBA; + break; + } +} + + + static inline CARD32 format_for_pixmap(PixmapPtr pixmap) {