[mutter/wayland] Properly set the number of components on the CoglTextureRectangle



commit 7155d7e043e8d855ffe62bc844af6bacea21f851
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Jan 13 13:24:30 2014 -0500

    Properly set the number of components on the CoglTextureRectangle
    
    We need to set the number of components on the CoglTextureRectangle to
    prevent wasting too much GPU memory. As we need to do this before we call
    cogl_texture_set_region, just remove the meta_texture_rectangle_new wrapper,
    and make callers call cogl_texture_rectangle_new_with_size directly.

 src/compositor/meta-texture-rectangle.c |   30 ------------------------------
 src/compositor/meta-texture-rectangle.h |    7 -------
 src/compositor/meta-texture-tower.c     |   12 ++++--------
 src/compositor/meta-window-actor.c      |   15 ++++++++++++---
 4 files changed, 16 insertions(+), 48 deletions(-)
---
diff --git a/src/compositor/meta-texture-rectangle.c b/src/compositor/meta-texture-rectangle.c
index 450155d..cd585b5 100644
--- a/src/compositor/meta-texture-rectangle.c
+++ b/src/compositor/meta-texture-rectangle.c
@@ -26,36 +26,6 @@
 #include <clutter/clutter.h>
 #include "meta-texture-rectangle.h"
 
-CoglTexture *
-meta_texture_rectangle_new (unsigned int width,
-                            unsigned int height,
-                            CoglPixelFormat format,
-                            unsigned int rowstride,
-                            const guint8 *data)
-{
-  ClutterBackend *backend =
-    clutter_get_default_backend ();
-  CoglContext *context =
-    clutter_backend_get_cogl_context (backend);
-  CoglTextureRectangle *tex_rect;
-
-  tex_rect = cogl_texture_rectangle_new_with_size (context, width, height);
-  if (tex_rect == NULL)
-    return NULL;
-
-  if (data)
-    cogl_texture_set_region (COGL_TEXTURE (tex_rect),
-                             0, 0, /* src_x/y */
-                             0, 0, /* dst_x/y */
-                             width, height, /* dst_width/height */
-                             width, height, /* width/height */
-                             format,
-                             rowstride,
-                             data);
-
-  return COGL_TEXTURE (tex_rect);
-}
-
 static void
 texture_rectangle_check_cb (CoglTexture *sub_texture,
                             const float *sub_texture_coords,
diff --git a/src/compositor/meta-texture-rectangle.h b/src/compositor/meta-texture-rectangle.h
index 7b84229..ba2624f 100644
--- a/src/compositor/meta-texture-rectangle.h
+++ b/src/compositor/meta-texture-rectangle.h
@@ -28,13 +28,6 @@
 
 G_BEGIN_DECLS
 
-CoglTexture *
-meta_texture_rectangle_new (unsigned int width,
-                            unsigned int height,
-                            CoglPixelFormat format,
-                            unsigned int rowstride,
-                            const guint8 *data);
-
 gboolean
 meta_texture_rectangle_check (CoglTexture *texture);
 
diff --git a/src/compositor/meta-texture-tower.c b/src/compositor/meta-texture-tower.c
index a53147f..0fd5f5f 100644
--- a/src/compositor/meta-texture-tower.c
+++ b/src/compositor/meta-texture-tower.c
@@ -355,14 +355,10 @@ texture_tower_create_texture (MetaTextureTower *tower,
   if ((!is_power_of_two (width) || !is_power_of_two (height)) &&
       meta_texture_rectangle_check (tower->textures[level - 1]))
     {
-      tower->textures[level] =
-        meta_texture_rectangle_new (width, height,
-                                    /* data format */
-                                    TEXTURE_FORMAT,
-                                    /* rowstride */
-                                    width * 4,
-                                    /* data */
-                                    NULL);
+      ClutterBackend *backend = clutter_get_default_backend ();
+      CoglContext *context = clutter_backend_get_cogl_context (backend);
+
+      tower->textures[level] = cogl_texture_rectangle_new_with_size (context, width, height);
     }
   else
     {
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index d5c1a4e..f45bd53 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -2172,9 +2172,18 @@ build_and_scan_frame_mask (MetaWindowActor       *self,
 
   if (meta_texture_rectangle_check (paint_tex))
     {
-      mask_texture = meta_texture_rectangle_new (tex_width, tex_height,
-                                                 COGL_PIXEL_FORMAT_A_8,
-                                                 stride, mask_data);
+      ClutterBackend *backend = clutter_get_default_backend ();
+      CoglContext *context = clutter_backend_get_cogl_context (backend);
+
+      mask_texture = COGL_TEXTURE (cogl_texture_rectangle_new_with_size (context, tex_width, tex_height));
+      cogl_texture_set_components (mask_texture, COGL_TEXTURE_COMPONENTS_A);
+      cogl_texture_set_region (mask_texture,
+                               0, 0, /* src_x/y */
+                               0, 0, /* dst_x/y */
+                               tex_width, tex_height, /* dst_width/height */
+                               tex_width, tex_height, /* width/height */
+                               COGL_PIXEL_FORMAT_A_8,
+                               stride, mask_data);
     }
   else
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]