From fd48ff1296f45b32bffeca2c60dca2a12bb84229 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Thu, 19 Mar 2020 08:06:49 +0100 Subject: Fix T73931: Stereo Viewport Color Management Stereoscopic viewport didn't support Color Manangement due recent changes in the color management pipeline. In order to solve the issue we will migrate the strereo rendering into the GPUViewport. This will share some textures and reduce required GPU memory. Reviewed By: fclem, dfelinto Differential Revision: https://developer.blender.org/D6922 --- source/blender/gpu/GPU_viewport.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'source/blender/gpu/GPU_viewport.h') diff --git a/source/blender/gpu/GPU_viewport.h b/source/blender/gpu/GPU_viewport.h index 848da778d1c..b7b8af9f90a 100644 --- a/source/blender/gpu/GPU_viewport.h +++ b/source/blender/gpu/GPU_viewport.h @@ -27,6 +27,7 @@ #include #include "DNA_vec_types.h" +#include "DNA_scene_types.h" #include "GPU_framebuffer.h" #include "GPU_texture.h" @@ -84,6 +85,8 @@ typedef struct ViewportEngineData { StorageList *stl; char info[GPU_INFO_SIZE]; + TextureList *txl_stereo; + StorageList *stl_stereo; /* we may want to put this elsewhere */ struct DRWTextStore *text_draw_cache; @@ -101,10 +104,12 @@ typedef struct ViewportEngineData_Info { } ViewportEngineData_Info; GPUViewport *GPU_viewport_create(void); -void GPU_viewport_bind(GPUViewport *viewport, const rcti *rect); +GPUViewport *GPU_viewport_stereo_create(void); +void GPU_viewport_bind(GPUViewport *viewport, int view, const rcti *rect); void GPU_viewport_unbind(GPUViewport *viewport); -void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect); +void GPU_viewport_draw_to_screen(GPUViewport *viewport, int view, const rcti *rect); void GPU_viewport_draw_to_screen_ex(GPUViewport *viewport, + int view, const rcti *rect, bool display_colorspace); void GPU_viewport_free(GPUViewport *viewport); @@ -125,9 +130,11 @@ struct DRWInstanceDataList *GPU_viewport_instance_data_list_get(GPUViewport *vie void *GPU_viewport_engine_data_create(GPUViewport *viewport, void *engine_type); void *GPU_viewport_engine_data_get(GPUViewport *viewport, void *engine_type); void *GPU_viewport_framebuffer_list_get(GPUViewport *viewport); +void GPU_viewport_stereo_composite(GPUViewport *viewport, Stereo3dFormat *stereo_format); void *GPU_viewport_texture_list_get(GPUViewport *viewport); void GPU_viewport_size_get(const GPUViewport *viewport, int size[2]); void GPU_viewport_size_set(GPUViewport *viewport, const int size[2]); +void GPU_viewport_active_view_set(GPUViewport *viewport, int view); /* Profiling */ double *GPU_viewport_cache_time_get(GPUViewport *viewport); @@ -135,7 +142,7 @@ double *GPU_viewport_cache_time_get(GPUViewport *viewport); void GPU_viewport_tag_update(GPUViewport *viewport); bool GPU_viewport_do_update(GPUViewport *viewport); -GPUTexture *GPU_viewport_color_texture(GPUViewport *viewport); +GPUTexture *GPU_viewport_color_texture(GPUViewport *viewport, int view); /* Texture pool */ GPUTexture *GPU_viewport_texture_pool_query( -- cgit v1.2.3