shader_unset_dirty
This commit is contained in:
parent
332e8fdf2c
commit
ad05469411
@ -153,7 +153,7 @@ struct dx11_shader_desc {
|
|||||||
struct arena includes_arena;
|
struct arena includes_arena;
|
||||||
struct sys_mutex includes_mutex;
|
struct sys_mutex includes_mutex;
|
||||||
struct dict includes_dict;
|
struct dict includes_dict;
|
||||||
struct atomic_i32 should_reload;
|
struct atomic_i32 is_dirty;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -534,7 +534,7 @@ INTERNAL b32 shader_set_dirty(struct string name)
|
|||||||
struct dx11_shader_desc *desc = &G.shader_info[i];
|
struct dx11_shader_desc *desc = &G.shader_info[i];
|
||||||
struct string desc_name = string_from_cstr_no_limit(desc->name_cstr);
|
struct string desc_name = string_from_cstr_no_limit(desc->name_cstr);
|
||||||
if (string_eq(desc_name, name)) {
|
if (string_eq(desc_name, name)) {
|
||||||
atomic_i32_eval_exchange(&desc->should_reload, 1);
|
atomic_i32_eval_exchange(&desc->is_dirty, 1);
|
||||||
caused_dirty = true;
|
caused_dirty = true;
|
||||||
} else {
|
} else {
|
||||||
struct dict *includes_dict = &desc->includes_dict;
|
struct dict *includes_dict = &desc->includes_dict;
|
||||||
@ -542,7 +542,7 @@ INTERNAL b32 shader_set_dirty(struct string name)
|
|||||||
struct sys_lock lock = sys_mutex_lock_e(&desc->includes_mutex);
|
struct sys_lock lock = sys_mutex_lock_e(&desc->includes_mutex);
|
||||||
{
|
{
|
||||||
if (dict_get(includes_dict, hash) != 0) {
|
if (dict_get(includes_dict, hash) != 0) {
|
||||||
atomic_i32_eval_exchange(&desc->should_reload, 1);
|
atomic_i32_eval_exchange(&desc->is_dirty, 1);
|
||||||
caused_dirty = true;
|
caused_dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -551,6 +551,11 @@ INTERNAL b32 shader_set_dirty(struct string name)
|
|||||||
}
|
}
|
||||||
return caused_dirty;
|
return caused_dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INTERNAL b32 shader_unset_dirty(struct dx11_shader_desc *desc)
|
||||||
|
{
|
||||||
|
return atomic_i32_eval_compare_exchange(&desc->is_dirty, 1, 0) == 1;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ========================== *
|
/* ========================== *
|
||||||
@ -1173,7 +1178,7 @@ void gpu_present_backbuffer(i32 vsync)
|
|||||||
#if RESOURCE_RELOADING
|
#if RESOURCE_RELOADING
|
||||||
for (u64 i = SHADER_NONE + 1; i < NUM_SHADERS; ++i) {
|
for (u64 i = SHADER_NONE + 1; i < NUM_SHADERS; ++i) {
|
||||||
struct dx11_shader_desc *desc = &G.shader_info[i];
|
struct dx11_shader_desc *desc = &G.shader_info[i];
|
||||||
if (atomic_i32_eval_compare_exchange(&desc->should_reload, 1, 0) == 1) {
|
if (shader_unset_dirty(desc)) {
|
||||||
reload_shader(&G.shaders[i], desc);
|
reload_shader(&G.shaders[i], desc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user