Blender V4.3
GPU_context.hh File Reference
#include "GPU_batch.hh"
#include "GPU_common.hh"
#include "GPU_platform.hh"

Go to the source code of this file.

Functions

bool GPU_backend_supported ()
 
void GPU_backend_type_selection_set (const eGPUBackendType backend)
 
eGPUBackendType GPU_backend_type_selection_get ()
 
eGPUBackendType GPU_backend_get_type ()
 
bool GPU_backend_type_selection_detect ()
 
void GPU_backend_type_selection_set_override (eGPUBackendType backend_type)
 
bool GPU_backend_type_selection_is_overridden ()
 
GPUContextGPU_context_create (void *ghost_window, void *ghost_context)
 
void GPU_context_discard (GPUContext *)
 
void GPU_context_active_set (GPUContext *)
 
GPUContextGPU_context_active_get ()
 
void GPU_context_begin_frame (GPUContext *ctx)
 
void GPU_context_end_frame (GPUContext *ctx)
 
void GPU_context_main_lock ()
 
void GPU_context_main_unlock ()
 
void GPU_render_begin ()
 
void GPU_render_end ()
 
void GPU_render_step ()
 
void GPU_backend_ghost_system_set (void *ghost_system_handle)
 
void * GPU_backend_ghost_system_get ()
 

Detailed Description

This interface allow GPU to manage VAOs for multiple context and threads.

Definition in file GPU_context.hh.

Function Documentation

◆ GPU_backend_get_type()

◆ GPU_backend_ghost_system_get()

void * GPU_backend_ghost_system_get ( )

◆ GPU_backend_ghost_system_set()

void GPU_backend_ghost_system_set ( void * ghost_system_handle)

◆ GPU_backend_supported()

bool GPU_backend_supported ( )

◆ GPU_backend_type_selection_detect()

bool GPU_backend_type_selection_detect ( )

Detect the most suited eGPUBackendType.

  • The detected backend will be set in GPU_backend_type_selection_set.
  • When GPU_backend_type_selection_is_overridden it checks the overridden backend. When not overridden it checks a default list.
  • OpenGL backend will be checked as fallback for Metal.

Returns true when detection found a supported backend, otherwise returns false. When no supported backend is found GPU_backend_type_selection_set is called with GPU_BACKEND_NONE.

Definition at line 279 of file gpu_context.cc.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), G, g_backend_type_override, G_FLAG_GPU_BACKEND_FALLBACK, GPU_BACKEND_METAL, GPU_BACKEND_NONE, GPU_BACKEND_OPENGL, GPU_backend_supported(), GPU_backend_type_selection_is_overridden(), and GPU_backend_type_selection_set().

Referenced by wm_init_userdef(), and wm_main_playanim_intern().

◆ GPU_backend_type_selection_get()

◆ GPU_backend_type_selection_is_overridden()

bool GPU_backend_type_selection_is_overridden ( )

Check if the GPU_backend_type_selection_detect is overridden to only test a specific backend.

Definition at line 274 of file gpu_context.cc.

References g_backend_type_override.

Referenced by GPU_backend_type_selection_detect(), and wm_gpu_backend_override_from_userdef().

◆ GPU_backend_type_selection_set()

void GPU_backend_type_selection_set ( const eGPUBackendType backend)

◆ GPU_backend_type_selection_set_override()

void GPU_backend_type_selection_set_override ( eGPUBackendType backend_type)

Alter the GPU_backend_type_selection_detect to only test a specific backend

Definition at line 269 of file gpu_context.cc.

References g_backend_type_override.

Referenced by arg_handle_gpu_backend_set(), and wm_gpu_backend_override_from_userdef().

◆ GPU_context_active_get()

◆ GPU_context_active_set()

◆ GPU_context_begin_frame()

void GPU_context_begin_frame ( GPUContext * ctx)

◆ GPU_context_create()

◆ GPU_context_discard()

◆ GPU_context_end_frame()

void GPU_context_end_frame ( GPUContext * ctx)

◆ GPU_context_main_lock()

void GPU_context_main_lock ( )

Definition at line 184 of file gpu_context.cc.

References main_context_mutex.

Referenced by DRW_render_context_enable(), and wm_draw_update().

◆ GPU_context_main_unlock()

void GPU_context_main_unlock ( )

Definition at line 189 of file gpu_context.cc.

References main_context_mutex.

