MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / do_in_background

Method do_in_background

modules/render/renderer/src/shader_map.cpp:79–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77};
78
79bool ShaderProgress::do_in_background()
80{
81 SkrZoneScopedN("CreateShader");
82
83 auto device = factory->root.device;
84 auto& shader = factory->mShaderMap[identifier];
85
86 skr_atomicu32_store_relaxed(&shader->shader_status, SKR_SHADER_MAP_SHADER_STATUS_LOADED);
87
88 auto desc = make_zeroed<CGPUShaderLibraryDescriptor>();
89 desc.code = (const uint32_t*)blob->get_data();
90 desc.code_size = (uint32_t)blob->get_size();
91 desc.name = bytes_uri.u8_str();
92 desc.stage = identifier.shader_stage;
93 const auto created_shader = cgpu_create_shader_library(device, &desc);
94 blob.reset();
95 if (!created_shader)
96 {
97 skr_atomicu32_store_relaxed(&shader->shader_status, SKR_SHADER_MAP_SHADER_STATUS_FAILED);
98 skr_atomicu64_store_relaxed(&factory->mShaderMap[identifier]->frame, UINT64_MAX);
99 return false;
100 }
101 else
102 {
103 shader->shader = created_shader;
104 skr_atomicu32_store_relaxed(&shader->shader_status, SKR_SHADER_MAP_SHADER_STATUS_INSTALLED);
105 skr_atomicu64_store_relaxed(&factory->mShaderMap[identifier]->frame, factory->frame_index);
106 }
107 return true;
108}
109
110CGPUShaderLibraryId ShaderMapImpl::find_shader(const skr_platform_shader_identifier_t& identifier) SKR_NOEXCEPT
111{

Callers

nothing calls this directly

Calls 7

get_dataMethod · 0.45
get_sizeMethod · 0.45
u8_strMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected