[Cogl] [PATCH 09/13] texture: make cogl_texture_get_format api private

Robert Bragg robert at sixbynine.org
Wed Dec 11 10:31:30 PST 2013


From: Robert Bragg <robert at linux.intel.com>

CoglPixelFormat is not a good way of describing the internal
format of a texture because it's too specific given that we don't
actually have exact knowledge of the internal format used by the driver.

This makes cogl_texture_get_format private and in the future we'll
provide a better way of querying the channels and their precision.
---
 cogl-pango/cogl-pango-pipeline-cache.c |  2 +-
 cogl-pango/cogl-pango-render.c         |  2 +-
 cogl/Makefile.am                       |  2 +-
 cogl/cogl-atlas-texture.c              |  2 +-
 cogl/cogl-blit.c                       |  6 +++---
 cogl/cogl-framebuffer.c                |  2 +-
 cogl/cogl-pipeline-layer.c             |  2 +-
 cogl/cogl-sub-texture.c                |  2 +-
 cogl/cogl-texture-2d-sliced.c          |  2 +-
 cogl/cogl-texture-private.h            |  3 +++
 cogl/cogl-texture-rectangle.c          |  2 +-
 cogl/cogl-texture.c                    |  8 ++++----
 cogl/cogl-texture.h                    | 11 -----------
 cogl/cogl.symbols                      |  1 -
 cogl/driver/gl/cogl-framebuffer-gl.c   |  4 ++--
 cogl/driver/gl/cogl-texture-2d-gl.c    |  2 +-
 cogl/winsys/cogl-texture-pixmap-x11.c  |  2 +-
 doc/reference/cogl2/cogl2-sections.txt |  1 -
 18 files changed, 23 insertions(+), 33 deletions(-)

