Krita Source Code Documentation
Loading...
Searching...
No Matches
Sync Namespace Reference

Typedefs

typedef GLenum(* kis_glClientWaitSync) (GLsync, GLbitfield, GLuint64)
 
typedef void(* kis_glDeleteSync) (GLsync)
 
typedef GLsync(* kis_glFenceSync) (GLenum, GLbitfield)
 
typedef void(* kis_glGetSynciv) (GLsync, GLenum, GLsizei, GLsizei *, GLint *)
 

Enumerations

enum  SyncStatus { Signaled , Unsignaled }
 

Functions

void deleteSync (GLsync syncObject)
 
GLsync getSync ()
 
void init (QOpenGLContext *ctx)
 
SyncStatus syncStatus (GLsync syncObject)
 

Variables

static kis_glClientWaitSync k_glClientWaitSync = 0
 
static kis_glDeleteSync k_glDeleteSync = 0
 
static kis_glFenceSync k_glFenceSync = 0
 
static kis_glGetSynciv k_glGetSynciv = 0
 

Typedef Documentation

◆ kis_glClientWaitSync

typedef GLenum(* Sync::kis_glClientWaitSync) (GLsync, GLbitfield, GLuint64)

Definition at line 36 of file KisOpenGLSync.cpp.

◆ kis_glDeleteSync

typedef void(* Sync::kis_glDeleteSync) (GLsync)

Definition at line 34 of file KisOpenGLSync.cpp.

◆ kis_glFenceSync

typedef GLsync(* Sync::kis_glFenceSync) (GLenum, GLbitfield)

Definition at line 30 of file KisOpenGLSync.cpp.

◆ kis_glGetSynciv

typedef void(* Sync::kis_glGetSynciv) (GLsync, GLenum, GLsizei, GLsizei *, GLint *)

Definition at line 32 of file KisOpenGLSync.cpp.

Enumeration Type Documentation

◆ SyncStatus

Enumerator
Signaled 
Unsignaled 

Definition at line 11 of file KisOpenGLSync.cpp.

11 {
14 };

Function Documentation

◆ deleteSync()

void Sync::deleteSync ( GLsync syncObject)

Definition at line 91 of file KisOpenGLSync.cpp.

91 {
92 if(syncObject && k_glDeleteSync) {
93 k_glDeleteSync(syncObject);
94 }
95 }
static kis_glDeleteSync k_glDeleteSync

References k_glDeleteSync.

◆ getSync()

GLsync Sync::getSync ( )

Definition at line 70 of file KisOpenGLSync.cpp.

70 {
71 if(k_glFenceSync) {
74 k_glClientWaitSync(sync, 0, 1);
75 }
76 return sync;
77 }
78 return 0;
79 }
#define GL_SYNC_GPU_COMMANDS_COMPLETE
static bool needsFenceWorkaround()
static kis_glClientWaitSync k_glClientWaitSync
static kis_glFenceSync k_glFenceSync

References GL_SYNC_GPU_COMMANDS_COMPLETE, k_glClientWaitSync, k_glFenceSync, and KisOpenGL::needsFenceWorkaround().

◆ init()

void Sync::init ( QOpenGLContext * ctx)

Definition at line 41 of file KisOpenGLSync.cpp.

41 {
42#if defined Q_OS_WIN
44#ifdef ENV64BIT
45 k_glFenceSync = (kis_glFenceSync)ctx->getProcAddress("glFenceSync");
46 k_glGetSynciv = (kis_glGetSynciv)ctx->getProcAddress("glGetSynciv");
47 k_glDeleteSync = (kis_glDeleteSync)ctx->getProcAddress("glDeleteSync");
48#else
49 k_glFenceSync = (kis_glFenceSync)ctx->getProcAddress("glFenceSyncARB");
50 k_glGetSynciv = (kis_glGetSynciv)ctx->getProcAddress("glGetSyncivARB");
51 k_glDeleteSync = (kis_glDeleteSync)ctx->getProcAddress("glDeleteSyncARB");
52#endif
53 k_glClientWaitSync = (kis_glClientWaitSync)ctx->getProcAddress("glClientWaitSync");
54 }
55#elif defined Q_OS_LINUX || defined Q_OS_MACOS
57 k_glFenceSync = (kis_glFenceSync)ctx->getProcAddress("glFenceSync");
58 k_glGetSynciv = (kis_glGetSynciv)ctx->getProcAddress("glGetSynciv");
59 k_glDeleteSync = (kis_glDeleteSync)ctx->getProcAddress("glDeleteSync");
60 k_glClientWaitSync = (kis_glClientWaitSync)ctx->getProcAddress("glClientWaitSync");
61 }
62#endif
63 if (k_glFenceSync == 0 || k_glGetSynciv == 0 ||
64 k_glDeleteSync == 0 || k_glClientWaitSync == 0) {
65 warnUI << "Could not find sync functions, disabling sync notification.";
66 }
67 }
static bool supportsFenceSync()
supportsFilter
#define warnUI
Definition kis_debug.h:94
static kis_glGetSynciv k_glGetSynciv
void(* kis_glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei *, GLint *)
GLsync(* kis_glFenceSync)(GLenum, GLbitfield)
void(* kis_glDeleteSync)(GLsync)
GLenum(* kis_glClientWaitSync)(GLsync, GLbitfield, GLuint64)

References k_glClientWaitSync, k_glDeleteSync, k_glFenceSync, k_glGetSynciv, KisOpenGL::supportsFenceSync(), and warnUI.

◆ syncStatus()

SyncStatus Sync::syncStatus ( GLsync syncObject)

Definition at line 82 of file KisOpenGLSync.cpp.

82 {
83 if(syncObject && k_glGetSynciv) {
84 GLint status = -1;
85 k_glGetSynciv(syncObject, GL_SYNC_STATUS, 1, 0, &status);
86 return status == GL_SIGNALED ? Sync::Signaled : Sync::Unsignaled;
87 }
88 return Sync::Signaled;
89 }
#define GL_SIGNALED
#define GL_SYNC_STATUS

References GL_SIGNALED, GL_SYNC_STATUS, k_glGetSynciv, Signaled, and Unsignaled.

Variable Documentation

◆ k_glClientWaitSync

kis_glClientWaitSync Sync::k_glClientWaitSync = 0
static

Definition at line 37 of file KisOpenGLSync.cpp.

◆ k_glDeleteSync

kis_glDeleteSync Sync::k_glDeleteSync = 0
static

Definition at line 35 of file KisOpenGLSync.cpp.

◆ k_glFenceSync

kis_glFenceSync Sync::k_glFenceSync = 0
static

Definition at line 31 of file KisOpenGLSync.cpp.

◆ k_glGetSynciv

kis_glGetSynciv Sync::k_glGetSynciv = 0
static

Definition at line 33 of file KisOpenGLSync.cpp.