[mutter] cogl: Remove cogl_texture_2d_gl_new_from_foreign
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] cogl: Remove cogl_texture_2d_gl_new_from_foreign
- Date: Thu, 7 Nov 2019 12:56:12 +0000 (UTC)
commit 806ebc464a8da83f485f7ec063503cb2a497a044
Author: Adam Jackson <ajax redhat com>
Date: Wed Oct 23 11:24:37 2019 -0400
cogl: Remove cogl_texture_2d_gl_new_from_foreign
As noted in <cogl-texture-2d-gl.h> (now also removed), this is for
allowing external GL callers to promote one of their textures to a
CoglTexture. We aren't doing that and don't want to start.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/883
cogl/cogl/cogl-atlas-texture.c | 1 -
cogl/cogl/cogl-sub-texture.c | 1 -
cogl/cogl/cogl-texture-2d-gl.h | 78 ---------
cogl/cogl/cogl-texture-2d-private.h | 1 -
cogl/cogl/cogl-texture-2d-sliced-private.h | 10 --
cogl/cogl/cogl-texture-2d-sliced.c | 128 --------------
cogl/cogl/cogl-texture-2d.c | 9 -
cogl/cogl/cogl-texture-driver.h | 11 --
cogl/cogl/cogl-texture-private.h | 6 -
cogl/cogl/cogl-texture.c | 11 --
cogl/cogl/cogl.h | 1 -
cogl/cogl/cogl.symbols | 1 -
cogl/cogl/deprecated/cogl-auto-texture.c | 1 -
cogl/cogl/driver/gl/cogl-pipeline-opengl-private.h | 10 +-
cogl/cogl/driver/gl/cogl-pipeline-opengl.c | 16 +-
cogl/cogl/driver/gl/cogl-texture-2d-gl.c | 187 +--------------------
cogl/cogl/driver/gl/cogl-texture-gl.c | 6 +-
cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c | 26 +--
.../cogl/driver/gl/gles/cogl-texture-driver-gles.c | 19 +--
cogl/cogl/meson.build | 1 -
cogl/cogl/winsys/cogl-texture-pixmap-x11.c | 1 -
cogl/cogl/winsys/cogl-winsys-glx.c | 2 +-
22 files changed, 20 insertions(+), 507 deletions(-)
---
diff --git a/cogl/cogl/cogl-atlas-texture.c b/cogl/cogl/cogl-atlas-texture.c
index 907a441f4..ae720edf3 100644
--- a/cogl/cogl/cogl-atlas-texture.c
+++ b/cogl/cogl/cogl-atlas-texture.c
@@ -1022,6 +1022,5 @@ cogl_atlas_texture_vtable =
_cogl_atlas_texture_gl_flush_legacy_texobj_wrap_modes,
_cogl_atlas_texture_get_format,
_cogl_atlas_texture_get_gl_format,
- NULL, /* is_foreign */
NULL /* set_auto_mipmap */
};
diff --git a/cogl/cogl/cogl-sub-texture.c b/cogl/cogl/cogl-sub-texture.c
index c77b083a2..edc611e18 100644
--- a/cogl/cogl/cogl-sub-texture.c
+++ b/cogl/cogl/cogl-sub-texture.c
@@ -436,6 +436,5 @@ cogl_sub_texture_vtable =
_cogl_sub_texture_gl_flush_legacy_texobj_wrap_modes,
_cogl_sub_texture_get_format,
_cogl_sub_texture_get_gl_format,
- NULL, /* is_foreign */
NULL /* set_auto_mipmap */
};
diff --git a/cogl/cogl/cogl-texture-2d-private.h b/cogl/cogl/cogl-texture-2d-private.h
index c1e6dff50..4f41dadf5 100644
--- a/cogl/cogl/cogl-texture-2d-private.h
+++ b/cogl/cogl/cogl-texture-2d-private.h
@@ -46,7 +46,6 @@ struct _CoglTexture2D
gboolean auto_mipmap;
gboolean mipmaps_dirty;
- gboolean is_foreign;
gboolean is_get_data_supported;
/* TODO: factor out these OpenGL specific members into some form
diff --git a/cogl/cogl/cogl-texture-2d-sliced-private.h b/cogl/cogl/cogl-texture-2d-sliced-private.h
index ba1766831..5ca4cbf32 100644
--- a/cogl/cogl/cogl-texture-2d-sliced-private.h
+++ b/cogl/cogl/cogl-texture-2d-sliced-private.h
@@ -49,16 +49,6 @@ struct _CoglTexture2DSliced
CoglPixelFormat internal_format;
};
-CoglTexture2DSliced *
-_cogl_texture_2d_sliced_new_from_foreign (CoglContext *context,
- unsigned int gl_handle,
- unsigned int gl_target,
- int width,
- int height,
- int x_pot_waste,
- int y_pot_waste,
- CoglPixelFormat format);
-
CoglTexture2DSliced *
_cogl_texture_2d_sliced_new_from_bitmap (CoglBitmap *bmp,
int max_waste,
diff --git a/cogl/cogl/cogl-texture-2d-sliced.c b/cogl/cogl/cogl-texture-2d-sliced.c
index 7c5f8a251..ac59b51ce 100644
--- a/cogl/cogl/cogl-texture-2d-sliced.c
+++ b/cogl/cogl/cogl-texture-2d-sliced.c
@@ -41,7 +41,6 @@
#include "cogl-bitmap.h"
#include "cogl-bitmap-private.h"
#include "cogl-texture-private.h"
-#include "cogl-texture-2d-gl.h"
#include "cogl-texture-2d-private.h"
#include "cogl-texture-2d-sliced-private.h"
#include "cogl-texture-driver.h"
@@ -917,50 +916,6 @@ cogl_texture_2d_sliced_new_from_bitmap (CoglBitmap *bmp,
FALSE);
}
-CoglTexture2DSliced *
-_cogl_texture_2d_sliced_new_from_foreign (CoglContext *ctx,
- unsigned int gl_handle,
- unsigned int gl_target,
- int width,
- int height,
- int x_pot_waste,
- int y_pot_waste,
- CoglPixelFormat format)
-{
- CoglTextureLoader *loader;
-
- /* NOTE: width, height and internal format are not queriable
- * in GLES, hence such a function prototype.
- */
-
- /* This should only be called when the texture target is 2D. */
- g_return_val_if_fail (gl_target == GL_TEXTURE_2D, NULL);
-
- /* Assert it is a valid GL texture object */
- g_return_val_if_fail (ctx->glIsTexture (gl_handle), FALSE);
-
- /* Validate width and height */
- g_return_val_if_fail (width > 0 && height > 0, NULL);
-
- /* Validate pot waste */
- g_return_val_if_fail (x_pot_waste >= 0 && x_pot_waste < width &&
- y_pot_waste >= 0 && y_pot_waste < height,
- NULL);
-
- loader = _cogl_texture_create_loader ();
- loader->src_type = COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN;
- loader->src.gl_foreign.gl_handle = gl_handle;
- loader->src.gl_foreign.width = width + x_pot_waste;
- loader->src.gl_foreign.height = height + y_pot_waste;
- loader->src.gl_foreign.format = format;
-
- return _cogl_texture_2d_sliced_create_base (ctx,
- width,
- height,
- 0, /* max waste */
- format, loader);
-}
-
CoglTexture2DSliced *
cogl_texture_2d_sliced_new_from_data (CoglContext *ctx,
int width,
@@ -1106,71 +1061,6 @@ allocate_from_bitmap (CoglTexture2DSliced *tex_2ds,
return TRUE;
}
-static gboolean
-allocate_from_gl_foreign (CoglTexture2DSliced *tex_2ds,
- CoglTextureLoader *loader,
- GError **error)
-{
- CoglTexture *tex = COGL_TEXTURE (tex_2ds);
- CoglContext *ctx = tex->context;
- CoglPixelFormat format = loader->src.gl_foreign.format;
- int gl_width = loader->src.gl_foreign.width;
- int gl_height = loader->src.gl_foreign.height;
- int x_pot_waste = gl_width - tex->width;
- int y_pot_waste = gl_height - tex->height;
- CoglSpan x_span;
- CoglSpan y_span;
- CoglTexture2D *tex_2d =
- cogl_texture_2d_gl_new_from_foreign (ctx,
- loader->src.gl_foreign.gl_handle,
- gl_width,
- gl_height,
- format);
-
- if (!cogl_texture_allocate (COGL_TEXTURE (tex_2d), error))
- {
- cogl_object_unref (tex_2d);
- return FALSE;
- }
-
- /* The texture 2d backend may use a different pixel format if it
- queries the actual texture so we'll refetch the format it
- actually used */
- format = _cogl_texture_get_format (tex);
-
- tex_2ds->internal_format = format;
-
- /* Create slice arrays */
- tex_2ds->slice_x_spans =
- g_array_sized_new (FALSE, FALSE, sizeof (CoglSpan), 1);
-
- tex_2ds->slice_y_spans =
- g_array_sized_new (FALSE, FALSE, sizeof (CoglSpan), 1);
-
- tex_2ds->slice_textures =
- g_array_sized_new (FALSE, FALSE, sizeof (CoglTexture2D *), 1);
-
- /* Store info for a single slice */
- x_span.start = 0;
- x_span.size = gl_width;
- x_span.waste = x_pot_waste;
- g_array_append_val (tex_2ds->slice_x_spans, x_span);
-
- y_span.start = 0;
- y_span.size = gl_height;
- y_span.waste = y_pot_waste;
- g_array_append_val (tex_2ds->slice_y_spans, y_span);
-
- g_array_append_val (tex_2ds->slice_textures, tex_2d);
-
- _cogl_texture_set_allocated (tex,
- format,
- tex->width,
- tex->height);
-
- return TRUE;
-}
-
static gboolean
_cogl_texture_2d_sliced_allocate (CoglTexture *tex,
GError **error)
@@ -1186,8 +1076,6 @@ _cogl_texture_2d_sliced_allocate (CoglTexture *tex,
return allocate_with_size (tex_2ds, loader, error);
case COGL_TEXTURE_SOURCE_TYPE_BITMAP:
return allocate_from_bitmap (tex_2ds, loader, error);
- case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN:
- return allocate_from_gl_foreign (tex_2ds, loader, error);
default:
break;
}
@@ -1195,21 +1083,6 @@ _cogl_texture_2d_sliced_allocate (CoglTexture *tex,
g_return_val_if_reached (FALSE);
}
-static gboolean
-_cogl_texture_2d_sliced_is_foreign (CoglTexture *tex)
-{
- CoglTexture2DSliced *tex_2ds = COGL_TEXTURE_2D_SLICED (tex);
- CoglTexture2D *slice_tex;
-
- /* Make sure slices were created */
- if (tex_2ds->slice_textures == NULL)
- return FALSE;
-
- /* Pass the call on to the first slice */
- slice_tex = g_array_index (tex_2ds->slice_textures, CoglTexture2D *, 0);
- return _cogl_texture_is_foreign (COGL_TEXTURE (slice_tex));
-}
-
static int
_cogl_texture_2d_sliced_get_max_waste (CoglTexture *tex)
{
@@ -1466,6 +1339,5 @@ cogl_texture_2d_sliced_vtable =
_cogl_texture_2d_sliced_gl_flush_legacy_texobj_wrap_modes,
_cogl_texture_2d_sliced_get_format,
_cogl_texture_2d_sliced_get_gl_format,
- _cogl_texture_2d_sliced_is_foreign,
NULL /* set_auto_mipmap */
};
diff --git a/cogl/cogl/cogl-texture-2d.c b/cogl/cogl/cogl-texture-2d.c
index a9a22acbb..21a3c3fb6 100644
--- a/cogl/cogl/cogl-texture-2d.c
+++ b/cogl/cogl/cogl-texture-2d.c
@@ -109,8 +109,6 @@ _cogl_texture_2d_create_base (CoglContext *ctx,
tex_2d->gl_target = GL_TEXTURE_2D;
- tex_2d->is_foreign = FALSE;
-
ctx->driver_vtable->texture_2d_init (tex_2d);
return _cogl_texture_2d_object_new (tex_2d);
@@ -486,12 +484,6 @@ _cogl_texture_2d_get_gl_format (CoglTexture *tex)
return COGL_TEXTURE_2D (tex)->gl_internal_format;
}
-static gboolean
-_cogl_texture_2d_is_foreign (CoglTexture *tex)
-{
- return COGL_TEXTURE_2D (tex)->is_foreign;
-}
-
static const CoglTextureVtable
cogl_texture_2d_vtable =
{
@@ -513,6 +505,5 @@ cogl_texture_2d_vtable =
_cogl_texture_2d_gl_flush_legacy_texobj_wrap_modes,
_cogl_texture_2d_get_format,
_cogl_texture_2d_get_gl_format,
- _cogl_texture_2d_is_foreign,
_cogl_texture_2d_set_auto_mipmap
};
diff --git a/cogl/cogl/cogl-texture-driver.h b/cogl/cogl/cogl-texture-driver.h
index fa626e7db..240635f49 100644
--- a/cogl/cogl/cogl-texture-driver.h
+++ b/cogl/cogl/cogl-texture-driver.h
@@ -61,7 +61,6 @@ struct _CoglTextureDriver
gboolean
(* upload_subregion_to_gl) (CoglContext *ctx,
CoglTexture *texture,
- gboolean is_foreign,
int src_x,
int src_y,
int dst_x,
@@ -84,7 +83,6 @@ struct _CoglTextureDriver
(* upload_to_gl) (CoglContext *ctx,
GLenum gl_target,
GLuint gl_handle,
- gboolean is_foreign,
CoglBitmap *source_bmp,
GLint internal_gl_format,
GLuint source_gl_format,
@@ -130,15 +128,6 @@ struct _CoglTextureDriver
int width,
int height);
- /*
- * It may depend on the driver as to what texture targets may be used when
- * creating a foreign texture. E.g. OpenGL supports ARB_texture_rectangle
- * but GLES doesn't
- */
- gboolean
- (* allows_foreign_gl_target) (CoglContext *ctx,
- GLenum gl_target);
-
/*
* The driver may impose constraints on what formats can be used to store
* texture data read from textures. For example GLES currently only supports
diff --git a/cogl/cogl/cogl-texture-private.h b/cogl/cogl/cogl-texture-private.h
index 006bf7514..00ae1355c 100644
--- a/cogl/cogl/cogl-texture-private.h
+++ b/cogl/cogl/cogl-texture-private.h
@@ -146,8 +146,6 @@ struct _CoglTextureVtable
CoglPixelFormat (* get_format) (CoglTexture *tex);
GLenum (* get_gl_format) (CoglTexture *tex);
- gboolean (* is_foreign) (CoglTexture *tex);
-
/* Only needs to be implemented if is_primitive == TRUE */
void (* set_auto_mipmap) (CoglTexture *texture,
gboolean value);
@@ -157,7 +155,6 @@ typedef enum _CoglTextureSoureType {
COGL_TEXTURE_SOURCE_TYPE_SIZED = 1,
COGL_TEXTURE_SOURCE_TYPE_BITMAP,
COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE,
- COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN,
COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL
} CoglTextureSourceType;
@@ -326,9 +323,6 @@ void
_cogl_texture_set_internal_format (CoglTexture *texture,
CoglPixelFormat internal_format);
-gboolean
-_cogl_texture_is_foreign (CoglTexture *texture);
-
void
_cogl_texture_associate_framebuffer (CoglTexture *texture,
CoglFramebuffer *framebuffer);
diff --git a/cogl/cogl/cogl-texture.c b/cogl/cogl/cogl-texture.c
index 86b94e9d3..f9b7e63e9 100644
--- a/cogl/cogl/cogl-texture.c
+++ b/cogl/cogl/cogl-texture.c
@@ -46,7 +46,6 @@
#include "cogl-texture-driver.h"
#include "cogl-texture-2d-sliced-private.h"
#include "cogl-texture-2d-private.h"
-#include "cogl-texture-2d-gl.h"
#include "cogl-sub-texture-private.h"
#include "cogl-atlas-texture-private.h"
#include "cogl-pipeline.h"
@@ -154,7 +153,6 @@ _cogl_texture_free_loader (CoglTexture *texture)
{
case COGL_TEXTURE_SOURCE_TYPE_SIZED:
case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE:
- case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN:
case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL:
break;
case COGL_TEXTURE_SOURCE_TYPE_BITMAP:
@@ -191,15 +189,6 @@ _cogl_texture_needs_premult_conversion (CoglPixelFormat src_format,
(dst_format & COGL_PREMULT_BIT));
}
-gboolean
-_cogl_texture_is_foreign (CoglTexture *texture)
-{
- if (texture->vtable->is_foreign)
- return texture->vtable->is_foreign (texture);
- else
- return FALSE;
-}
-
gboolean
cogl_texture_is_get_data_supported (CoglTexture *texture)
{
diff --git a/cogl/cogl/cogl.h b/cogl/cogl/cogl.h
index fb1b99a14..c9c5ffcbf 100644
--- a/cogl/cogl/cogl.h
+++ b/cogl/cogl/cogl.h
@@ -102,7 +102,6 @@
#include <cogl/cogl-buffer.h>
#include <cogl/cogl-pixel-buffer.h>
#include <cogl/cogl-texture-2d.h>
-#include <cogl/cogl-texture-2d-gl.h>
#include <cogl/cogl-texture-2d-sliced.h>
#include <cogl/cogl-sub-texture.h>
#include <cogl/cogl-atlas-texture.h>
diff --git a/cogl/cogl/cogl.symbols b/cogl/cogl/cogl.symbols
index 21ad323a7..9477407d5 100644
--- a/cogl/cogl/cogl.symbols
+++ b/cogl/cogl/cogl.symbols
@@ -822,7 +822,6 @@ cogl_texture_pixmap_x11_update_area
cogl_texture_rectangle_get_gtype
#endif
cogl_texture_rectangle_new_from_bitmap
-cogl_texture_rectangle_new_from_foreign
cogl_texture_rectangle_new_with_size
#ifndef COGL_DISABLE_DEPRECATED
cogl_texture_ref
diff --git a/cogl/cogl/deprecated/cogl-auto-texture.c b/cogl/cogl/deprecated/cogl-auto-texture.c
index 0e1d7467e..ca009ee9a 100644
--- a/cogl/cogl/deprecated/cogl-auto-texture.c
+++ b/cogl/cogl/deprecated/cogl-auto-texture.c
@@ -48,7 +48,6 @@
#include "cogl-bitmap-private.h"
#include "cogl-atlas-texture-private.h"
#include "cogl-sub-texture.h"
-#include "cogl-texture-2d-gl.h"
#include "deprecated/cogl-auto-texture.h"
diff --git a/cogl/cogl/driver/gl/cogl-pipeline-opengl-private.h
b/cogl/cogl/driver/gl/cogl-pipeline-opengl-private.h
index eae42fe16..de2be482d 100644
--- a/cogl/cogl/driver/gl/cogl-pipeline-opengl-private.h
+++ b/cogl/cogl/driver/gl/cogl-pipeline-opengl-private.h
@@ -71,13 +71,6 @@ typedef struct _CoglTextureUnit
* dirty_gl_texture == TRUE */
GLenum gl_target;
- /* Foreign textures are those not created or deleted by Cogl. If we ever
- * call glBindTexture for a foreign texture then the next time we are
- * asked to glBindTexture we can't try and optimize a redundant state
- * change because we don't know if the original texture name was deleted
- * and now we are being asked to bind a recycled name. */
- gboolean is_foreign;
-
/* We have many components in Cogl that need to temporarily bind arbitrary
* textures e.g. to query texture object parameters and since we don't
* want that to result in too much redundant reflushing of layer state
@@ -141,8 +134,7 @@ _cogl_set_active_texture_unit (int unit_index);
void
_cogl_bind_gl_texture_transient (GLenum gl_target,
- GLuint gl_texture,
- gboolean is_foreign);
+ GLuint gl_texture);
void
_cogl_delete_gl_texture (GLuint gl_texture);
diff --git a/cogl/cogl/driver/gl/cogl-pipeline-opengl.c b/cogl/cogl/driver/gl/cogl-pipeline-opengl.c
index 6602b3bd5..6dba54796 100644
--- a/cogl/cogl/driver/gl/cogl-pipeline-opengl.c
+++ b/cogl/cogl/driver/gl/cogl-pipeline-opengl.c
@@ -77,7 +77,6 @@ texture_unit_init (CoglContext *ctx,
unit->enabled_gl_target = 0;
unit->gl_texture = 0;
unit->gl_target = 0;
- unit->is_foreign = FALSE;
unit->dirty_gl_texture = FALSE;
unit->matrix_stack = cogl_matrix_stack_new (ctx);
@@ -166,8 +165,7 @@ _cogl_set_active_texture_unit (int unit_index)
*/
void
_cogl_bind_gl_texture_transient (GLenum gl_target,
- GLuint gl_texture,
- gboolean is_foreign)
+ GLuint gl_texture)
{
CoglTextureUnit *unit;
@@ -183,18 +181,12 @@ _cogl_bind_gl_texture_transient (GLenum gl_target,
_cogl_set_active_texture_unit (1);
unit = _cogl_get_texture_unit (1);
- /* NB: If we have previously bound a foreign texture to this texture
- * unit we don't know if that texture has since been deleted and we
- * are seeing the texture name recycled */
- if (unit->gl_texture == gl_texture &&
- !unit->dirty_gl_texture &&
- !unit->is_foreign)
+ if (unit->gl_texture == gl_texture && !unit->dirty_gl_texture)
return;
GE (ctx, glBindTexture (gl_target, gl_texture));
unit->dirty_gl_texture = TRUE;
- unit->is_foreign = is_foreign;
}
void
@@ -775,7 +767,7 @@ flush_layers_common_gl_state_cb (CoglPipelineLayer *layer, void *user_data)
* associated with the texture unit then we can't assume that we
* aren't seeing a recycled texture name so we have to bind.
*/
- if (unit->gl_texture != gl_texture || unit->is_foreign)
+ if (unit->gl_texture != gl_texture)
{
if (unit_index == 1)
unit->dirty_gl_texture = TRUE;
@@ -785,8 +777,6 @@ flush_layers_common_gl_state_cb (CoglPipelineLayer *layer, void *user_data)
unit->gl_target = gl_target;
}
- unit->is_foreign = _cogl_texture_is_foreign (texture);
-
/* The texture_storage_changed boolean indicates if the
* CoglTexture's underlying GL texture storage has changed since
* it was flushed to the texture unit. We've just flushed the
diff --git a/cogl/cogl/driver/gl/cogl-texture-2d-gl.c b/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
index 1ffcc968b..582621637 100644
--- a/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
+++ b/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
@@ -38,7 +38,6 @@
#include "cogl-private.h"
#include "cogl-texture-private.h"
-#include "cogl-texture-2d-gl.h"
#include "cogl-texture-2d-private.h"
#include "driver/gl/cogl-texture-2d-gl-private.h"
#include "driver/gl/cogl-texture-gl-private.h"
@@ -63,7 +62,7 @@
void
_cogl_texture_2d_gl_free (CoglTexture2D *tex_2d)
{
- if (!tex_2d->is_foreign && tex_2d->gl_texture)
+ if (tex_2d->gl_texture)
_cogl_delete_gl_texture (tex_2d->gl_texture);
#if defined (COGL_HAS_EGL_SUPPORT)
@@ -163,8 +162,7 @@ allocate_with_size (CoglTexture2D *tex_2d,
tex_2d->gl_internal_format = gl_intformat;
_cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
- gl_texture,
- tex_2d->is_foreign);
+ gl_texture);
/* Clear any GL errors */
_cogl_gl_util_clear_gl_errors (ctx);
@@ -243,7 +241,6 @@ allocate_from_bitmap (CoglTexture2D *tex_2d,
if (!ctx->texture_driver->upload_to_gl (ctx,
GL_TEXTURE_2D,
tex_2d->gl_texture,
- FALSE,
upload_bmp,
gl_intformat,
gl_format,
@@ -278,8 +275,7 @@ allocate_from_egl_image (CoglTexture2D *tex_2d,
tex_2d->gl_texture =
ctx->texture_driver->gen (ctx, GL_TEXTURE_2D, internal_format);
_cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
- tex_2d->gl_texture,
- FALSE);
+ tex_2d->gl_texture);
_cogl_gl_util_clear_gl_errors (ctx);
ctx->glEGLImageTargetTexture2D (GL_TEXTURE_2D, loader->src.egl_image.image);
@@ -307,132 +303,6 @@ allocate_from_egl_image (CoglTexture2D *tex_2d,
}
#endif
-static gboolean
-allocate_from_gl_foreign (CoglTexture2D *tex_2d,
- CoglTextureLoader *loader,
- GError **error)
-{
- CoglTexture *tex = COGL_TEXTURE (tex_2d);
- CoglContext *ctx = tex->context;
- CoglPixelFormat format = loader->src.gl_foreign.format;
- GLint gl_compressed = GL_FALSE;
- GLenum gl_int_format = 0;
-
- if (!ctx->texture_driver->allows_foreign_gl_target (ctx, GL_TEXTURE_2D))
- {
- g_set_error_literal (error,
- COGL_SYSTEM_ERROR,
- COGL_SYSTEM_ERROR_UNSUPPORTED,
- "Foreign GL_TEXTURE_2D textures are not "
- "supported by your system");
- return FALSE;
- }
-
- /* Make sure binding succeeds */
- _cogl_gl_util_clear_gl_errors (ctx);
-
- _cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
- loader->src.gl_foreign.gl_handle, TRUE);
- if (_cogl_gl_util_get_error (ctx) != GL_NO_ERROR)
- {
- g_set_error_literal (error,
- COGL_SYSTEM_ERROR,
- COGL_SYSTEM_ERROR_UNSUPPORTED,
- "Failed to bind foreign GL_TEXTURE_2D texture");
- return FALSE;
- }
-
- /* Obtain texture parameters
- (only level 0 we are interested in) */
-
-#ifdef HAVE_COGL_GL
- if (_cogl_has_private_feature
- (ctx, COGL_PRIVATE_FEATURE_QUERY_TEXTURE_PARAMETERS))
- {
- GE( ctx, glGetTexLevelParameteriv (GL_TEXTURE_2D, 0,
- GL_TEXTURE_COMPRESSED,
- &gl_compressed) );
-
- {
- GLint val;
-
- GE( ctx, glGetTexLevelParameteriv (GL_TEXTURE_2D, 0,
- GL_TEXTURE_INTERNAL_FORMAT,
- &val) );
-
- gl_int_format = val;
- }
-
- /* If we can query GL for the actual pixel format then we'll ignore
- the passed in format and use that. */
- if (!ctx->driver_vtable->pixel_format_from_gl_internal (ctx,
- gl_int_format,
- &format))
- {
- g_set_error_literal (error,
- COGL_SYSTEM_ERROR,
- COGL_SYSTEM_ERROR_UNSUPPORTED,
- "Unsupported internal format for foreign "
- "texture");
- return FALSE;
- }
- }
- else
-#endif
- {
- /* Otherwise we'll assume we can derive the GL format from the
- passed in format */
- ctx->driver_vtable->pixel_format_to_gl (ctx,
- format,
- &gl_int_format,
- NULL,
- NULL);
- }
-
- /* Compressed texture images not supported */
- if (gl_compressed == GL_TRUE)
- {
- g_set_error_literal (error,
- COGL_SYSTEM_ERROR,
- COGL_SYSTEM_ERROR_UNSUPPORTED,
- "Compressed foreign textures aren't currently"
- " supported");
- return FALSE;
- }
-
- /* Note: previously this code would query the texture object for
- whether it has GL_GENERATE_MIPMAP enabled to determine whether to
- auto-generate the mipmap. This doesn't make much sense any more
- since Cogl switch to using glGenerateMipmap. Ideally I think
- cogl_texture_2d_gl_new_from_foreign should take a flags parameter so
- that the application can decide whether it wants
- auto-mipmapping. To be compatible with existing code, Cogl now
- disables its own auto-mipmapping but leaves the value of
- GL_GENERATE_MIPMAP alone so that it would still work but without
- the dirtiness tracking that Cogl would do. */
-
- _cogl_texture_2d_set_auto_mipmap (COGL_TEXTURE (tex_2d), FALSE);
-
- /* Setup bitmap info */
- tex_2d->is_foreign = TRUE;
- tex_2d->mipmaps_dirty = TRUE;
-
- tex_2d->gl_texture = loader->src.gl_foreign.gl_handle;
- tex_2d->gl_internal_format = gl_int_format;
-
- /* Unknown filter */
- tex_2d->gl_legacy_texobj_min_filter = GL_FALSE;
- tex_2d->gl_legacy_texobj_mag_filter = GL_FALSE;
-
- tex_2d->internal_format = format;
-
- _cogl_texture_set_allocated (tex,
- format,
- loader->src.gl_foreign.width,
- loader->src.gl_foreign.height);
- return TRUE;
-}
-
#if defined (COGL_HAS_EGL_SUPPORT)
static gboolean
allocate_custom_egl_image_external (CoglTexture2D *tex_2d,
@@ -550,8 +420,6 @@ _cogl_texture_2d_gl_allocate (CoglTexture *tex,
#else
g_return_val_if_reached (FALSE);
#endif
- case COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN:
- return allocate_from_gl_foreign (tex_2d, loader, error);
case COGL_TEXTURE_SOURCE_TYPE_EGL_IMAGE_EXTERNAL:
#if defined (COGL_HAS_EGL_SUPPORT)
return allocate_custom_egl_image_external (tex_2d, loader, error);
@@ -581,8 +449,7 @@ _cogl_texture_2d_gl_flush_legacy_texobj_filters (CoglTexture *tex,
/* Apply new filters to the texture */
_cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
- tex_2d->gl_texture,
- tex_2d->is_foreign);
+ tex_2d->gl_texture);
GE( ctx, glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter) );
GE( ctx, glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter) );
}
@@ -603,8 +470,7 @@ _cogl_texture_2d_gl_flush_legacy_texobj_wrap_modes (CoglTexture *tex,
tex_2d->gl_legacy_texobj_wrap_mode_t != wrap_mode_t)
{
_cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
- tex_2d->gl_texture,
- tex_2d->is_foreign);
+ tex_2d->gl_texture);
GE( ctx, glTexParameteri (GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S,
wrap_mode_s) );
@@ -617,42 +483,6 @@ _cogl_texture_2d_gl_flush_legacy_texobj_wrap_modes (CoglTexture *tex,
}
}
-CoglTexture2D *
-cogl_texture_2d_gl_new_from_foreign (CoglContext *ctx,
- unsigned int gl_handle,
- int width,
- int height,
- CoglPixelFormat format)
-{
- CoglTextureLoader *loader;
-
- /* NOTE: width, height and internal format are not queriable
- * in GLES, hence such a function prototype.
- */
-
- /* Note: We always trust the given width and height without querying
- * the texture object because the user may be creating a Cogl
- * texture for a texture_from_pixmap object where glTexImage2D may
- * not have been called and the texture_from_pixmap spec doesn't
- * clarify that it is reliable to query back the size from OpenGL.
- */
-
- /* Assert it is a valid GL texture object */
- g_return_val_if_fail (ctx->glIsTexture (gl_handle), FALSE);
-
- /* Validate width and height */
- g_return_val_if_fail (width > 0 && height > 0, NULL);
-
- loader = _cogl_texture_create_loader ();
- loader->src_type = COGL_TEXTURE_SOURCE_TYPE_GL_FOREIGN;
- loader->src.gl_foreign.gl_handle = gl_handle;
- loader->src.gl_foreign.width = width;
- loader->src.gl_foreign.height = height;
- loader->src.gl_foreign.format = format;
-
- return _cogl_texture_2d_create_base (ctx, width, height, format, loader);
-}
-
void
_cogl_texture_2d_gl_copy_from_framebuffer (CoglTexture2D *tex_2d,
int src_x,
@@ -676,8 +506,7 @@ _cogl_texture_2d_gl_copy_from_framebuffer (CoglTexture2D *tex_2d,
~COGL_FRAMEBUFFER_STATE_CLIP);
_cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
- tex_2d->gl_texture,
- tex_2d->is_foreign);
+ tex_2d->gl_texture);
ctx->glCopyTexSubImage2D (GL_TEXTURE_2D,
0, /* level */
@@ -741,7 +570,6 @@ _cogl_texture_2d_gl_copy_from_bitmap (CoglTexture2D *tex_2d,
status = ctx->texture_driver->upload_subregion_to_gl (ctx,
tex,
- FALSE,
src_x, src_y,
dst_x, dst_y,
width, height,
@@ -793,8 +621,7 @@ _cogl_texture_2d_gl_get_data (CoglTexture2D *tex_2d,
bpp);
_cogl_bind_gl_texture_transient (tex_2d->gl_target,
- tex_2d->gl_texture,
- tex_2d->is_foreign);
+ tex_2d->gl_texture);
ctx->texture_driver->gl_get_tex_image (ctx,
tex_2d->gl_target,
diff --git a/cogl/cogl/driver/gl/cogl-texture-gl.c b/cogl/cogl/driver/gl/cogl-texture-gl.c
index 78ab103ad..09bb25f85 100644
--- a/cogl/cogl/driver/gl/cogl-texture-gl.c
+++ b/cogl/cogl/driver/gl/cogl-texture-gl.c
@@ -119,8 +119,7 @@ _cogl_texture_gl_maybe_update_max_level (CoglTexture *texture,
texture->max_level = max_level;
_cogl_bind_gl_texture_transient (gl_target,
- gl_handle,
- _cogl_texture_is_foreign (texture));
+ gl_handle);
GE( ctx, glTexParameteri (gl_target,
GL_TEXTURE_MAX_LEVEL, texture->max_level));
@@ -141,8 +140,7 @@ _cogl_texture_gl_generate_mipmaps (CoglTexture *texture)
cogl_texture_get_gl_texture (texture, &gl_handle, &gl_target);
_cogl_bind_gl_texture_transient (gl_target,
- gl_handle,
- _cogl_texture_is_foreign (texture));
+ gl_handle);
GE( ctx, glGenerateMipmap (gl_target) );
}
diff --git a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
index 7e3a3afce..47d1a9799 100644
--- a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
+++ b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
@@ -66,7 +66,7 @@ _cogl_texture_driver_gen (CoglContext *ctx,
GE (ctx, glGenTextures (1, &tex));
- _cogl_bind_gl_texture_transient (gl_target, tex, FALSE);
+ _cogl_bind_gl_texture_transient (gl_target, tex);
switch (gl_target)
{
@@ -172,7 +172,6 @@ _cogl_texture_driver_prep_gl_for_pixels_download (CoglContext *ctx,
static gboolean
_cogl_texture_driver_upload_subregion_to_gl (CoglContext *ctx,
CoglTexture *texture,
- gboolean is_foreign,
int src_x,
int src_y,
int dst_x,
@@ -221,7 +220,7 @@ _cogl_texture_driver_upload_subregion_to_gl (CoglContext *ctx,
src_y,
bpp);
- _cogl_bind_gl_texture_transient (gl_target, gl_handle, is_foreign);
+ _cogl_bind_gl_texture_transient (gl_target, gl_handle);
/* Clear any GL errors */
_cogl_gl_util_clear_gl_errors (ctx);
@@ -291,7 +290,6 @@ static gboolean
_cogl_texture_driver_upload_to_gl (CoglContext *ctx,
GLenum gl_target,
GLuint gl_handle,
- gboolean is_foreign,
CoglBitmap *source_bmp,
GLint internal_gl_format,
GLuint source_gl_format,
@@ -329,7 +327,7 @@ _cogl_texture_driver_upload_to_gl (CoglContext *ctx,
cogl_bitmap_get_rowstride (source_bmp),
0, 0, 0, bpp);
- _cogl_bind_gl_texture_transient (gl_target, gl_handle, is_foreign);
+ _cogl_bind_gl_texture_transient (gl_target, gl_handle);
/* Clear any GL errors */
_cogl_gl_util_clear_gl_errors (ctx);
@@ -399,23 +397,6 @@ _cogl_texture_driver_size_supported (CoglContext *ctx,
return new_width != 0;
}
-static gboolean
-_cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,
- GLenum gl_target)
-{
- /* GL_ARB_texture_rectangle textures are supported if they are
- created from foreign because some chipsets have trouble with
- GL_ARB_texture_non_power_of_two. There is no Cogl call to create
- them directly to emphasize the fact that they don't work fully
- (for example, no mipmapping and complicated shader support) */
-
- /* Allow 2-dimensional or rectangle textures only */
- if (gl_target != GL_TEXTURE_2D && gl_target != GL_TEXTURE_RECTANGLE_ARB)
- return FALSE;
-
- return TRUE;
-}
-
static CoglPixelFormat
_cogl_texture_driver_find_best_gl_get_data_format
(CoglContext *context,
@@ -439,6 +420,5 @@ _cogl_texture_driver_gl =
_cogl_texture_driver_prep_gl_for_pixels_download,
_cogl_texture_driver_gl_get_tex_image,
_cogl_texture_driver_size_supported,
- _cogl_texture_driver_allows_foreign_gl_target,
_cogl_texture_driver_find_best_gl_get_data_format
};
diff --git a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
index 0e66169fb..b7b354467 100644
--- a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
+++ b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
@@ -81,7 +81,7 @@ _cogl_texture_driver_gen (CoglContext *ctx,
GE (ctx, glGenTextures (1, &tex));
- _cogl_bind_gl_texture_transient (gl_target, tex, FALSE);
+ _cogl_bind_gl_texture_transient (gl_target, tex);
switch (gl_target)
{
@@ -184,7 +184,6 @@ prepare_bitmap_alignment_for_upload (CoglContext *ctx,
static gboolean
_cogl_texture_driver_upload_subregion_to_gl (CoglContext *ctx,
CoglTexture *texture,
- gboolean is_foreign,
int src_x,
int src_y,
int dst_x,
@@ -270,7 +269,7 @@ _cogl_texture_driver_upload_subregion_to_gl (CoglContext *ctx,
return FALSE;
}
- _cogl_bind_gl_texture_transient (gl_target, gl_handle, is_foreign);
+ _cogl_bind_gl_texture_transient (gl_target, gl_handle);
/* Clear any GL errors */
_cogl_gl_util_clear_gl_errors (ctx);
@@ -341,7 +340,6 @@ static gboolean
_cogl_texture_driver_upload_to_gl (CoglContext *ctx,
GLenum gl_target,
GLuint gl_handle,
- gboolean is_foreign,
CoglBitmap *source_bmp,
GLint internal_gl_format,
GLuint source_gl_format,
@@ -373,7 +371,7 @@ _cogl_texture_driver_upload_to_gl (CoglContext *ctx,
/* Setup gl alignment to match rowstride and top-left corner */
_cogl_texture_driver_prep_gl_for_pixels_upload (ctx, rowstride, bpp);
- _cogl_bind_gl_texture_transient (gl_target, gl_handle, is_foreign);
+ _cogl_bind_gl_texture_transient (gl_target, gl_handle);
data = _cogl_bitmap_gl_bind (bmp,
COGL_BUFFER_ACCESS_READ,
@@ -442,16 +440,6 @@ _cogl_texture_driver_size_supported (CoglContext *ctx,
return width <= max_size && height <= max_size;
}
-static gboolean
-_cogl_texture_driver_allows_foreign_gl_target (CoglContext *ctx,
- GLenum gl_target)
-{
- /* Allow 2-dimensional textures only */
- if (gl_target != GL_TEXTURE_2D)
- return FALSE;
- return TRUE;
-}
-
static CoglPixelFormat
_cogl_texture_driver_find_best_gl_get_data_format
(CoglContext *context,
@@ -476,6 +464,5 @@ _cogl_texture_driver_gles =
_cogl_texture_driver_prep_gl_for_pixels_download,
_cogl_texture_driver_gl_get_tex_image,
_cogl_texture_driver_size_supported,
- _cogl_texture_driver_allows_foreign_gl_target,
_cogl_texture_driver_find_best_gl_get_data_format
};
diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build
index c2fea5e96..8041e786e 100644
--- a/cogl/cogl/meson.build
+++ b/cogl/cogl/meson.build
@@ -113,7 +113,6 @@ cogl_nonintrospected_headers = [
'cogl-output.h',
'cogl-matrix-stack.h',
'cogl-poll.h',
- 'cogl-texture-2d-gl.h',
'cogl-sub-texture.h',
'cogl-atlas-texture.h',
'cogl-meta-texture.h',
diff --git a/cogl/cogl/winsys/cogl-texture-pixmap-x11.c b/cogl/cogl/winsys/cogl-texture-pixmap-x11.c
index 98028c93c..f2d91b4bd 100644
--- a/cogl/cogl/winsys/cogl-texture-pixmap-x11.c
+++ b/cogl/cogl/winsys/cogl-texture-pixmap-x11.c
@@ -1094,6 +1094,5 @@ cogl_texture_pixmap_x11_vtable =
_cogl_texture_pixmap_x11_gl_flush_legacy_texobj_wrap_modes,
_cogl_texture_pixmap_x11_get_format,
_cogl_texture_pixmap_x11_get_gl_format,
- NULL, /* is_foreign */
NULL /* set_auto_mipmap */
};
diff --git a/cogl/cogl/winsys/cogl-winsys-glx.c b/cogl/cogl/winsys/cogl-winsys-glx.c
index 378fec7be..1925845b0 100644
--- a/cogl/cogl/winsys/cogl-winsys-glx.c
+++ b/cogl/cogl/winsys/cogl-winsys-glx.c
@@ -2471,7 +2471,7 @@ _cogl_winsys_texture_pixmap_x11_update (CoglTexturePixmapX11 *tex_pixmap,
COGL_NOTE (TEXTURE_PIXMAP, "Rebinding GLXPixmap for %p", tex_pixmap);
- _cogl_bind_gl_texture_transient (gl_target, gl_handle, FALSE);
+ _cogl_bind_gl_texture_transient (gl_target, gl_handle);
if (texture_info->pixmap_bound)
glx_renderer->glXReleaseTexImage (xlib_renderer->xdpy,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]