diff --git a/cogl-pango/cogl-pango-pipeline-cache.c b/cogl-pango/cogl-pango-pipeline-cache.c
index 68461ab..c2a30e8 100644
--- a/cogl-pango/cogl-pango-pipeline-cache.c
+++ b/cogl-pango/cogl-pango-pipeline-cache.c
@@ -185,7 +185,7 @@ _cogl_pango_pipeline_cache_get (CoglPangoPipelineCache *cache,
 
       entry->texture = cogl_object_ref (texture);
 
-      if (cogl_texture_get_format (entry->texture) == COGL_PIXEL_FORMAT_A_8)
+      if (_cogl_texture_get_format (entry->texture) == COGL_PIXEL_FORMAT_A_8)
         base = get_base_texture_alpha_pipeline (cache);
       else
         base = get_base_texture_rgba_pipeline (cache);
diff --git a/cogl-pango/cogl-pango-render.c b/cogl-pango/cogl-pango-render.c
index 43fae50..4481af0 100644
--- a/cogl-pango/cogl-pango-render.c
+++ b/cogl-pango/cogl-pango-render.c
@@ -530,7 +530,7 @@ cogl_pango_renderer_set_dirty_glyph (PangoFont *font,
      here */
   _COGL_RETURN_IF_FAIL (value->texture != NULL);
 
-  if (cogl_texture_get_format (value->texture) == COGL_PIXEL_FORMAT_A_8)
+  if (_cogl_texture_get_format (value->texture) == COGL_PIXEL_FORMAT_A_8)
     {
       format_cairo = CAIRO_FORMAT_A8;
       format_cogl = COGL_PIXEL_FORMAT_A_8;
diff --git a/cogl/Makefile.am b/cogl/Makefile.am
index c56599a..9521b60 100644
--- a/cogl/Makefile.am
+++ b/cogl/Makefile.am
@@ -502,7 +502,7 @@ libcogl2_la_LDFLAGS = \
 	-no-undefined \
 	-version-info @COGL_LT_CURRENT@:@COGL_LT_REVISION@:@COGL_LT_AGE@ \
 	-export-dynamic \
-	-export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_foreach_sub_texture_in_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_primitive_draw|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|test_|unit_test_).*"
+	-export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_get_format|_cogl_texture_foreach_sub_texture_in_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_primitive_draw|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|test_|unit_test_).*"
 
 libcogl2_la_SOURCES = $(cogl_sources_c)
 nodist_libcogl2_la_SOURCES = $(BUILT_SOURCES)
diff --git a/cogl/cogl-atlas-texture.c b/cogl/cogl-atlas-texture.c
index 5fde979..e212a0d 100644
--- a/cogl/cogl-atlas-texture.c
+++ b/cogl/cogl-atlas-texture.c
@@ -520,7 +520,7 @@ _cogl_atlas_texture_convert_bitmap_for_upload (CoglAtlasTexture *atlas_tex,
 
   /* We'll prepare to upload using the format of the actual texture of
      the atlas texture instead of the format reported by
-     cogl_texture_get_format which would be the original internal
+     _cogl_texture_get_format which would be the original internal
      format specified when the texture was created. However we'll
      preserve the premult status of the internal format because the
      images are all stored in the original premult format of the
diff --git a/cogl/cogl-blit.c b/cogl/cogl-blit.c
index f37e453..980cd84 100644
--- a/cogl/cogl-blit.c
+++ b/cogl/cogl-blit.c
@@ -150,8 +150,8 @@ _cogl_blit_framebuffer_begin (CoglBlitData *data)
 
   /* We can only blit between FBOs if both textures are the same
      format and the blit framebuffer extension is supported */
-  if ((cogl_texture_get_format (data->src_tex) & ~COGL_A_BIT) !=
-      (cogl_texture_get_format (data->dst_tex) & ~COGL_A_BIT) ||
+  if ((_cogl_texture_get_format (data->src_tex) & ~COGL_A_BIT) !=
+      (_cogl_texture_get_format (data->dst_tex) & ~COGL_A_BIT) ||
       !_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_OFFSCREEN_BLIT))
     return FALSE;
 
@@ -268,7 +268,7 @@ _cogl_blit_copy_tex_sub_image_end (CoglBlitData *data)
 static CoglBool
 _cogl_blit_get_tex_data_begin (CoglBlitData *data)
 {
-  data->format = cogl_texture_get_format (data->src_tex);
+  data->format = _cogl_texture_get_format (data->src_tex);
   data->bpp = _cogl_pixel_format_get_bytes_per_pixel (data->format);
 
   data->image_data = g_malloc (data->bpp * data->src_width *
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index bf4e5f4..8affe43 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -727,7 +727,7 @@ cogl_framebuffer_allocate (CoglFramebuffer *framebuffer,
       /* Forward the texture format as the internal format of the
        * framebuffer */
       framebuffer->internal_format =
-        cogl_texture_get_format (offscreen->texture);
+        _cogl_texture_get_format (offscreen->texture);
 
       if (!ctx->driver_vtable->offscreen_allocate (offscreen, error))
         return FALSE;
diff --git a/cogl/cogl-pipeline-layer.c b/cogl/cogl-pipeline-layer.c
index a401773..160802b 100644
--- a/cogl/cogl-pipeline-layer.c
+++ b/cogl/cogl-pipeline-layer.c
@@ -110,7 +110,7 @@ _cogl_pipeline_layer_has_alpha (CoglPipelineLayer *layer)
     _cogl_pipeline_layer_get_authority (layer,
                                         COGL_PIPELINE_LAYER_STATE_TEXTURE_DATA);
   if (tex_authority->texture &&
-      cogl_texture_get_format (tex_authority->texture) & COGL_A_BIT)
+      _cogl_texture_get_format (tex_authority->texture) & COGL_A_BIT)
     {
       return TRUE;
     }
diff --git a/cogl/cogl-sub-texture.c b/cogl/cogl-sub-texture.c
index 4c3e376..7bda7f0 100644
--- a/cogl/cogl-sub-texture.c
+++ b/cogl/cogl-sub-texture.c
@@ -411,7 +411,7 @@ _cogl_sub_texture_get_format (CoglTexture *tex)
 {
   CoglSubTexture *sub_tex = COGL_SUB_TEXTURE (tex);
 
-  return cogl_texture_get_format (sub_tex->full_texture);
+  return _cogl_texture_get_format (sub_tex->full_texture);
 }
 
 static GLenum
diff --git a/cogl/cogl-texture-2d-sliced.c b/cogl/cogl-texture-2d-sliced.c
index d92cd2c..a90c080 100644
--- a/cogl/cogl-texture-2d-sliced.c
+++ b/cogl/cogl-texture-2d-sliced.c
@@ -1304,7 +1304,7 @@ _cogl_texture_2d_sliced_set_region (CoglTexture *tex,
   CoglBool status;
 
   upload_bmp = _cogl_bitmap_convert_for_upload (bmp,
-                                                cogl_texture_get_format (tex),
+                                                _cogl_texture_get_format (tex),
                                                 FALSE, /* can't convert in
                                                           place */
                                                 error);
diff --git a/cogl/cogl-texture-private.h b/cogl/cogl-texture-private.h
index 1f7476f..aae779c 100644
--- a/cogl/cogl-texture-private.h
+++ b/cogl/cogl-texture-private.h
@@ -282,4 +282,7 @@ void
 _cogl_texture_set_allocated (CoglTexture *texture,
                              CoglBool allocated);
 
+CoglPixelFormat
+_cogl_texture_get_format (CoglTexture *texture);
+
 #endif /* __COGL_TEXTURE_PRIVATE_H */
diff --git a/cogl/cogl-texture-rectangle.c b/cogl/cogl-texture-rectangle.c
index a2eb4a1..db7968d 100644
--- a/cogl/cogl-texture-rectangle.c
+++ b/cogl/cogl-texture-rectangle.c
@@ -581,7 +581,7 @@ _cogl_texture_rectangle_set_region (CoglTexture *tex,
 
   upload_bmp =
     _cogl_bitmap_convert_for_upload (bmp,
-                                     cogl_texture_get_format (tex),
+                                     _cogl_texture_get_format (tex),
                                      FALSE, /* can't convert in place */
                                      error);
   if (upload_bmp == NULL)
diff --git a/cogl/cogl-texture.c b/cogl/cogl-texture.c
index 515fb43..a2df38d 100644
--- a/cogl/cogl-texture.c
+++ b/cogl/cogl-texture.c
@@ -183,7 +183,7 @@ cogl_texture_get_height (CoglTexture *texture)
 }
 
 CoglPixelFormat
-cogl_texture_get_format (CoglTexture *texture)
+_cogl_texture_get_format (CoglTexture *texture)
 {
   if (!texture->allocated)
     cogl_texture_allocate (texture, NULL);
@@ -353,7 +353,7 @@ cogl_texture_set_region_from_bitmap (CoglTexture *texture,
   /* Note that we don't prepare the bitmap for upload here because
      some backends may be internally using a different format for the
      actual GL texture than that reported by
-     cogl_texture_get_format. For example the atlas textures are
+     _cogl_texture_get_format. For example the atlas textures are
      always stored in an RGBA texture even if the texture format is
      advertised as RGB. */
 
@@ -614,7 +614,7 @@ cogl_texture_draw_and_read_to_bitmap (CoglTexture *texture,
    *
    * TODO: verify if this is still an issue
    */
-  if ((cogl_texture_get_format (texture) & COGL_A_BIT)/* && a_bits == 0*/)
+  if ((_cogl_texture_get_format (texture) & COGL_A_BIT)/* && a_bits == 0*/)
     {
       uint8_t *srcdata;
       uint8_t *dstdata;
@@ -904,7 +904,7 @@ cogl_texture_get_data (CoglTexture *texture,
 
   CoglTextureGetData tg_data;
 
-  texture_format = cogl_texture_get_format (texture);
+  texture_format = _cogl_texture_get_format (texture);
 
   /* Default to internal format if none specified */
   if (format == COGL_PIXEL_FORMAT_ANY)
diff --git a/cogl/cogl-texture.h b/cogl/cogl-texture.h
index 351376f..308eaa3 100644
--- a/cogl/cogl-texture.h
+++ b/cogl/cogl-texture.h
@@ -147,17 +147,6 @@ unsigned int
 cogl_texture_get_height (CoglTexture *texture);
 
 /**
- * cogl_texture_get_format:
- * @texture: a #CoglTexture pointer.
- *
- * Queries the #CoglPixelFormat of a cogl texture.
- *
- * Return value: the #CoglPixelFormat of the GPU side texture
- */
-CoglPixelFormat
-cogl_texture_get_format (CoglTexture *texture);
-
-/**
  * cogl_texture_is_sliced:
  * @texture: a #CoglTexture pointer.
  *
diff --git a/cogl/cogl.symbols b/cogl/cogl.symbols
index f2b9fb9..c7039f4 100644
--- a/cogl/cogl.symbols
+++ b/cogl/cogl.symbols
@@ -543,7 +543,6 @@ cogl_sub_texture_new
 cogl_texture_error_domain
 cogl_texture_flags_get_type
 cogl_texture_get_data
-cogl_texture_get_format
 cogl_texture_get_gl_texture
 cogl_texture_get_height
 cogl_texture_get_width
diff --git a/cogl/driver/gl/cogl-framebuffer-gl.c b/cogl/driver/gl/cogl-framebuffer-gl.c
index 9c430ab..1510de8 100644
--- a/cogl/driver/gl/cogl-framebuffer-gl.c
+++ b/cogl/driver/gl/cogl-framebuffer-gl.c
@@ -416,7 +416,7 @@ attach_depth_texture (CoglContext *ctx,
     {
       /* attach a GL_DEPTH_STENCIL texture to the GL_DEPTH_ATTACHMENT and
        * GL_STENCIL_ATTACHMENT attachement points */
-      g_assert (cogl_texture_get_format (depth_texture) ==
+      g_assert (_cogl_texture_get_format (depth_texture) ==
                 COGL_PIXEL_FORMAT_DEPTH_24_STENCIL_8);
 
       cogl_texture_get_gl_texture (depth_texture,
@@ -435,7 +435,7 @@ attach_depth_texture (CoglContext *ctx,
     {
       /* attach a newly created GL_DEPTH_COMPONENT16 texture to the
        * GL_DEPTH_ATTACHMENT attachement point */
-      g_assert (cogl_texture_get_format (depth_texture) ==
+      g_assert (_cogl_texture_get_format (depth_texture) ==
                 COGL_PIXEL_FORMAT_DEPTH_16);
 
       cogl_texture_get_gl_texture (COGL_TEXTURE (depth_texture),
diff --git a/cogl/driver/gl/cogl-texture-2d-gl.c b/cogl/driver/gl/cogl-texture-2d-gl.c
index 99c88a7..6928871 100644
--- a/cogl/driver/gl/cogl-texture-2d-gl.c
+++ b/cogl/driver/gl/cogl-texture-2d-gl.c
@@ -571,7 +571,7 @@ _cogl_texture_2d_gl_copy_from_bitmap (CoglTexture2D *tex_2d,
 
   upload_bmp =
     _cogl_bitmap_convert_for_upload (bmp,
-                                     cogl_texture_get_format (tex),
+                                     _cogl_texture_get_format (tex),
                                      FALSE, /* can't convert in place */
                                      error);
   if (upload_bmp == NULL)
diff --git a/cogl/winsys/cogl-texture-pixmap-x11.c b/cogl/winsys/cogl-texture-pixmap-x11.c
index 056a137..4b40166 100644
--- a/cogl/winsys/cogl-texture-pixmap-x11.c
+++ b/cogl/winsys/cogl-texture-pixmap-x11.c
@@ -986,7 +986,7 @@ _cogl_texture_pixmap_x11_get_format (CoglTexture *tex)
   CoglTexture *child_tex = _cogl_texture_pixmap_x11_get_texture (tex_pixmap);
 
   /* Forward on to the child texture */
-  return cogl_texture_get_format (child_tex);
+  return _cogl_texture_get_format (child_tex);
 }
 
 static GLenum
diff --git a/doc/reference/cogl2/cogl2-sections.txt b/doc/reference/cogl2/cogl2-sections.txt
index f40bc74..b12e89a 100644
--- a/doc/reference/cogl2/cogl2-sections.txt
+++ b/doc/reference/cogl2/cogl2-sections.txt
@@ -338,7 +338,6 @@ cogl_is_texture
 <SUBSECTION>
 cogl_texture_get_width
 cogl_texture_get_height
-cogl_texture_get_format
 cogl_texture_is_sliced
 cogl_texture_get_data
 cogl_texture_set_data
-- 
1.8.3.1



More information about the Cogl mailing list