Cleanup: Remove bad level calls from space image

Groundwork for upcoming fix (D8472)
This commit is contained in:
Dalai Felinto 2020-08-06 14:29:33 +02:00
parent 45e6ca3661
commit bc8168f4a2
4 changed files with 28 additions and 8 deletions

View File

@ -23,6 +23,7 @@ set(INC
../../blentranslation
../../bmesh
../../depsgraph
../../draw
../../gpu
../../imbuf
../../makesdna

View File

@ -75,11 +75,10 @@
#include "GPU_batch_presets.h"
#include "GPU_framebuffer.h"
#include "GPU_viewport.h"
#include "image_intern.h"
/* TODO(fclem) remove bad level calls */
#include "../draw/DRW_engine.h"
#include "wm_draw.h"
#include "DRW_engine_types.h"
#include "image_intern.h"
/**************************** common state *****************************/
@ -644,14 +643,17 @@ static void image_main_region_draw(const bContext *C, ARegion *region)
float col[3];
GPU_batch_presets_reset();
GPUViewport *viewport = WM_draw_region_get_viewport(region);
GPUFrameBuffer *framebuffer_default, *framebuffer_overlay;
GPUViewport *viewport = region->draw_buffer->viewport;
DefaultFramebufferList *fbl = GPU_viewport_framebuffer_list_get(viewport);
GPU_framebuffer_bind(fbl->default_fb);
framebuffer_default = GPU_viewport_framebuffer_default_get(viewport);
framebuffer_overlay = GPU_viewport_framebuffer_overlay_get(viewport);
GPU_framebuffer_bind(framebuffer_default);
GPU_clear_color(0.0f, 0.0f, 0.0f, 0.0f);
GPU_clear(GPU_COLOR_BIT);
GPU_framebuffer_bind(fbl->overlay_fb);
GPU_framebuffer_bind(framebuffer_overlay);
/* XXX not supported yet, disabling for now */
scene->r.scemode &= ~R_COMP_CROP;

View File

@ -41,6 +41,8 @@ extern "C" {
typedef struct GPUViewport GPUViewport;
struct GPUFrameBuffer;
/* Contains memory pools information */
typedef struct ViewportMemoryPool {
struct BLI_memblock *commands;
@ -151,6 +153,9 @@ GPUTexture *GPU_viewport_texture_pool_query(
bool GPU_viewport_engines_data_validate(GPUViewport *viewport, void **engine_handle_array);
void GPU_viewport_cache_release(GPUViewport *viewport);
struct GPUFrameBuffer *GPU_viewport_framebuffer_default_get(GPUViewport *viewport);
struct GPUFrameBuffer *GPU_viewport_framebuffer_overlay_get(GPUViewport *viewport);
#ifdef __cplusplus
}
#endif

View File

@ -1036,3 +1036,15 @@ void GPU_viewport_free(GPUViewport *viewport)
MEM_freeN(viewport);
}
GPUFrameBuffer *GPU_viewport_framebuffer_default_get(GPUViewport *viewport)
{
DefaultFramebufferList *fbl = GPU_viewport_framebuffer_list_get(viewport);
return fbl->default_fb;
}
GPUFrameBuffer *GPU_viewport_framebuffer_overlay_get(GPUViewport *viewport)
{
DefaultFramebufferList *fbl = GPU_viewport_framebuffer_list_get(viewport);
return fbl->overlay_fb;
}