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:
authorSergey Sharybin <sergey@blender.org>2021-01-25 13:36:31 +0300
committerSergey Sharybin <sergey@blender.org>2021-01-25 13:36:31 +0300
commit06fdbe666424e2ff03dc2953857989f9ba496420 (patch)
tree9d9be6321846d97c1ef488cb5e7e665dc9e7afc1 /source/blender/blenkernel
parent5f2c5e5bb8c15bf0d6679351e3482f9c38c00935 (diff)
parentfba35a02c6a8b722984ea9a9572cfbd1cb65d6ad (diff)
Merge branch 'blender-v2.92-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/image_gpu.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/image_gpu.c b/source/blender/blenkernel/intern/image_gpu.c
index 05aa3c89a84..a6bd65227a0 100644
--- a/source/blender/blenkernel/intern/image_gpu.c
+++ b/source/blender/blenkernel/intern/image_gpu.c
@@ -271,6 +271,7 @@ static GPUTexture **get_image_gpu_texture_ptr(Image *ima,
{
const bool in_range = (textarget >= 0) && (textarget < TEXTARGET_COUNT);
BLI_assert(in_range);
+ BLI_assert(multiview_eye == 0 || multiview_eye == 1);
if (in_range) {
return &(ima->gputexture[textarget][multiview_eye]);
@@ -310,9 +311,17 @@ static GPUTexture *image_get_gpu_texture(Image *ima,
* the current `pass` and `layer` should be 0. */
short requested_pass = iuser ? iuser->pass : 0;
short requested_layer = iuser ? iuser->layer : 0;
- if (ima->gpu_pass != requested_pass || ima->gpu_layer != requested_layer) {
+ short requested_view = iuser ? iuser->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 < 2) {
+ requested_view = 0;
+ }
+ if (ima->gpu_pass != requested_pass || ima->gpu_layer != requested_layer ||
+ ima->gpu_view != requested_view) {
ima->gpu_pass = requested_pass;
ima->gpu_layer = requested_layer;
+ ima->gpu_view = requested_view;
ima->gpuflag |= IMA_GPU_REFRESH;
}
@@ -345,9 +354,10 @@ static GPUTexture *image_get_gpu_texture(Image *ima,
BKE_image_tag_time(ima);
/* Test if we already have a texture. */
- const int current_view = iuser ? ((iuser->flag & IMA_SHOW_STEREO) != 0 ? iuser->multiview_eye :
- iuser->view) :
- 0;
+ int current_view = iuser ? iuser->multi_index : 0;
+ if (current_view >= 2) {
+ current_view = 0;
+ }
GPUTexture **tex = get_image_gpu_texture_ptr(ima, textarget, current_view);
if (*tex) {
return *tex;