diff options
author | Bastien Montagne <bastien@blender.org> | 2022-05-17 18:34:51 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-05-17 18:34:51 +0300 |
commit | b3b5d4cabb9653b9e5ddb9650378da4dc4aaac20 (patch) | |
tree | 818b8472686e1e142b4bb6530fd112f34b61febc /source/blender/blenkernel | |
parent | 8c9805fc628223984ad0c664b5a49b7f9eec0caa (diff) | |
parent | 83349294b12f904bc1295c53e0242ea92c593c93 (diff) |
Merge branch 'blender-v3.2-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_subdiv_modifier.h | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/subdiv_modifier.c | 39 |
2 files changed, 15 insertions, 34 deletions
diff --git a/source/blender/blenkernel/BKE_subdiv_modifier.h b/source/blender/blenkernel/BKE_subdiv_modifier.h index e9de7d1532e..4ad17610207 100644 --- a/source/blender/blenkernel/BKE_subdiv_modifier.h +++ b/source/blender/blenkernel/BKE_subdiv_modifier.h @@ -42,18 +42,14 @@ bool BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh( * \param skip_check_is_last: When true, we assume that the modifier passed is the last enabled * modifier in the stack. */ -bool BKE_subsurf_modifier_can_do_gpu_subdiv_ex(const struct Scene *scene, - const struct Object *ob, - const struct Mesh *mesh, - const struct SubsurfModifierData *smd, - int required_mode, - bool skip_check_is_last); - bool BKE_subsurf_modifier_can_do_gpu_subdiv(const struct Scene *scene, const struct Object *ob, const struct Mesh *mesh, + const struct SubsurfModifierData *smd, int required_mode); +bool BKE_subsurf_modifier_has_gpu_subdiv(const struct Mesh *mesh); + extern void (*BKE_subsurf_modifier_free_gpu_cache_cb)(struct Subdiv *subdiv); /** diff --git a/source/blender/blenkernel/intern/subdiv_modifier.c b/source/blender/blenkernel/intern/subdiv_modifier.c index 3692a3cc4f7..e43da956ce5 100644 --- a/source/blender/blenkernel/intern/subdiv_modifier.c +++ b/source/blender/blenkernel/intern/subdiv_modifier.c @@ -3,6 +3,8 @@ #include "BKE_subdiv_modifier.h" +#include "BLI_session_uuid.h" + #include "MEM_guardedalloc.h" #include "DNA_mesh_types.h" @@ -105,12 +107,11 @@ bool BKE_subsurf_modifier_force_disable_gpu_evaluation_for_mesh(const SubsurfMod return subsurf_modifier_use_autosmooth_or_split_normals(smd, mesh); } -bool BKE_subsurf_modifier_can_do_gpu_subdiv_ex(const Scene *scene, - const Object *ob, - const Mesh *mesh, - const SubsurfModifierData *smd, - int required_mode, - bool skip_check_is_last) +bool BKE_subsurf_modifier_can_do_gpu_subdiv(const Scene *scene, + const Object *ob, + const Mesh *mesh, + const SubsurfModifierData *smd, + int required_mode) { if ((U.gpu_flag & USER_GPU_FLAG_SUBDIVISION_EVALUATION) == 0) { return false; @@ -122,33 +123,17 @@ bool BKE_subsurf_modifier_can_do_gpu_subdiv_ex(const Scene *scene, return false; } - if (!skip_check_is_last) { - ModifierData *md = modifier_get_last_enabled_for_mode(scene, ob, required_mode); - if (md != (const ModifierData *)smd) { - return false; - } + ModifierData *md = modifier_get_last_enabled_for_mode(scene, ob, required_mode); + if (md != (const ModifierData *)smd) { + return false; } return is_subdivision_evaluation_possible_on_gpu(); } -bool BKE_subsurf_modifier_can_do_gpu_subdiv(const Scene *scene, - const Object *ob, - const Mesh *mesh, - int required_mode) +bool BKE_subsurf_modifier_has_gpu_subdiv(const Mesh *mesh) { - ModifierData *md = modifier_get_last_enabled_for_mode(scene, ob, required_mode); - - if (!md) { - return false; - } - - if (md->type != eModifierType_Subsurf) { - return false; - } - - return BKE_subsurf_modifier_can_do_gpu_subdiv_ex( - scene, ob, mesh, (SubsurfModifierData *)md, required_mode, true); + return BLI_session_uuid_is_generated(&mesh->runtime.subsurf_session_uuid); } void (*BKE_subsurf_modifier_free_gpu_cache_cb)(Subdiv *subdiv) = NULL; |