Cleanup and simplification of GPUMaterial and GPUPass compilation. See #133674 for details/goals. - Remove the `draw_manage_shader` thread. Deferred compilation is now handled by the gpu::ShaderCompiler through the batch compilation API. Batch management is handled by the `GPUPassCache`. - Simplify `GPUMaterial` status tracking so it just queries the `GPUPass` status. - Split the `GPUPass` and the `GPUCodegen` code. - Replaced the (broken) `GPU_material_recalc_flag_get` with the new `GPU_pass_compilation_timestamp`. - Add the `GPU_pass_cache_wait_for_all` and `GPU_shader_batch_wait_for_all`, and remove the busy waits from EEVEE. - Remove many unused functions, properties, includes... Pull Request: https://projects.blender.org/blender/blender/pulls/135637
65 lines
1.2 KiB
C++
65 lines
1.2 KiB
C++
/* SPDX-FileCopyrightText: 2013 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup gpu
|
|
*/
|
|
|
|
#include "BKE_material.hh"
|
|
|
|
#include "GPU_batch.hh"
|
|
#include "GPU_init_exit.hh" /* interface */
|
|
#include "GPU_pass.hh"
|
|
|
|
#include "intern/gpu_private.hh"
|
|
#include "intern/gpu_shader_create_info_private.hh"
|
|
#include "intern/gpu_shader_dependency_private.hh"
|
|
|
|
/**
|
|
* although the order of initialization and shutdown should not matter
|
|
* (except for the extensions), I chose alphabetical and reverse alphabetical order
|
|
*/
|
|
static bool initialized = false;
|
|
|
|
void GPU_init()
|
|
{
|
|
/* can't avoid calling this multiple times, see wm_window_ghostwindow_add */
|
|
if (initialized) {
|
|
return;
|
|
}
|
|
|
|
initialized = true;
|
|
|
|
gpu_backend_init_resources();
|
|
|
|
gpu_shader_dependency_init();
|
|
gpu_shader_create_info_init();
|
|
|
|
GPU_pass_cache_init();
|
|
|
|
gpu_batch_init();
|
|
}
|
|
|
|
void GPU_exit()
|
|
{
|
|
gpu_batch_exit();
|
|
|
|
GPU_pass_cache_free();
|
|
|
|
BKE_material_defaults_free_gpu();
|
|
GPU_shader_free_builtin_shaders();
|
|
|
|
gpu_backend_delete_resources();
|
|
|
|
gpu_shader_dependency_exit();
|
|
gpu_shader_create_info_exit();
|
|
|
|
initialized = false;
|
|
}
|
|
|
|
bool GPU_is_init()
|
|
{
|
|
return initialized;
|
|
}
|