17 # define WITH_OPENGL_BACKEND 1
32 #ifdef WITH_OPENGL_BACKEND
36 #ifdef WITH_METAL_BACKEND
104 Context *ctx = GPUBackend::get()->context_alloc(ghost_window);
144 return wrap(Context::get());
222 #ifdef WITH_OPENGL_BACKEND
228 #ifdef WITH_METAL_BACKEND
229 return MTLBackend::metal_is_supported();
245 #ifdef WITH_OPENGL_BACKEND
250 #ifdef WITH_METAL_BACKEND
277 #ifdef WITH_OPENGL_BACKEND
283 #ifdef WITH_METAL_BACKEND
struct GPUContext GPUContext
StateManager * state_manager
GPUMatrixState * matrix_state
bool is_active_on_thread()
FrameBuffer * front_right
virtual void activate()=0
virtual void end_frame()=0
virtual void begin_frame()=0
virtual void deactivate()=0
virtual void render_end()=0
virtual void delete_resources()=0
virtual void render_begin()=0
virtual void render_step()=0
GPUContext * GPU_context_active_get()
static const eGPUBackendType g_backend_type
void GPU_context_main_lock()
static thread_local Context * active_ctx
void GPU_context_begin_frame(GPUContext *ctx)
static std::mutex backend_users_mutex
static int num_backend_users
void GPU_context_active_set(GPUContext *ctx_)
static void gpu_backend_discard()
void gpu_backend_delete_resources()
void GPU_context_discard(GPUContext *ctx_)
static std::mutex main_context_mutex
void GPU_context_main_unlock()
static void gpu_backend_create()
GPUContext * GPU_context_create(void *ghost_window)
void GPU_context_end_frame(GPUContext *ctx)
static GPUBackend * g_backend
eGPUBackendType GPU_backend_get_type()
bool GPU_backend_supported(void)
GPUMatrixState * GPU_matrix_state_create()
void GPU_matrix_state_discard(GPUMatrixState *state)
static PartialUpdateUserImpl * unwrap(struct PartialUpdateUser *user)
static struct PartialUpdateUser * wrap(PartialUpdateUserImpl *user)