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:
-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;