### Namespace

# Cogl – 16

A Low Level GPU Graphics and Utilities API

Version | 16
Authors | Mutter Development Team
License | GPL-2.0-or-later
Website | https://blogs.gnome.org/shell-dev/
Source | https://gitlab.gnome.org/GNOME/mutter/

#### Build

C headers | `cogl/cogl.h`
pkg-config files | `mutter-cogl-16`

#### Dependencies

GObject—2.0 | The base type system library
| Browse documentation
Graphene—1.0 | A thin layer of mathematical types for 3D libraries
| Browse documentation

#### Additional documentation

- Classes Hierarchy

#### Classes

Atlas |
AtlasTexture | Functions for managing textures in Cogl’s global set of texture atlases.
Attribute |
AttributeBuffer | Functions for creating and manipulating attribute buffers.
Bitmap | Functions for loading images.
Buffer | Common buffer functions, including data upload APIs.
Context | The top level application context.
Display | Common aspects of a display pipeline.
Framebuffer |
FrameInfo | Frame information.
IndexBuffer | Functions for creating and manipulating vertex indices.
Indices | Describe vertex indices stored in a `CoglIndexBuffer`.
MatrixStack | Efficiently tracking many related transformations.
Offscreen | Functions for creating and manipulating offscreen framebuffers.
Onscreen |
ParamSpecColor | A `GParamSpec` subclass for defining properties holding a `CoglColor`.
Pipeline | Functions for creating and manipulating the GPU pipeline.
PixelBuffer |
Primitive | Functions for creating, manipulating and drawing primitives.
Program |
Renderer | Choosing a means to render.
Scanout |
Shader | Functions for accessing the programmable GL pipeline.
Snippet | Functions for creating and manipulating shader snippets.
SubTexture | Functions for creating and manipulating sub-textures.
Texture | Functions for creating and manipulating textures.
Texture2D | Functions for creating and manipulating 2D textures.
Texture2DSliced | Functions for creating and manipulating 2D meta textures that may internally be comprised of multiple 2D textures with power-of-two sizes.

#### Interfaces

ScanoutBuffer |

#### Structs

Color | A generic color definition.
DepthState | Functions for describing the depth testing state of your GPU.
DmaBufHandle | An opaque type that tracks the lifetime of a DMA buffer fd. Release with cogl_dma_buf_handle_free().
FrameClosure | An opaque type that tracks a `CoglFrameCallback` and associated user data. A `CoglFrameClosure` pointer will be returned from `cogl_onscreen_add_frame_callback()` and it allows you to remove a callback later using cogl_onscreen_remove_frame_callback().
MatrixEntry | Represents a single immutable transformation that was retrieved from a `CoglMatrixStack` using cogl_matrix_stack_get_entry().
TimestampQuery |
VertexP2 | A convenience vertex definition that can be used with cogl_primitive_new_p2().
VertexP2C4 | A convenience vertex definition that can be used with cogl_primitive_new_p2c4().
VertexP2T2 | A convenience vertex definition that can be used with cogl_primitive_new_p2t2().
VertexP3 | A convenience vertex definition that can be used with cogl_primitive_new_p3().
VertexP3T2 | A convenience vertex definition that can be used with cogl_primitive_new_p3t2().

#### Aliases

PipelineKey |

#### Enumerations

AttributeType | Data types for the components of a vertex attribute.
BufferBindTarget |
BufferUpdateHint | The update hint on a buffer allows the user to give some detail on how often the buffer data is going to be updated.
DepthTestFunction | When using depth testing one of these functions is used to compare the depth of an incoming fragment against the depth value currently stored in the depth buffer. The function is changed using cogl_depth_state_set_test_function().
DriverId | Identifiers for underlying hardware drivers that may be used by Cogl for rendering.
FeatureID | All the capabilities that can vary between different GPUs supported by Cogl. Applications that depend on any of these features should explicitly check for them using `cogl_context_has_feature()`.
FilterReturn | Return values for the `CoglXlibFilterFunc` and `CoglWin32FilterFunc` functions.
FramebufferError |
FrameEvent | Identifiers that are passed to `CoglFrameCallback` functions (registered using cogl_onscreen_add_frame_callback()) that mark the progression of a frame in some way which usually means that new information will have been accumulated in the frame’s corresponding `CoglFrameInfo` object.
GraphicsResetStatus | All the error values that might be returned by cogl_context_get_graphics_reset_status(). Each value’s meaning corresponds to the similarly named value defined in the ARB_robustness and NV_robustness_video_memory_purge extensions.
IndicesType | You should aim to use the smallest data type that gives you enough range, since it reduces the size of your index array and can help reduce the demand on memory bandwidth.
PipelineAlphaFunc | Alpha testing happens before blending primitives with the framebuffer and gives an opportunity to discard fragments based on a comparison with the incoming alpha value and a reference alpha value. The `CoglPipelineAlphaFunc` determines how the comparison is done.
PipelineCullFaceMode | Specifies which faces should be culled. This can be set on a pipeline using cogl_pipeline_set_cull_face_mode().
PipelineFilter | Texture filtering is used whenever the current pixel maps either to more than one texture element (texel) or less than one. These filter enums correspond to different strategies used to come up with a pixel color, by possibly referring to multiple neighbouring texels and taking a weighted average or simply using the nearest texel.
PipelineWrapMode | The wrap mode specifies what happens when texture coordinates outside the range 0→1 are used. Note that if the filter mode is anything but `COGL_PIPELINE_FILTER_NEAREST` then texels outside the range 0→1 might be used even when the coordinate is exactly 0 or 1 because OpenGL will try to sample neighbouring pixels. For example if you are trying to render the full texture then you may get artifacts around the edges when the pixels from the other side are merged in if the wrap mode is set to repeat.
PixelFormat | Pixel formats used by Cogl. For the formats with a byte per component, the order of the components specify the order in increasing memory addresses. So for example `COGL_PIXEL_FORMAT_RGB_888` would have the red component in the lowest address, green in the next address and blue after that regardless of the endianness of the system.
RendererError |
ShaderType | Types of shaders.
SnippetHook | `CoglSnippetHook` is used to specify a location within a `CoglPipeline` where the code of the snippet should be used when it is attached to a pipeline.
SystemError | Error enumeration for Cogl.
TextureComponents | See cogl_texture_set_components().
TextureError | Error codes that can be thrown when allocating textures.
VerticesMode | Different ways of interpreting vertices when drawing.
Winding | Enum used to represent the two directions of rotation. This can be used to set the front face for culling by calling cogl_pipeline_set_front_face_winding().
WinsysFeature |
WinsysID | Identifies specific window system backends that Cogl supports.

