[Bf-blender-cvs] [4a039158e56] soc-2019-openxr: Avoid OpenGL context deactivation, just to reactivate it immediately
Julian Eisel
noreply at git.blender.org
Sat Aug 24 00:13:46 CEST 2019
Commit: 4a039158e5692f65b057c02a6162a7ee8fca8ebf
Author: Julian Eisel
Date: Sat Aug 24 00:00:33 2019 +0200
Branches: soc-2019-openxr
https://developer.blender.org/rB4a039158e5692f65b057c02a6162a7ee8fca8ebf
Avoid OpenGL context deactivation, just to reactivate it immediately
===================================================================
M intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
M source/blender/windowmanager/intern/wm_xr.c
===================================================================
diff --git a/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp b/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
index 60dff3a83d8..33803ca687b 100644
--- a/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
+++ b/intern/ghost/intern/GHOST_XrGraphicsBinding.cpp
@@ -148,14 +148,11 @@ class GHOST_XrGraphicsBindingOpenGL : public GHOST_IXrGraphicsBinding {
}
void drawViewEnd(XrSwapchainImageBaseHeader *swapchain_image,
const GHOST_XrDrawViewInfo *draw_info,
- GHOST_Context *ogl_ctx) override
+ GHOST_Context * /*ogl_ctx*/) override
{
XrSwapchainImageOpenGLKHR *ogl_swapchain_image = reinterpret_cast<XrSwapchainImageOpenGLKHR *>(
swapchain_image);
- ogl_ctx->activateDrawingContext();
-
- glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_fbo);
glFramebufferTexture2D(
@@ -256,8 +253,6 @@ class GHOST_XrGraphicsBindingD3D : public GHOST_IXrGraphicsBinding {
XrSwapchainImageD3D11KHR *d3d_swapchain_image = reinterpret_cast<XrSwapchainImageD3D11KHR *>(
swapchain_image);
- ogl_ctx->activateDrawingContext();
-
# if 0
/* Ideally we'd just create a render target view for the OpenXR swapchain image texture and
* blit from the OpenGL context into it. The NV_DX_interop extension doesn't want to work with
diff --git a/source/blender/windowmanager/intern/wm_xr.c b/source/blender/windowmanager/intern/wm_xr.c
index f25b6c2e85c..8ce691958d5 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -240,11 +240,16 @@ void wm_xr_session_toggle(bContext *C, void *xr_context_ptr)
static void wm_xr_session_surface_draw(bContext *C)
{
wmWindowManager *wm = CTX_wm_manager(C);
+ wmXrSurfaceData *surface_data = g_xr_surface->customdata;
if (!GHOST_XrSessionIsRunning(wm->xr_context)) {
return;
}
GHOST_XrSessionDrawViews(wm->xr_context, C);
+ if (surface_data->viewport) {
+ /* Still bound from view drawing. */
+ GPU_viewport_unbind(surface_data->viewport);
+ }
}
static void wm_xr_session_free_data(wmSurface *surface)
@@ -474,7 +479,9 @@ GHOST_ContextHandle wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void
else {
GPU_viewport_draw_to_screen_ex(viewport, &rect, draw_view->expects_srgb_buffer);
}
- GPU_viewport_unbind(viewport);
+ /* Leave viewport bound so GHOST_Xr can use its context/framebuffer, its unbound in
+ * wm_xr_session_surface_draw(). */
+ // GPU_viewport_unbind(viewport);
return g_xr_surface->ghost_ctx;
}
More information about the Bf-blender-cvs
mailing list