Referenced by DRW_render_context_disable(), and wm_draw_update().

◆ GPU_render_begin()

void GPU_render_begin ( )

Definition at line 203 of file gpu_context.cc.

References active_ctx, BLI_assert, blender::gpu::GPUBackend::get(), blender::gpu::printf_begin(), blender::gpu::printf_end(), and blender::gpu::GPUBackend::render_begin().

Referenced by drw_deferred_shader_compilation_exec(), DRW_gpu_context_enable_ex(), DRW_render_context_enable(), DRW_render_to_image(), blender::render::RealtimeCompositor::execute(), blender::gpu::tests::gpu_shader_lib_test(), playanim_toscreen_ex(), RE_engine_gpu_context_enable(), RE_PreviewRender(), blender::gpu::GPUTest::SetUp(), blender::gpu::tests::ShaderSpecializationConst::ShaderSpecializationConst(), blender::draw::test_draw_resource_id_gen(), blender::draw::test_draw_visibility(), blender::draw::test_eevee_lut_gen(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_free(), blender::draw::test_eevee_shadow_page_mask_ex(), blender::draw::test_eevee_shadow_shift(), blender::draw::test_eevee_shadow_shift_clear(), blender::draw::test_eevee_shadow_tag_update(), blender::draw::test_eevee_shadow_tilemap_amend(), blender::draw::test_eevee_surfel_list(), blender::gpu::tests::test_framebuffer_cube(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::gpu::tests::test_texture_1d(), blender::gpu::tests::test_texture_1d_array(), blender::gpu::tests::test_texture_1d_array_upload(), blender::gpu::tests::test_texture_2d_array(), blender::gpu::tests::test_texture_2d_array_upload(), blender::gpu::tests::test_texture_3d(), blender::gpu::tests::test_texture_copy(), blender::gpu::tests::test_texture_cube(), blender::gpu::tests::test_texture_cube_array(), blender::gpu::tests::test_texture_read(), blender::draw::TestAlloc::TestAlloc(), wm_draw_update(), wm_event_do_handlers(), wm_event_do_notifiers(), WM_init(), wm_main_playanim_intern(), wm_window_events_process(), and wm_window_ghostwindow_add().

◆ GPU_render_end()

void GPU_render_end ( )

Definition at line 215 of file gpu_context.cc.

References active_ctx, BLI_assert, blender::gpu::GPUBackend::get(), blender::gpu::printf_begin(), blender::gpu::printf_end(), and blender::gpu::GPUBackend::render_end().

Referenced by drw_deferred_shader_compilation_exec(), DRW_gpu_context_disable_ex(), DRW_render_context_disable(), DRW_render_to_image(), blender::render::RealtimeCompositor::execute(), blender::gpu::tests::gpu_shader_lib_test(), playanim_toscreen_ex(), RE_engine_gpu_context_disable(), RE_PreviewRender(), blender::gpu::tests::ShaderSpecializationConst::ShaderSpecializationConst(), blender::gpu::GPUTest::TearDown(), blender::draw::test_draw_resource_id_gen(), blender::draw::test_draw_visibility(), blender::draw::test_eevee_lut_gen(), blender::draw::test_eevee_shadow_finalize(), blender::draw::test_eevee_shadow_free(), blender::draw::test_eevee_shadow_page_mask_ex(), blender::draw::test_eevee_shadow_shift(), blender::draw::test_eevee_shadow_shift_clear(), blender::draw::test_eevee_shadow_tag_update(), blender::draw::test_eevee_shadow_tilemap_amend(), blender::draw::test_eevee_surfel_list(), blender::gpu::tests::test_framebuffer_cube(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::gpu::tests::test_texture_1d(), blender::gpu::tests::test_texture_1d_array(), blender::gpu::tests::test_texture_1d_array_upload(), blender::gpu::tests::test_texture_2d_array(), blender::gpu::tests::test_texture_2d_array_upload(), blender::gpu::tests::test_texture_3d(), blender::gpu::tests::test_texture_copy(), blender::gpu::tests::test_texture_cube(), blender::gpu::tests::test_texture_cube_array(), blender::gpu::tests::test_texture_read(), blender::draw::TestAlloc::TestAlloc(), wm_draw_update(), wm_event_do_handlers(), wm_event_do_notifiers(), WM_init(), wm_main_playanim_intern(), wm_window_events_process(), and wm_window_ghostwindow_add().

◆ GPU_render_step()