diff options
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_subdivision.cc | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_mesh_types.h | 4 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_subsurf.c | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_subdivision.cc b/source/blender/draw/intern/draw_cache_impl_subdivision.cc index c859a72b371..1b84ac9b5a6 100644 --- a/source/blender/draw/intern/draw_cache_impl_subdivision.cc +++ b/source/blender/draw/intern/draw_cache_impl_subdivision.cc @@ -1898,7 +1898,8 @@ static bool draw_subdiv_create_requested_buffers(const Scene *scene, const bool /*use_hide*/, OpenSubdiv_EvaluatorCache *evaluator_cache) { - SubsurfModifierData *smd = BKE_object_get_last_subsurf_modifier(ob); + SubsurfModifierData *smd = reinterpret_cast<SubsurfModifierData *>( + BKE_modifiers_findby_session_uuid(ob, &mesh->runtime.subsurf_session_uuid)); BLI_assert(smd); const bool is_final_render = DRW_state_is_scene_render(); diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index cd4676ee08e..1f8ff182510 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -10,6 +10,7 @@ #include "DNA_ID.h" #include "DNA_customdata_types.h" #include "DNA_defs.h" +#include "DNA_session_uuid_types.h" #ifdef __cplusplus extern "C" { @@ -120,11 +121,12 @@ typedef struct Mesh_Runtime { */ char wrapper_type_finalize; - int subsurf_resolution; /** * Settings for lazily evaluating the subdivision on the CPU if needed. These are * set in the modifier when GPU subdivision can be performed. */ + SessionUUID subsurf_session_uuid; + int subsurf_resolution; char subsurf_apply_render; char subsurf_use_optimal_display; diff --git a/source/blender/modifiers/intern/MOD_subsurf.c b/source/blender/modifiers/intern/MOD_subsurf.c index 249d09e5d2e..571e564f583 100644 --- a/source/blender/modifiers/intern/MOD_subsurf.c +++ b/source/blender/modifiers/intern/MOD_subsurf.c @@ -205,6 +205,7 @@ static void subdiv_cache_cpu_evaluation_settings(const ModifierEvalContext *ctx, me->runtime.subsurf_apply_render = (ctx->flag & MOD_APPLY_RENDER) != 0; me->runtime.subsurf_resolution = mesh_settings.resolution; me->runtime.subsurf_use_optimal_display = mesh_settings.use_optimal_display; + me->runtime.subsurf_session_uuid = smd->modifier.session_uuid; } /* Modifier itself. */ |