#### Bitfields

AtlasFlags |
BufferAccess | The access hints for `cogl_buffer_set_update_hint()`.
BufferBit | Types of auxiliary buffers.
BufferMapHint | Hints to Cogl about how you are planning to modify the data once it is mapped.
DrmModifierFilter |
EglImageFlags |
ReadPixelsFlags | Flags for cogl_framebuffer_read_pixels_into_bitmap().

#### Error Domains

ScanoutError |

#### Callbacks

AtlasUpdatePositionCallback |
FrameCallback | Is a callback that can be registered via `cogl_onscreen_add_frame_callback()` to be called when a frame progresses in some notable way.
PipelineLayerCallback | The callback prototype used with `cogl_pipeline_foreach_layer()` for iterating all the layers of a `pipeline`.
TextureForeachCallback | A callback used with `cogl_texture_foreach_in_region()` to retrieve details of all the low-level `CoglTexture`s that make up a given `CoglTexture`.

#### Functions

glib_source_new | Creates a `GSource` which handles Cogl’s internal system event processing.
graphene_matrix_project_point | Transforms a point whose position is given and returned as four float components.
graphene_matrix_project_points_f3 | Projects an array of input points and writes the result to another array of output points. The output points always have 4 components (known as homogeneous coordinates). The output array can simply point to the input array to do the transform in-place.
graphene_matrix_transform_points | Transforms an array of input points and writes the result to another array of output points. The input points can either have 2 or 3 components each. The output points always have 3 components. The output array can simply point to the input array to do the transform in-place.
param_spec_color | Creates a `GParamSpec` for properties using `CoglColor`.
set_tracing_disabled_on_thread |
set_tracing_enabled_on_thread |
start_tracing_with_fd |
start_tracing_with_path |
stop_tracing |
value_get_color |
value_set_color |
xlib_renderer_set_foreign_display | Sets a foreign Xlib display that Cogl will use for and Xlib based winsys backend.

#### Function Macros

ATLAS_TEXTURE_CONST |
ATTRIBUTE_BUFFER_CONST |
BUFFER_CONST |
COLOR_INIT | A macro that initializes a `CoglColor`, to be used when declaring it.
DEPRECATED_FOR |
INDEX_BUFFER_CONST |
PIXEL_BUFFER_CONST |
PRIVATE |
SUB_TEXTURE_CONST |
TEXTURE_2D_CONST |
TEXTURE_2D_SLICED_CONST |
TRACE_BEGIN_ANCHORED |
TRACE_BEGIN_SCOPED |
TRACE_DEFINE_COUNTER_DOUBLE |
TRACE_DEFINE_COUNTER_INT |
TRACE_DESCRIBE |
TRACE_END |
TRACE_INTERNAL_DEFINE_COUNTER |
TRACE_INTERNAL_SET_COUNTER |
TRACE_MESSAGE |
TRACE_SCOPED_ANCHOR |
TRACE_SET_COUNTER_DOUBLE |
TRACE_SET_COUNTER_INT |
VALUE_HOLDS_COLOR | Evaluates to `TRUE` if `x` holds a `CoglColor`.

#### Constants

A_BIT |
AFIRST_BIT |
BGR_BIT |
DEPTH_BIT |
PIXEL_FORMAT_MAX_PLANES | The maximum number of planes of a pixel format (see also cogl_pixel_format_get_planes()).
PREMULT_BIT |
STENCIL_BIT |
TEXTURE_MAX_WASTE |