[Cogl] [PATCH 08/13] atlas: defer checks until allocation
Robert Bragg
robert at sixbynine.org
Wed Dec 11 10:31:29 PST 2013
From: Robert Bragg <robert at linux.intel.com>
This defers checking the internal format and whether accelerated
migration is supported until allocating the texture.
---
cogl/cogl-atlas-texture.c | 48 +++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/cogl/cogl-atlas-texture.c b/cogl/cogl-atlas-texture.c
index ce7a9ea..5fde979 100644
--- a/cogl/cogl-atlas-texture.c
+++ b/cogl/cogl-atlas-texture.c
@@ -654,32 +654,8 @@ cogl_atlas_texture_new_with_size (CoglContext *ctx,
* data structure */
_COGL_RETURN_VAL_IF_FAIL (width > 0 && height > 0, NULL);
- /* If we can't use FBOs then it will be too slow to migrate textures
- and we shouldn't use the atlas */
- if (!cogl_has_feature (ctx, COGL_FEATURE_ID_OFFSCREEN))
- {
- _cogl_set_error (error,
- COGL_SYSTEM_ERROR,
- COGL_SYSTEM_ERROR_UNSUPPORTED,
- "Atlasing disabled because migrations "
- "would be too slow");
- return NULL;
- }
-
COGL_NOTE (ATLAS, "Adding texture of size %ix%i", width, height);
- /* If the texture is in a strange format then we won't use it */
- if (!_cogl_atlas_texture_can_use_format (internal_format))
- {
- COGL_NOTE (ATLAS, "Texture can not be added because the "
- "format is unsupported");
- _cogl_set_error (error,
- COGL_TEXTURE_ERROR,
- COGL_TEXTURE_ERROR_FORMAT,
- "Texture format unsuitable for atlasing");
- return NULL;
- }
-
/* We need to allocate the texture now because we need the pointer
to set as the data for the rectangle in the atlas */
atlas_tex = g_new (CoglAtlasTexture, 1);
@@ -709,6 +685,30 @@ _cogl_atlas_texture_allocate (CoglTexture *tex,
CoglAtlas *atlas;
GSList *l;
+ /* If the texture is in a strange format then we won't use it */
+ if (!_cogl_atlas_texture_can_use_format (atlas_tex->format))
+ {
+ COGL_NOTE (ATLAS, "Texture can not be added because the "
+ "format is unsupported");
+ _cogl_set_error (error,
+ COGL_TEXTURE_ERROR,
+ COGL_TEXTURE_ERROR_FORMAT,
+ "Texture format unsuitable for atlasing");
+ return FALSE;
+ }
+
+ /* If we can't use FBOs then it will be too slow to migrate textures
+ and we shouldn't use the atlas */
+ if (!cogl_has_feature (ctx, COGL_FEATURE_ID_OFFSCREEN))
+ {
+ _cogl_set_error (error,
+ COGL_SYSTEM_ERROR,
+ COGL_SYSTEM_ERROR_UNSUPPORTED,
+ "Atlasing disabled because migrations "
+ "would be too slow");
+ return FALSE;
+ }
+
/* Look for an existing atlas that can hold the texture */
for (l = ctx->atlases; l; l = l->next)
/* Try to make some space in the atlas for the texture */
--
1.8.3.1
More information about the Cogl
mailing list