2010-11-04 20:00:25 -04:00
|
|
|
/*
|
|
|
|
* Cogl
|
|
|
|
*
|
2014-02-21 20:28:54 -05:00
|
|
|
* A Low Level GPU Graphics and Utilities API
|
2010-11-04 20:00:25 -04:00
|
|
|
*
|
|
|
|
* Copyright (C) 2010 Intel Corporation.
|
|
|
|
*
|
2014-02-21 20:28:54 -05:00
|
|
|
* 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:
|
2010-11-04 20:00:25 -04:00
|
|
|
*
|
2014-02-21 20:28:54 -05:00
|
|
|
* The above copyright notice and this permission notice shall be
|
|
|
|
* included in all copies or substantial portions of the Software.
|
2010-11-04 20:00:25 -04:00
|
|
|
*
|
2014-02-21 20:28:54 -05:00
|
|
|
* 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.
|
2010-11-04 20:00:25 -04:00
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Robert Bragg <robert@linux.intel.com>
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2023-07-21 09:37:20 -04:00
|
|
|
#pragma once
|
|
|
|
|
2012-06-20 13:49:08 -04:00
|
|
|
#if !defined(__COGL_H_INSIDE__) && !defined(COGL_COMPILATION)
|
2010-11-04 20:00:25 -04:00
|
|
|
#error "Only <cogl/cogl.h> can be included directly."
|
|
|
|
#endif
|
|
|
|
|
2012-02-17 16:46:39 -05:00
|
|
|
/* We forward declare the CoglContext type here to avoid some circular
|
|
|
|
* dependency issues with the following headers.
|
|
|
|
*/
|
|
|
|
typedef struct _CoglContext CoglContext;
|
2021-05-15 06:56:49 -04:00
|
|
|
typedef struct _CoglTimestampQuery CoglTimestampQuery;
|
2012-02-17 16:46:39 -05:00
|
|
|
|
2023-08-07 09:38:12 -04:00
|
|
|
#include "cogl/cogl-display.h"
|
|
|
|
#include "cogl/cogl-pipeline.h"
|
|
|
|
#include "cogl/cogl-primitive.h"
|
2013-09-02 11:02:42 -04:00
|
|
|
|
|
|
|
#include <glib-object.h>
|
2010-11-04 20:00:25 -04:00
|
|
|
|
2018-11-23 02:42:05 -05:00
|
|
|
G_BEGIN_DECLS
|
2010-11-04 20:00:25 -04:00
|
|
|
|
|
|
|
/**
|
2023-08-17 06:08:32 -04:00
|
|
|
* CoglContext:
|
|
|
|
*
|
|
|
|
* The top level application context.
|
2010-11-04 20:00:25 -04:00
|
|
|
*
|
2011-12-16 10:07:25 -05:00
|
|
|
* A #CoglContext is the top most sandbox of Cogl state for an
|
|
|
|
* application or toolkit. Its main purpose is to act as a sandbox
|
|
|
|
* for the memory management of state objects. Normally an application
|
|
|
|
* will only create a single context since there is no way to share
|
|
|
|
* resources between contexts.
|
|
|
|
*
|
|
|
|
* For those familiar with OpenGL or perhaps Cairo it should be
|
|
|
|
* understood that unlike these APIs a Cogl context isn't a rendering
|
|
|
|
* context as such. In other words Cogl doesn't aim to provide a state
|
|
|
|
* machine style model for configuring rendering parameters. Most
|
|
|
|
* rendering state in Cogl is directly associated with user managed
|
|
|
|
* objects called pipelines and geometry is drawn with a specific
|
|
|
|
* pipeline object to a framebuffer object and those 3 things fully
|
|
|
|
* define the state for drawing. This is an important part of Cogl's
|
|
|
|
* design since it helps you write orthogonal rendering components
|
|
|
|
* that can all access the same GPU without having to worry about
|
|
|
|
* what state other components have left you with.
|
2012-09-10 06:26:17 -04:00
|
|
|
*
|
2024-01-04 07:14:20 -05:00
|
|
|
* Cogl does not maintain internal references to the context for
|
2012-09-10 06:26:17 -04:00
|
|
|
* resources that depend on the context so applications. This is to
|
|
|
|
* help applications control the lifetime a context without us needing to
|
|
|
|
* introduce special api to handle the breakup of internal circular
|
|
|
|
* references due to internal resources and caches associated with the
|
|
|
|
* context.
|
|
|
|
*
|
|
|
|
* One a context has been destroyed then all directly or indirectly
|
2020-08-26 05:49:50 -04:00
|
|
|
* dependent resources will be in an inconsistent state and should not
|
2012-09-10 06:26:17 -04:00
|
|
|
* be manipulated or queried in any way.
|
|
|
|
*
|
|
|
|
* For applications that rely on the operating system to clean up
|
|
|
|
* resources this policy shouldn't affect them, but for applications
|
|
|
|
* that need to carefully destroy and re-create Cogl contexts multiple
|
|
|
|
* times throughout their lifetime (such as Android applications) they
|
2020-08-26 05:49:50 -04:00
|
|
|
* should be careful to destroy all context dependent resources, such as
|
2012-09-10 06:26:17 -04:00
|
|
|
* framebuffers or textures etc before unrefing and destroying the
|
2024-01-04 07:14:20 -05:00
|
|
|
* context.
|
2010-11-04 20:00:25 -04:00
|
|
|
*/
|
|
|
|
|
2023-08-17 06:08:32 -04:00
|
|
|
#define COGL_TYPE_CONTEXT (cogl_context_get_type ())
|
2010-11-04 20:00:25 -04:00
|
|
|
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT
|
2023-08-17 06:08:32 -04:00
|
|
|
G_DECLARE_FINAL_TYPE (CoglContext,
|
|
|
|
cogl_context,
|
|
|
|
COGL,
|
|
|
|
CONTEXT,
|
|
|
|
GObject)
|
2013-09-02 11:02:42 -04:00
|
|
|
|
2011-12-16 10:07:25 -05:00
|
|
|
/**
|
2024-02-27 02:48:30 -05:00
|
|
|
* cogl_context_new: (constructor)
|
2013-09-03 15:56:12 -04:00
|
|
|
* @display: (allow-none): A #CoglDisplay pointer
|
2019-06-18 02:02:10 -04:00
|
|
|
* @error: A GError return location.
|
2011-12-16 10:07:25 -05:00
|
|
|
*
|
|
|
|
* Creates a new #CoglContext which acts as an application sandbox
|
|
|
|
* for any state objects that are allocated.
|
|
|
|
*
|
|
|
|
* Return value: (transfer full): A newly allocated #CoglContext
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT CoglContext *
|
2010-11-05 08:28:33 -04:00
|
|
|
cogl_context_new (CoglDisplay *display,
|
2019-06-18 02:02:10 -04:00
|
|
|
GError **error);
|
2010-11-05 08:28:33 -04:00
|
|
|
|
2011-12-16 10:07:25 -05:00
|
|
|
/**
|
2024-02-27 02:48:30 -05:00
|
|
|
* cogl_context_get_display:
|
2011-12-16 10:07:25 -05:00
|
|
|
* @context: A #CoglContext pointer
|
|
|
|
*
|
|
|
|
* Retrieves the #CoglDisplay that is internally associated with the
|
|
|
|
* given @context. This will return the same #CoglDisplay that was
|
|
|
|
* passed to cogl_context_new() or if %NULL was passed to
|
|
|
|
* cogl_context_new() then this function returns a pointer to the
|
|
|
|
* display that was automatically setup internally.
|
|
|
|
*
|
|
|
|
* Return value: (transfer none): The #CoglDisplay associated with the
|
|
|
|
* given @context.
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT CoglDisplay *
|
2011-08-25 12:39:35 -04:00
|
|
|
cogl_context_get_display (CoglContext *context);
|
|
|
|
|
2013-04-16 18:46:03 -04:00
|
|
|
/**
|
2024-02-27 02:48:30 -05:00
|
|
|
* cogl_context_get_renderer:
|
2013-04-16 18:46:03 -04:00
|
|
|
* @context: A #CoglContext pointer
|
|
|
|
*
|
|
|
|
* Retrieves the #CoglRenderer that is internally associated with the
|
|
|
|
* given @context. This will return the same #CoglRenderer that was
|
|
|
|
* passed to cogl_display_new() or if %NULL was passed to
|
|
|
|
* cogl_display_new() or cogl_context_new() then this function returns
|
|
|
|
* a pointer to the renderer that was automatically connected
|
|
|
|
* internally.
|
|
|
|
*
|
|
|
|
* Return value: (transfer none): The #CoglRenderer associated with the
|
|
|
|
* given @context.
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT CoglRenderer *
|
2013-04-16 18:46:03 -04:00
|
|
|
cogl_context_get_renderer (CoglContext *context);
|
|
|
|
|
2012-01-04 11:55:25 -05:00
|
|
|
|
2012-03-12 13:06:46 -04:00
|
|
|
/* XXX: not guarded by the EXPERIMENTAL_API defines to avoid
|
2012-02-17 16:46:39 -05:00
|
|
|
* upsetting glib-mkenums, but this can still be considered implicitly
|
|
|
|
* experimental since it's only useable with experimental API... */
|
|
|
|
/**
|
|
|
|
* CoglFeatureID:
|
2014-01-14 10:52:45 -05:00
|
|
|
* @COGL_FEATURE_ID_TEXTURE_RG: Support for
|
|
|
|
* %COGL_TEXTURE_COMPONENTS_RG as the internal components of a
|
|
|
|
* texture.
|
2023-12-04 13:32:00 -05:00
|
|
|
* @COGL_FEATURE_ID_TEXTURE_RGBA1010102: Support for 10bpc RGBA formats
|
|
|
|
* @COGL_FEATURE_ID_TEXTURE_HALF_FLOAT: Support for half float formats
|
2023-10-31 11:34:48 -04:00
|
|
|
* @COGL_FEATURE_ID_TEXTURE_NORM16: Support for 16bpc formats
|
2012-02-17 16:46:39 -05:00
|
|
|
* @COGL_FEATURE_ID_UNSIGNED_INT_INDICES: Set if
|
2012-12-31 18:26:11 -05:00
|
|
|
* %COGL_INDICES_TYPE_UNSIGNED_INT is supported in
|
2012-02-17 16:46:39 -05:00
|
|
|
* cogl_indices_new().
|
|
|
|
* @COGL_FEATURE_ID_MAP_BUFFER_FOR_READ: Whether cogl_buffer_map() is
|
|
|
|
* supported with CoglBufferAccess including read support.
|
|
|
|
* @COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE: Whether cogl_buffer_map() is
|
|
|
|
* supported with CoglBufferAccess including write support.
|
2014-03-14 11:06:39 -04:00
|
|
|
* @COGL_FEATURE_ID_BUFFER_AGE: Available if the age of #CoglOnscreen back
|
|
|
|
* buffers are tracked and so cogl_onscreen_get_buffer_age() can be
|
|
|
|
* expected to return age values other than 0.
|
2020-05-05 11:05:36 -04:00
|
|
|
* @COGL_FEATURE_ID_BLIT_FRAMEBUFFER: Whether blitting using
|
|
|
|
* cogl_blit_framebuffer() is supported.
|
2012-02-17 16:46:39 -05:00
|
|
|
*
|
|
|
|
* 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_has_feature() or cogl_has_features().
|
|
|
|
*/
|
|
|
|
typedef enum _CoglFeatureID
|
|
|
|
{
|
|
|
|
COGL_FEATURE_ID_UNSIGNED_INT_INDICES,
|
|
|
|
COGL_FEATURE_ID_MAP_BUFFER_FOR_READ,
|
|
|
|
COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE,
|
2013-01-10 20:13:34 -05:00
|
|
|
COGL_FEATURE_ID_FENCE,
|
2014-01-14 10:52:45 -05:00
|
|
|
COGL_FEATURE_ID_TEXTURE_RG,
|
2023-12-04 13:32:00 -05:00
|
|
|
COGL_FEATURE_ID_TEXTURE_RGBA1010102,
|
|
|
|
COGL_FEATURE_ID_TEXTURE_HALF_FLOAT,
|
2023-10-31 11:34:48 -04:00
|
|
|
COGL_FEATURE_ID_TEXTURE_NORM16,
|
2014-03-14 11:06:39 -04:00
|
|
|
COGL_FEATURE_ID_BUFFER_AGE,
|
2016-10-20 03:52:57 -04:00
|
|
|
COGL_FEATURE_ID_TEXTURE_EGL_IMAGE_EXTERNAL,
|
2020-05-05 11:05:36 -04:00
|
|
|
COGL_FEATURE_ID_BLIT_FRAMEBUFFER,
|
2021-05-15 06:56:49 -04:00
|
|
|
COGL_FEATURE_ID_TIMESTAMP_QUERY,
|
2012-02-17 16:46:39 -05:00
|
|
|
|
2012-10-08 10:04:33 -04:00
|
|
|
/*< private >*/
|
2012-10-05 20:25:27 -04:00
|
|
|
_COGL_N_FEATURE_IDS /*< skip >*/
|
2012-02-17 16:46:39 -05:00
|
|
|
} CoglFeatureID;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_has_feature:
|
|
|
|
* @context: A #CoglContext pointer
|
|
|
|
* @feature: A #CoglFeatureID
|
|
|
|
*
|
|
|
|
* Checks if a given @feature is currently available
|
|
|
|
*
|
|
|
|
* Cogl does not aim to be a lowest common denominator API, it aims to
|
|
|
|
* expose all the interesting features of GPUs to application which
|
|
|
|
* means applications have some responsibility to explicitly check
|
|
|
|
* that certain features are available before depending on them.
|
|
|
|
*
|
|
|
|
* Returns: %TRUE if the @feature is currently supported or %FALSE if
|
|
|
|
* not.
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT gboolean
|
2012-02-17 16:46:39 -05:00
|
|
|
cogl_has_feature (CoglContext *context, CoglFeatureID feature);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_has_features:
|
|
|
|
* @context: A #CoglContext pointer
|
2024-01-04 07:14:20 -05:00
|
|
|
* @...: A 0 terminated list of `CoglFeatureID`s
|
2012-02-17 16:46:39 -05:00
|
|
|
*
|
|
|
|
* Checks if a list of features are all currently available.
|
|
|
|
*
|
|
|
|
* This checks all of the listed features using cogl_has_feature() and
|
|
|
|
* returns %TRUE if all the features are available or %FALSE
|
|
|
|
* otherwise.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if all the features are available, %FALSE
|
|
|
|
* otherwise.
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT gboolean
|
2012-02-17 16:46:39 -05:00
|
|
|
cogl_has_features (CoglContext *context, ...);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* CoglFeatureCallback:
|
|
|
|
* @feature: A single feature currently supported by Cogl
|
|
|
|
* @user_data: A private pointer passed to cogl_foreach_feature().
|
|
|
|
*
|
|
|
|
* A callback used with cogl_foreach_feature() for enumerating all
|
|
|
|
* context level features supported by Cogl.
|
|
|
|
*/
|
|
|
|
typedef void (*CoglFeatureCallback) (CoglFeatureID feature, void *user_data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_foreach_feature:
|
|
|
|
* @context: A #CoglContext pointer
|
2013-09-03 16:59:41 -04:00
|
|
|
* @callback: (scope call): A #CoglFeatureCallback called for each
|
|
|
|
* supported feature
|
|
|
|
* @user_data: (closure): Private data to pass to the callback
|
2012-02-17 16:46:39 -05:00
|
|
|
*
|
|
|
|
* Iterates through all the context level features currently supported
|
|
|
|
* for a given @context and for each feature @callback is called.
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT void
|
2012-02-17 16:46:39 -05:00
|
|
|
cogl_foreach_feature (CoglContext *context,
|
|
|
|
CoglFeatureCallback callback,
|
|
|
|
void *user_data);
|
|
|
|
|
2016-05-29 14:30:36 -04:00
|
|
|
/**
|
|
|
|
* CoglGraphicsResetStatus:
|
|
|
|
* @COGL_GRAPHICS_RESET_STATUS_NO_ERROR:
|
|
|
|
* @COGL_GRAPHICS_RESET_STATUS_GUILTY_CONTEXT_RESET:
|
|
|
|
* @COGL_GRAPHICS_RESET_STATUS_INNOCENT_CONTEXT_RESET:
|
|
|
|
* @COGL_GRAPHICS_RESET_STATUS_UNKNOWN_CONTEXT_RESET:
|
|
|
|
* @COGL_GRAPHICS_RESET_STATUS_PURGED_CONTEXT_RESET:
|
|
|
|
*
|
|
|
|
* All the error values that might be returned by
|
|
|
|
* cogl_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.
|
|
|
|
*/
|
|
|
|
typedef enum _CoglGraphicsResetStatus
|
|
|
|
{
|
|
|
|
COGL_GRAPHICS_RESET_STATUS_NO_ERROR,
|
|
|
|
COGL_GRAPHICS_RESET_STATUS_GUILTY_CONTEXT_RESET,
|
|
|
|
COGL_GRAPHICS_RESET_STATUS_INNOCENT_CONTEXT_RESET,
|
|
|
|
COGL_GRAPHICS_RESET_STATUS_UNKNOWN_CONTEXT_RESET,
|
|
|
|
COGL_GRAPHICS_RESET_STATUS_PURGED_CONTEXT_RESET,
|
|
|
|
} CoglGraphicsResetStatus;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_get_graphics_reset_status:
|
|
|
|
* @context: a #CoglContext pointer
|
|
|
|
*
|
|
|
|
* Returns the graphics reset status as reported by
|
|
|
|
* GetGraphicsResetStatusARB defined in the ARB_robustness extension.
|
|
|
|
*
|
|
|
|
* Note that Cogl doesn't normally enable the ARB_robustness
|
|
|
|
* extension in which case this will only ever return
|
|
|
|
* #COGL_GRAPHICS_RESET_STATUS_NO_ERROR.
|
|
|
|
*
|
|
|
|
* Applications must explicitly use a backend specific method to
|
|
|
|
* request that errors get reported such as X11's
|
|
|
|
* cogl_xlib_renderer_request_reset_on_video_memory_purge().
|
|
|
|
*
|
|
|
|
* Return value: a #CoglGraphicsResetStatus
|
|
|
|
*/
|
2019-11-21 06:15:22 -05:00
|
|
|
COGL_EXPORT CoglGraphicsResetStatus
|
2016-05-29 14:30:36 -04:00
|
|
|
cogl_get_graphics_reset_status (CoglContext *context);
|
|
|
|
|
2020-06-17 18:42:53 -04:00
|
|
|
/**
|
|
|
|
* cogl_context_is_hardware_accelerated:
|
|
|
|
* @context: a #CoglContext pointer
|
|
|
|
*
|
|
|
|
* Returns: %TRUE if the @context is hardware accelerated, or %FALSE if
|
|
|
|
* not.
|
|
|
|
*/
|
|
|
|
COGL_EXPORT gboolean
|
|
|
|
cogl_context_is_hardware_accelerated (CoglContext *context);
|
|
|
|
|
2020-08-10 08:24:58 -04:00
|
|
|
typedef const char * const CoglPipelineKey;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_context_set_named_pipeline:
|
|
|
|
* @context: a #CoglContext pointer
|
|
|
|
* @key: a #CoglPipelineKey pointer
|
|
|
|
* @pipeline: (nullable): a #CoglPipeline to associate with the @context and
|
|
|
|
* @key
|
|
|
|
*
|
|
|
|
* Associate a #CoglPipeline with a @context and @key. This will not take a new
|
|
|
|
* reference to the @pipeline, but will unref all associated pipelines when
|
|
|
|
* the @context gets destroyed. Similarly, if a pipeline gets overwritten,
|
|
|
|
* it will get unreffed as well.
|
|
|
|
*/
|
|
|
|
COGL_EXPORT void
|
|
|
|
cogl_context_set_named_pipeline (CoglContext *context,
|
|
|
|
CoglPipelineKey *key,
|
|
|
|
CoglPipeline *pipeline);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_context_get_named_pipeline:
|
|
|
|
* @context: a #CoglContext pointer
|
|
|
|
* @key: a #CoglPipelineKey pointer
|
|
|
|
*
|
|
|
|
* Return value: (transfer none): The #CoglPipeline associated with the
|
|
|
|
* given @context and @key, or %NULL if no such #CoglPipeline
|
|
|
|
* was found.
|
|
|
|
*/
|
|
|
|
COGL_EXPORT CoglPipeline *
|
|
|
|
cogl_context_get_named_pipeline (CoglContext *context,
|
|
|
|
CoglPipelineKey *key);
|
|
|
|
|
2024-02-27 02:48:30 -05:00
|
|
|
/**
|
|
|
|
* cogl_context_free_timestamp_query:
|
|
|
|
* @context: a #CoglContext pointer
|
|
|
|
* @query: (transfer full): a #CoglTimestampQuery
|
|
|
|
*/
|
2021-05-15 06:56:49 -04:00
|
|
|
COGL_EXPORT void
|
|
|
|
cogl_context_free_timestamp_query (CoglContext *context,
|
|
|
|
CoglTimestampQuery *query);
|
|
|
|
|
|
|
|
COGL_EXPORT int64_t
|
|
|
|
cogl_context_timestamp_query_get_time_ns (CoglContext *context,
|
|
|
|
CoglTimestampQuery *query);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cogl_context_get_gpu_time_ns:
|
|
|
|
* @context: a #CoglContext pointer
|
|
|
|
*
|
2022-01-21 02:25:53 -05:00
|
|
|
* This function should only be called if the COGL_FEATURE_ID_TIMESTAMP_QUERY
|
2021-05-15 06:56:49 -04:00
|
|
|
* feature is advertised.
|
|
|
|
*
|
|
|
|
* Return value: Current GPU time in nanoseconds
|
|
|
|
*/
|
|
|
|
COGL_EXPORT int64_t
|
|
|
|
cogl_context_get_gpu_time_ns (CoglContext *context);
|
|
|
|
|
2018-11-23 02:42:05 -05:00
|
|
|
G_END_DECLS
|