summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Roberts <neil@linux.intel.com>2012-04-04 16:25:25 +0100
committerNeil Roberts <neil@linux.intel.com>2012-04-05 13:47:36 +0100
commit4229d61d3b5368dc169223812e57033f41283223 (patch)
treef882703099499a8551d8e2a09654a09e0aed8955
parent6197e3abf3d67cd7459df354af0e69805a625902 (diff)
downloadcogl-4229d61d3b5368dc169223812e57033f41283223.tar.gz
Fix places that ignore the COGL_TEXTURE_NO_AUTO_MIPMAP flag
Two of the meta texture constructors which take a flags parameter were ignoring the COGL_TEXTURE_NO_AUTO_MIPMAP flag when creating an underlying CoglTexture2D. These have now been fixed to call cogl_primitive_texture_set_auto_mipmap after constructing the texture. Reviewed-by: Robert Bragg <robert@linux.intel.com>
-rw-r--r--cogl/cogl-texture-2d-sliced.c14
-rw-r--r--cogl/cogl-texture.c10
2 files changed, 22 insertions, 2 deletions
diff --git a/cogl/cogl-texture-2d-sliced.c b/cogl/cogl-texture-2d-sliced.c
index 3fb0338e..5f432526 100644
--- a/cogl/cogl-texture-2d-sliced.c
+++ b/cogl/cogl-texture-2d-sliced.c
@@ -44,6 +44,7 @@
#include "cogl-spans.h"
#include "cogl-journal-private.h"
#include "cogl-pipeline-opengl-private.h"
+#include "cogl-primitive-texture.h"
#include <string.h>
#include <stdlib.h>
@@ -881,6 +882,7 @@ _cogl_texture_2d_sliced_new_from_bitmap (CoglBitmap *bmp,
GLenum gl_type;
int width, height;
CoglContext *ctx;
+ int i;
_COGL_RETURN_VAL_IF_FAIL (cogl_is_bitmap (bmp), NULL);
@@ -921,6 +923,18 @@ _cogl_texture_2d_sliced_new_from_bitmap (CoglBitmap *bmp,
cogl_object_unref (dst_bmp);
+ if ((flags & COGL_TEXTURE_NO_AUTO_MIPMAP))
+ for (i = 0; i < tex_2ds->slice_textures->len; i++)
+ {
+ CoglPrimitiveTexture *slice_tex;
+
+ slice_tex = g_array_index (tex_2ds->slice_textures,
+ CoglPrimitiveTexture *,
+ i);
+
+ cogl_primitive_texture_set_auto_mipmap (slice_tex, FALSE);
+ }
+
return _cogl_texture_2d_sliced_handle_new (tex_2ds);
error:
diff --git a/cogl/cogl-texture.c b/cogl/cogl-texture.c
index dcf89a8f..579281f2 100644
--- a/cogl/cogl-texture.c
+++ b/cogl/cogl-texture.c
@@ -315,9 +315,15 @@ cogl_texture_new_with_size (unsigned int width,
internal_format,
NULL));
- /* If it fails resort to sliced textures */
- if (tex == NULL)
+ if (tex)
{
+ gboolean auto_mipmap = !(flags & COGL_TEXTURE_NO_AUTO_MIPMAP);
+ cogl_primitive_texture_set_auto_mipmap (COGL_PRIMITIVE_TEXTURE (tex),
+ auto_mipmap);
+ }
+ else
+ {
+ /* If it fails resort to sliced textures */
int max_waste = flags & COGL_TEXTURE_NO_SLICING ? -1 : COGL_TEXTURE_MAX_WASTE;
tex = COGL_TEXTURE (cogl_texture_2d_sliced_new_with_size (ctx,
width,