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>
This commit is contained in:
		
							parent
							
								
									1b2e224d7d
								
							
						
					
					
						commit
						34485be256
					
				|  | @ -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 */ | ||||
| 
 | ||||
|  |  | |||
|  | @ -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); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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: | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue