summaryrefslogtreecommitdiff
path: root/glamor
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2019-03-26 15:58:59 -0700
committerAdam Jackson <ajax@nwnk.net>2019-04-17 19:34:48 +0000
commit34485be2560ea6f96a849b5d05edb1de28caf2f3 (patch)
tree0b18a60767a986f6b1d0fc5c411d6fa03d239917 /glamor
parent1b2e224d7dca9d6d86d6150ba0a5ddf0abee1f22 (diff)
glamor: Stop trying to store the pixmap's "format" in glamor_pixmap_fbo.
"format" is a bit of a confused term (internalformat vs GL format), and all we really needed was "is this GL_RED?" Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'glamor')
-rw-r--r--glamor/glamor.c3
-rw-r--r--glamor/glamor_fbo.c7
-rw-r--r--glamor/glamor_priv.h13
-rw-r--r--glamor/glamor_render.c2
-rw-r--r--glamor/glamor_transfer.c2
5 files changed, 9 insertions, 18 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c
index 7175b3fcb..2459bf9a3 100644
--- a/glamor/glamor.c
+++ b/glamor/glamor.c
@@ -169,8 +169,7 @@ glamor_bind_texture(glamor_screen_private *glamor_priv, GLenum texture,
/* Is the operand a GL_RED fbo?
*/
- if (glamor_fbo_red_is_alpha(glamor_priv, fbo)) {
-
+ if (fbo->is_red) {
/* If destination is also GL_RED, then preserve the bits in
* the R channel */
diff --git a/glamor/glamor_fbo.c b/glamor/glamor_fbo.c
index e8c4330b3..525be3d77 100644
--- a/glamor/glamor_fbo.c
+++ b/glamor/glamor_fbo.c
@@ -95,7 +95,7 @@ glamor_pixmap_ensure_fb(glamor_screen_private *glamor_priv,
glamor_pixmap_fbo *
glamor_create_fbo_from_tex(glamor_screen_private *glamor_priv,
- int w, int h, GLenum format, GLint tex, int flag)
+ int w, int h, Bool is_red, GLint tex, int flag)
{
glamor_pixmap_fbo *fbo;
@@ -106,7 +106,7 @@ glamor_create_fbo_from_tex(glamor_screen_private *glamor_priv,
fbo->tex = tex;
fbo->width = w;
fbo->height = h;
- fbo->format = format;
+ fbo->is_red = is_red;
if (flag != GLAMOR_CREATE_FBO_NO_FBO) {
if (glamor_pixmap_ensure_fb(glamor_priv, fbo) != 0) {
@@ -163,7 +163,8 @@ glamor_create_fbo(glamor_screen_private *glamor_priv,
if (!tex) /* Texture creation failed due to GL_OUT_OF_MEMORY */
return NULL;
- return glamor_create_fbo_from_tex(glamor_priv, w, h, format, tex, flag);
+ return glamor_create_fbo_from_tex(glamor_priv, w, h, format == GL_RED,
+ tex, flag);
}
/**
diff --git a/glamor/glamor_priv.h b/glamor/glamor_priv.h
index fc8495b98..1c005fb76 100644
--- a/glamor/glamor_priv.h
+++ b/glamor/glamor_priv.h
@@ -311,8 +311,7 @@ typedef struct glamor_pixmap_fbo {
GLuint fb; /**< GL FBO name */
int width; /**< width in pixels */
int height; /**< height in pixels */
- GLenum format; /**< GL format used to create the texture. */
- GLenum type; /**< GL type used to create the texture. */
+ Bool is_red;
} glamor_pixmap_fbo;
typedef struct glamor_pixmap_clipped_regions {
@@ -527,7 +526,7 @@ glamor_pixmap_fbo *glamor_pixmap_detach_fbo(glamor_pixmap_private *
void glamor_pixmap_attach_fbo(PixmapPtr pixmap, glamor_pixmap_fbo *fbo);
glamor_pixmap_fbo *glamor_create_fbo_from_tex(glamor_screen_private *
glamor_priv, int w, int h,
- GLenum format, GLint tex,
+ Bool is_red, GLint tex,
int flag);
glamor_pixmap_fbo *glamor_create_fbo(glamor_screen_private *glamor_priv, int w,
int h, GLenum format, int flag);
@@ -542,14 +541,6 @@ static inline Bool glamor_picture_is_alpha(PicturePtr picture)
return picture->format == PICT_a1 || picture->format == PICT_a8;
}
-/* Return whether 'fbo' is storing alpha bits in the red channel */
-static inline Bool
-glamor_fbo_red_is_alpha(glamor_screen_private *glamor_priv, glamor_pixmap_fbo *fbo)
-{
- /* True when the format is GL_RED (that can only happen when our one channel format is GL_RED */
- return fbo->format == GL_RED;
-}
-
/* Return whether 'picture' is storing alpha bits in the red channel */
static inline Bool
glamor_picture_red_is_alpha(PicturePtr picture)
diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
index 0ca87650f..727e72d39 100644
--- a/glamor/glamor_render.c
+++ b/glamor/glamor_render.c
@@ -529,7 +529,7 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit,
* sometimes get zero bits in the R channel, which is harmless.
*/
glamor_bind_texture(glamor_priv, GL_TEXTURE0 + unit, fbo,
- glamor_fbo_red_is_alpha(glamor_priv, dest_priv->fbo));
+ dest_priv->fbo->is_red);
repeat_type = picture->repeatType;
switch (picture->repeatType) {
case RepeatNone:
diff --git a/glamor/glamor_transfer.c b/glamor/glamor_transfer.c
index 421ed3a5f..215752d7b 100644
--- a/glamor/glamor_transfer.c
+++ b/glamor/glamor_transfer.c
@@ -40,7 +40,7 @@ glamor_format_for_pixmap(PixmapPtr pixmap, GLenum *format, GLenum *type)
break;
case 16:
if (priv->is_cbcr) {
- *format = priv->fbo->format;
+ *format = GL_RG;
*type = GL_UNSIGNED_BYTE;
} else {
*format = GL_RGB;