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:
authorClément Foucault <foucault.clem@gmail.com>2019-01-10 00:26:52 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-01-11 18:00:23 +0300
commit86ec304ffabcb3df6853753f0beb4d316c03adf8 (patch)
tree4a0875b03601b51c756997bb0a3e0e5548a25802
parent74260a2b6da86e3f6da0a37afc6d47338c1be034 (diff)
WM: Use draw manager to draw UV image editor spaces
This is in order to use batch cache directly without using tricks like batch presets reseting the VAOs. Note: For now it also create a depth buffer for this area which is not needed. We could get rid of this to lower VRAM usage.
-rw-r--r--source/blender/editors/space_image/space_image.c14
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c2
2 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 3c850ae1689..4f2b0f0db2b 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -83,6 +83,12 @@
#include "image_intern.h"
#include "GPU_framebuffer.h"
+#include "GPU_batch_presets.h"
+#include "GPU_viewport.h"
+
+/* TODO(fclem) remove bad level calls */
+#include "../draw/DRW_engine.h"
+#include "wm_draw.h"
/**************************** common state *****************************/
@@ -620,6 +626,14 @@ static void image_main_region_draw(const bContext *C, ARegion *ar)
//View2DScrollers *scrollers;
float col[3];
+ /* XXX This is in order to draw UI batches with the DRW
+ * olg context since we now use it for drawing the entire area */
+ gpu_batch_presets_reset();
+
+ /* TODO(fclem) port to draw manager and remove the depth buffer allocation. */
+ DefaultFramebufferList *fbl = GPU_viewport_framebuffer_list_get(ar->draw_buffer->viewport[0]);
+ GPU_framebuffer_bind(fbl->color_only_fb);
+
/* XXX not supported yet, disabling for now */
scene->r.scemode &= ~R_COMP_CROP;
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index d6058ac0d28..c811a52c0e9 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -213,7 +213,7 @@ static void wm_region_test_render_do_draw(const Scene *scene, struct Depsgraph *
static bool wm_region_use_viewport(ScrArea *sa, ARegion *ar)
{
- return (sa->spacetype == SPACE_VIEW3D && ar->regiontype == RGN_TYPE_WINDOW);
+ return (ELEM(sa->spacetype, SPACE_VIEW3D, SPACE_IMAGE) && ar->regiontype == RGN_TYPE_WINDOW);
}
/********************** draw all **************************/