cogl: Move graphics reset status into the driver vtable
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1194
This commit is contained in:
parent
0b6f5c6f55
commit
ca79073014
@ -56,24 +56,6 @@
|
|||||||
#define GL_POINT_SPRITE 0x8861
|
#define GL_POINT_SPRITE 0x8861
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This is a relatively new extension */
|
|
||||||
#ifndef GL_PURGED_CONTEXT_RESET_NV
|
|
||||||
#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* These aren't defined in the GLES2 headers */
|
|
||||||
#ifndef GL_GUILTY_CONTEXT_RESET_ARB
|
|
||||||
#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GL_INNOCENT_CONTEXT_RESET_ARB
|
|
||||||
#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GL_UNKNOWN_CONTEXT_RESET_ARB
|
|
||||||
#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void _cogl_context_free (CoglContext *context);
|
static void _cogl_context_free (CoglContext *context);
|
||||||
|
|
||||||
COGL_OBJECT_DEFINE (Context, context);
|
COGL_OBJECT_DEFINE (Context, context);
|
||||||
@ -479,26 +461,7 @@ cogl_get_clock_time (CoglContext *context)
|
|||||||
CoglGraphicsResetStatus
|
CoglGraphicsResetStatus
|
||||||
cogl_get_graphics_reset_status (CoglContext *context)
|
cogl_get_graphics_reset_status (CoglContext *context)
|
||||||
{
|
{
|
||||||
if (!context->glGetGraphicsResetStatus)
|
return context->driver_vtable->get_graphics_reset_status (context);
|
||||||
return COGL_GRAPHICS_RESET_STATUS_NO_ERROR;
|
|
||||||
|
|
||||||
switch (context->glGetGraphicsResetStatus ())
|
|
||||||
{
|
|
||||||
case GL_GUILTY_CONTEXT_RESET_ARB:
|
|
||||||
return COGL_GRAPHICS_RESET_STATUS_GUILTY_CONTEXT_RESET;
|
|
||||||
|
|
||||||
case GL_INNOCENT_CONTEXT_RESET_ARB:
|
|
||||||
return COGL_GRAPHICS_RESET_STATUS_INNOCENT_CONTEXT_RESET;
|
|
||||||
|
|
||||||
case GL_UNKNOWN_CONTEXT_RESET_ARB:
|
|
||||||
return COGL_GRAPHICS_RESET_STATUS_UNKNOWN_CONTEXT_RESET;
|
|
||||||
|
|
||||||
case GL_PURGED_CONTEXT_RESET_NV:
|
|
||||||
return COGL_GRAPHICS_RESET_STATUS_PURGED_CONTEXT_RESET;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return COGL_GRAPHICS_RESET_STATUS_NO_ERROR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
@ -50,6 +50,9 @@ struct _CoglDriverVtable
|
|||||||
gboolean
|
gboolean
|
||||||
(* is_hardware_accelerated) (CoglContext *context);
|
(* is_hardware_accelerated) (CoglContext *context);
|
||||||
|
|
||||||
|
CoglGraphicsResetStatus
|
||||||
|
(* get_graphics_reset_status) (CoglContext *context);
|
||||||
|
|
||||||
/* TODO: factor this out since this is OpenGL specific and
|
/* TODO: factor this out since this is OpenGL specific and
|
||||||
* so can be ignored by non-OpenGL drivers. */
|
* so can be ignored by non-OpenGL drivers. */
|
||||||
gboolean
|
gboolean
|
||||||
|
@ -131,4 +131,7 @@ _cogl_gl_util_parse_gl_version (const char *version_string,
|
|||||||
int *major_out,
|
int *major_out,
|
||||||
int *minor_out);
|
int *minor_out);
|
||||||
|
|
||||||
|
CoglGraphicsResetStatus
|
||||||
|
_cogl_gl_get_graphics_reset_status (CoglContext *context);
|
||||||
|
|
||||||
#endif /* _COGL_UTIL_GL_PRIVATE_H_ */
|
#endif /* _COGL_UTIL_GL_PRIVATE_H_ */
|
||||||
|
@ -37,6 +37,24 @@
|
|||||||
#include "driver/gl/cogl-pipeline-opengl-private.h"
|
#include "driver/gl/cogl-pipeline-opengl-private.h"
|
||||||
#include "driver/gl/cogl-util-gl-private.h"
|
#include "driver/gl/cogl-util-gl-private.h"
|
||||||
|
|
||||||
|
/* This is a relatively new extension */
|
||||||
|
#ifndef GL_PURGED_CONTEXT_RESET_NV
|
||||||
|
#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* These aren't defined in the GLES2 headers */
|
||||||
|
#ifndef GL_GUILTY_CONTEXT_RESET_ARB
|
||||||
|
#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_INNOCENT_CONTEXT_RESET_ARB
|
||||||
|
#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_UNKNOWN_CONTEXT_RESET_ARB
|
||||||
|
#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef COGL_GL_DEBUG
|
#ifdef COGL_GL_DEBUG
|
||||||
/* GL error to string conversion */
|
/* GL error to string conversion */
|
||||||
static const struct {
|
static const struct {
|
||||||
@ -309,3 +327,28 @@ _cogl_driver_gl_is_hardware_accelerated (CoglContext *ctx)
|
|||||||
|
|
||||||
return !software;
|
return !software;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CoglGraphicsResetStatus
|
||||||
|
_cogl_gl_get_graphics_reset_status (CoglContext *context)
|
||||||
|
{
|
||||||
|
if (!context->glGetGraphicsResetStatus)
|
||||||
|
return COGL_GRAPHICS_RESET_STATUS_NO_ERROR;
|
||||||
|
|
||||||
|
switch (context->glGetGraphicsResetStatus ())
|
||||||
|
{
|
||||||
|
case GL_GUILTY_CONTEXT_RESET_ARB:
|
||||||
|
return COGL_GRAPHICS_RESET_STATUS_GUILTY_CONTEXT_RESET;
|
||||||
|
|
||||||
|
case GL_INNOCENT_CONTEXT_RESET_ARB:
|
||||||
|
return COGL_GRAPHICS_RESET_STATUS_INNOCENT_CONTEXT_RESET;
|
||||||
|
|
||||||
|
case GL_UNKNOWN_CONTEXT_RESET_ARB:
|
||||||
|
return COGL_GRAPHICS_RESET_STATUS_UNKNOWN_CONTEXT_RESET;
|
||||||
|
|
||||||
|
case GL_PURGED_CONTEXT_RESET_NV:
|
||||||
|
return COGL_GRAPHICS_RESET_STATUS_PURGED_CONTEXT_RESET;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return COGL_GRAPHICS_RESET_STATUS_NO_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -532,6 +532,7 @@ _cogl_driver_gl =
|
|||||||
_cogl_driver_gl_real_context_init,
|
_cogl_driver_gl_real_context_init,
|
||||||
_cogl_driver_gl_context_deinit,
|
_cogl_driver_gl_context_deinit,
|
||||||
_cogl_driver_gl_is_hardware_accelerated,
|
_cogl_driver_gl_is_hardware_accelerated,
|
||||||
|
_cogl_gl_get_graphics_reset_status,
|
||||||
_cogl_driver_pixel_format_from_gl_internal,
|
_cogl_driver_pixel_format_from_gl_internal,
|
||||||
_cogl_driver_pixel_format_to_gl,
|
_cogl_driver_pixel_format_to_gl,
|
||||||
_cogl_driver_update_features,
|
_cogl_driver_update_features,
|
||||||
|
@ -396,6 +396,7 @@ _cogl_driver_gles =
|
|||||||
_cogl_driver_gl_context_init,
|
_cogl_driver_gl_context_init,
|
||||||
_cogl_driver_gl_context_deinit,
|
_cogl_driver_gl_context_deinit,
|
||||||
_cogl_driver_gl_is_hardware_accelerated,
|
_cogl_driver_gl_is_hardware_accelerated,
|
||||||
|
_cogl_gl_get_graphics_reset_status,
|
||||||
_cogl_driver_pixel_format_from_gl_internal,
|
_cogl_driver_pixel_format_from_gl_internal,
|
||||||
_cogl_driver_pixel_format_to_gl,
|
_cogl_driver_pixel_format_to_gl,
|
||||||
_cogl_driver_update_features,
|
_cogl_driver_update_features,
|
||||||
|
@ -73,6 +73,7 @@ _cogl_driver_nop =
|
|||||||
_cogl_driver_nop_context_init,
|
_cogl_driver_nop_context_init,
|
||||||
_cogl_driver_nop_context_deinit,
|
_cogl_driver_nop_context_deinit,
|
||||||
_cogl_driver_nop_is_hardware_accelerated,
|
_cogl_driver_nop_is_hardware_accelerated,
|
||||||
|
NULL, /* get_graphics_reset_status */
|
||||||
NULL, /* pixel_format_from_gl_internal */
|
NULL, /* pixel_format_from_gl_internal */
|
||||||
NULL, /* pixel_format_to_gl */
|
NULL, /* pixel_format_to_gl */
|
||||||
_cogl_driver_update_features,
|
_cogl_driver_update_features,
|
||||||
|
Loading…
Reference in New Issue
Block a user