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:
Diffstat (limited to 'source/blender/draw/engines/image/image_instance_data.hh')
-rw-r--r--source/blender/draw/engines/image/image_instance_data.hh25
1 files changed, 7 insertions, 18 deletions
diff --git a/source/blender/draw/engines/image/image_instance_data.hh b/source/blender/draw/engines/image/image_instance_data.hh
index 68c61a82e96..e5e19593e23 100644
--- a/source/blender/draw/engines/image/image_instance_data.hh
+++ b/source/blender/draw/engines/image/image_instance_data.hh
@@ -27,6 +27,7 @@
#include "image_private.hh"
#include "image_shader_params.hh"
#include "image_texture_info.hh"
+#include "image_usage.hh"
#include "image_wrappers.hh"
#include "DRW_render.h"
@@ -40,8 +41,8 @@ constexpr int SCREEN_SPACE_DRAWING_MODE_TEXTURE_LEN = 1;
struct IMAGE_InstanceData {
struct Image *image;
- /** Copy of the last image user to detect iuser differences that require a full update. */
- struct ImageUser last_image_user;
+ /** Usage data of the previous time, to identify changes that require a full update. */
+ ImageUsage last_usage;
PartialImageUpdater partial_update;
@@ -110,23 +111,11 @@ struct IMAGE_InstanceData {
}
}
- void update_image_user(const ImageUser *image_user)
+ void update_image_usage(const ImageUser *image_user)
{
- short requested_pass = image_user ? image_user->pass : 0;
- short requested_layer = image_user ? image_user->layer : 0;
- short requested_view = image_user ? image_user->multi_index : 0;
- /* There is room for 2 multiview textures. When a higher number is requested we should always
- * target the first view slot. This is fine as multi view images aren't used together. */
- if (requested_view > 1) {
- requested_view = 0;
- }
-
- if (last_image_user.pass != requested_pass || last_image_user.layer != requested_layer ||
- last_image_user.multi_index != requested_view) {
-
- last_image_user.pass = requested_pass;
- last_image_user.layer = requested_layer;
- last_image_user.multi_index = requested_view;
+ ImageUsage usage(image_user);
+ if (last_usage != usage) {
+ last_usage = usage;
reset_dirty_flag(true);
}
}