Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2022-05-17 18:34:51 +0300
committerBastien Montagne <bastien@blender.org>2022-05-17 18:34:51 +0300
commitb3b5d4cabb9653b9e5ddb9650378da4dc4aaac20 (patch)
tree818b8472686e1e142b4bb6530fd112f34b61febc /source/blender/blenkernel
parent8c9805fc628223984ad0c664b5a49b7f9eec0caa (diff)
parent83349294b12f904bc1295c53e0242ea92c593c93 (diff)
Merge branch 'blender-v3.2-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_subdiv_modifier.h10
-rw-r--r--source/blender/blenkernel/intern/subdiv_modifier.c39
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;