diff --git a/glamor/glamor_transform.c b/glamor/glamor_transform.c index 17b10666e..fc96fd670 100644 --- a/glamor/glamor_transform.c +++ b/glamor/glamor_transform.c @@ -104,20 +104,20 @@ glamor_set_destination_drawable(DrawablePtr drawable, */ void -glamor_set_color(PixmapPtr pixmap, - CARD32 pixel, - GLint uniform) +glamor_set_color_depth(ScreenPtr pScreen, + int depth, + CARD32 pixel, + GLint uniform) { - glamor_screen_private *glamor_priv = - glamor_get_screen_private((pixmap)->drawable.pScreen); + glamor_screen_private *glamor_priv = glamor_get_screen_private(pScreen); float color[4]; glamor_get_rgba_from_pixel(pixel, &color[0], &color[1], &color[2], &color[3], - format_for_pixmap(pixmap)); + format_for_depth(depth)); - if ((pixmap->drawable.depth == 1 || pixmap->drawable.depth == 8) && - glamor_priv->one_channel_format == GL_RED) + if ((depth == 1 || depth == 8) && + glamor_priv->one_channel_format == GL_RED) color[0] = color[3]; glUniform4fv(uniform, 1, color); diff --git a/glamor/glamor_transform.h b/glamor/glamor_transform.h index ab7b2bcb3..5a520ebb0 100644 --- a/glamor/glamor_transform.h +++ b/glamor/glamor_transform.h @@ -33,9 +33,19 @@ glamor_set_destination_drawable(DrawablePtr drawable, int *p_off_y); void +glamor_set_color_depth(ScreenPtr pScreen, + int depth, + CARD32 pixel, + GLint uniform); + +static inline void glamor_set_color(PixmapPtr pixmap, CARD32 pixel, - GLint uniform); + GLint uniform) +{ + glamor_set_color_depth(pixmap->drawable.pScreen, + pixmap->drawable.depth, pixel, uniform); +} Bool glamor_set_texture_pixmap(PixmapPtr texture);