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:
authorJeroen Bakker <jbakker>2020-03-19 10:00:05 +0300
committerJeroen Bakker <jeroen@blender.org>2020-03-19 10:03:40 +0300
commitfe045b2b77dc6d7f0b552619fe824b496d34db6c (patch)
tree0dc9a5ac2b196e988a00bd83b372d7510db730ae /source/blender
parentd68d1da1f312b0f726b4ae7a3e49de2220503158 (diff)
WindowManager: Remove Stereo Offscreen
Stereo offscreen rendering has been replaced with stereo viewport rendering. When an offscreen buffer is used it is only used for mono rendering. This patch will remove the second offscreen buffer. Reviewed By: fclem Differential Revision: https://developer.blender.org/D7153
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c34
-rw-r--r--source/blender/windowmanager/wm_draw.h2
2 files changed, 11 insertions, 25 deletions
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index a0e8374a46a..5289b747f05 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -333,13 +333,13 @@ static void wm_draw_region_buffer_free(ARegion *region)
{
if (region->draw_buffer) {
for (int view = 0; view < 2; view++) {
- if (region->draw_buffer->offscreen[view]) {
- GPU_offscreen_free(region->draw_buffer->offscreen[view]);
- }
if (region->draw_buffer->viewport[view]) {
GPU_viewport_free(region->draw_buffer->viewport[view]);
}
}
+ if (region->draw_buffer->offscreen) {
+ GPU_offscreen_free(region->draw_buffer->offscreen);
+ }
MEM_freeN(region->draw_buffer);
region->draw_buffer = NULL;
@@ -374,7 +374,7 @@ static void wm_draw_region_buffer_create(ARegion *region, bool stereo, bool use_
}
else {
/* Free offscreen buffer on size changes. Viewport auto resizes. */
- GPUOffScreen *offscreen = region->draw_buffer->offscreen[0];
+ GPUOffScreen *offscreen = region->draw_buffer->offscreen;
if (offscreen && (GPU_offscreen_width(offscreen) != region->winx ||
GPU_offscreen_height(offscreen) != region->winy)) {
wm_draw_region_buffer_free(region);
@@ -402,21 +402,8 @@ static void wm_draw_region_buffer_create(ARegion *region, bool stereo, bool use_
wm_draw_offscreen_texture_parameters(offscreen);
- GPUOffScreen *offscreen_right = NULL;
- if (stereo) {
- offscreen_right = GPU_offscreen_create(region->winx, region->winy, 0, false, false, NULL);
-
- if (!offscreen_right) {
- GPU_offscreen_free(offscreen);
- return;
- }
-
- wm_draw_offscreen_texture_parameters(offscreen_right);
- }
-
region->draw_buffer = MEM_callocN(sizeof(wmDrawBuffer), "wmDrawBuffer");
- region->draw_buffer->offscreen[0] = offscreen;
- region->draw_buffer->offscreen[1] = offscreen_right;
+ region->draw_buffer->offscreen = offscreen;
}
region->draw_buffer->bound_view = -1;
@@ -434,7 +421,7 @@ static void wm_draw_region_bind(ARegion *region, int view)
GPU_viewport_bind(region->draw_buffer->viewport[view], &region->winrct);
}
else {
- GPU_offscreen_bind(region->draw_buffer->offscreen[view], false);
+ GPU_offscreen_bind(region->draw_buffer->offscreen, false);
/* For now scissor is expected by region drawing, we could disable it
* and do the enable/disable in the specific cases that setup scissor. */
@@ -458,7 +445,7 @@ static void wm_draw_region_unbind(ARegion *region, int view)
}
else {
glDisable(GL_SCISSOR_TEST);
- GPU_offscreen_unbind(region->draw_buffer->offscreen[view], false);
+ GPU_offscreen_unbind(region->draw_buffer->offscreen, false);
}
}
@@ -473,8 +460,7 @@ static void wm_draw_region_blit(ARegion *region, int view)
view = 0;
}
else if (view > 0) {
- if (region->draw_buffer->viewport[view] == NULL &&
- region->draw_buffer->offscreen[view] == NULL) {
+ if (region->draw_buffer->viewport[view] == NULL) {
/* Region does not need stereo or failed to allocate stereo buffers. */
view = 0;
}
@@ -485,7 +471,7 @@ static void wm_draw_region_blit(ARegion *region, int view)
}
else {
GPU_offscreen_draw_to_screen(
- region->draw_buffer->offscreen[view], region->winrct.xmin, region->winrct.ymin);
+ region->draw_buffer->offscreen, region->winrct.xmin, region->winrct.ymin);
}
}
@@ -499,7 +485,7 @@ GPUTexture *wm_draw_region_texture(ARegion *region, int view)
return GPU_viewport_color_texture(region->draw_buffer->viewport[view]);
}
else {
- return GPU_offscreen_color_texture(region->draw_buffer->offscreen[view]);
+ return GPU_offscreen_color_texture(region->draw_buffer->offscreen);
}
}
diff --git a/source/blender/windowmanager/wm_draw.h b/source/blender/windowmanager/wm_draw.h
index 4a62558bf91..4ebf2c820cd 100644
--- a/source/blender/windowmanager/wm_draw.h
+++ b/source/blender/windowmanager/wm_draw.h
@@ -31,7 +31,7 @@ struct GPUTexture;
struct GPUViewport;
typedef struct wmDrawBuffer {
- struct GPUOffScreen *offscreen[2];
+ struct GPUOffScreen *offscreen;
struct GPUViewport *viewport[2];
bool stereo;
int bound_view;