summaryrefslogtreecommitdiff
path: root/cogl/cogl-gles2-context-private.h
diff options
context:
space:
mode:
Diffstat (limited to 'cogl/cogl-gles2-context-private.h')
-rw-r--r--cogl/cogl-gles2-context-private.h201
1 files changed, 0 insertions, 201 deletions
diff --git a/cogl/cogl-gles2-context-private.h b/cogl/cogl-gles2-context-private.h
deleted file mode 100644
index 805b0646..00000000
--- a/cogl/cogl-gles2-context-private.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Cogl
- *
- * A Low Level GPU Graphics and Utilities API
- *
- * Copyright (C) 2011 Collabora Ltd.
- * Copyright (C) 2012 Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Authors:
- * Tomeu Vizoso <tomeu.vizoso@collabora.com>
- * Robert Bragg <robert@linux.intel.com>
- *
- */
-
-#ifndef __COGL_GLES2_CONTEXT_PRIVATE_H
-#define __COGL_GLES2_CONTEXT_PRIVATE_H
-
-#include <glib.h>
-
-#include "cogl-object-private.h"
-#include "cogl-framebuffer-private.h"
-#include "cogl-list.h"
-
-typedef struct _CoglGLES2Offscreen
-{
- CoglList link;
- CoglOffscreen *original_offscreen;
- CoglGLFramebuffer gl_framebuffer;
-} CoglGLES2Offscreen;
-
-typedef struct
-{
- /* GL's ID for the shader */
- GLuint object_id;
- /* Shader type */
- GLenum type;
-
- /* Number of references to this shader. The shader will have one
- * reference when it is created. This reference will be removed when
- * glDeleteShader is called. An additional reference will be taken
- * whenever the shader is attached to a program. This is necessary
- * to correctly detect when a shader is destroyed because
- * glDeleteShader doesn't actually delete the object if it is
- * attached to a program */
- int ref_count;
-
- /* Set once this object has had glDeleteShader called on it. We need
- * to keep track of this so we don't deref the data twice if the
- * application calls glDeleteShader multiple times */
- CoglBool deleted;
-} CoglGLES2ShaderData;
-
-typedef enum
-{
- COGL_GLES2_FLIP_STATE_UNKNOWN,
- COGL_GLES2_FLIP_STATE_NORMAL,
- COGL_GLES2_FLIP_STATE_FLIPPED
-} CoglGLES2FlipState;
-
-typedef struct
-{
- /* GL's ID for the program */
- GLuint object_id;
-
- /* List of shaders attached to this program */
- GList *attached_shaders;
-
- /* Reference count. There can be up to two references. One of these
- * will exist between glCreateProgram and glDeleteShader, the other
- * will exist while the program is made current. This is necessary
- * to correctly detect when the program is deleted because
- * glDeleteShader will delay the deletion if the program is
- * current */
- int ref_count;
-
- /* Set once this object has had glDeleteProgram called on it. We need
- * to keep track of this so we don't deref the data twice if the
- * application calls glDeleteProgram multiple times */
- CoglBool deleted;
-
- GLuint flip_vector_location;
-
- /* A cache of what value we've put in the flip vector uniform so
- * that we don't flush unless it's changed */
- CoglGLES2FlipState flip_vector_state;
-
- CoglGLES2Context *context;
-} CoglGLES2ProgramData;
-
-/* State tracked for each texture unit */
-typedef struct
-{
- /* The currently bound texture for the GL_TEXTURE_2D */
- GLuint current_texture_2d;
-} CoglGLES2TextureUnitData;
-
-/* State tracked for each texture object */
-typedef struct
-{
- /* GL's ID for this object */
- GLuint object_id;
-
- GLenum target;
-
- /* The details for texture when it has a 2D target */
- int width, height;
- GLenum format;
-} CoglGLES2TextureObjectData;
-
-struct _CoglGLES2Context
-{
- CoglObject _parent;
-
- CoglContext *context;
-
- /* This is set to FALSE until the first time the GLES2 context is
- * bound to something. We need to keep track of this so we can set
- * the viewport and scissor the first time it is bound. */
- CoglBool has_been_bound;
-
- CoglFramebuffer *read_buffer;
- CoglGLES2Offscreen *gles2_read_buffer;
- CoglFramebuffer *write_buffer;
- CoglGLES2Offscreen *gles2_write_buffer;
-
- GLuint current_fbo_handle;
-
- CoglList foreign_offscreens;
-
- CoglGLES2Vtable *vtable;
-
- /* Hash table mapping GL's IDs for shaders and objects to ShaderData
- * and ProgramData so that we can maintain extra data for these
- * objects. Although technically the IDs will end up global across
- * all GLES2 contexts because they will all be in the same share
- * list, we don't really want to expose this outside of the Cogl API
- * so we will assume it is undefined behaviour if an application
- * relies on this. */
- GHashTable *shader_map;
- GHashTable *program_map;
-
- /* Currently in use program. We need to keep track of this so that
- * we can keep a reference to the data for the program while it is
- * current */
- CoglGLES2ProgramData *current_program;
-
- /* Whether the currently bound framebuffer needs flipping. This is
- * used to check for changes so that we can dirty the following
- * state flags */
- CoglGLES2FlipState current_flip_state;
-
- /* The following state is tracked separately from the GL context
- * because we need to modify it depending on whether we are flipping
- * the geometry. */
- CoglBool viewport_dirty;
- int viewport[4];
- CoglBool scissor_dirty;
- int scissor[4];
- CoglBool front_face_dirty;
- GLenum front_face;
-
- /* We need to keep track of the pack alignment so we can flip the
- * results of glReadPixels read from a CoglOffscreen */
- int pack_alignment;
-
- /* A hash table of CoglGLES2TextureObjects indexed by the texture
- * object ID so that we can track some state */
- GHashTable *texture_object_map;
-
- /* Array of CoglGLES2TextureUnits to keep track of state for each
- * texture unit */
- GArray *texture_units;
-
- /* The currently active texture unit indexed from 0 (not from
- * GL_TEXTURE0) */
- int current_texture_unit;
-
- void *winsys;
-};
-
-#endif /* __COGL_GLES2_CONTEXT_PRIVATE_H */