Commit: e4fcf25fc5ee92ca33b69063eb9c945fa41f2d45 Author: Julian Eisel Date: Thu Jun 27 18:56:20 2019 +0200 Branches: soc-2019-openxr https://developer.blender.org/rBe4fcf25fc5ee92ca33b69063eb9c945fa41f2d45
Don't use Microsoft::WRL::ComPtr<...> for COM types Makes things difficult if you're not familar with COM. =================================================================== M intern/ghost/intern/GHOST_ContextD3D.cpp M intern/ghost/intern/GHOST_ContextD3D.h M intern/ghost/intern/GHOST_XRGraphicsBinding.cpp =================================================================== diff --git a/intern/ghost/intern/GHOST_ContextD3D.cpp b/intern/ghost/intern/GHOST_ContextD3D.cpp index 6a617824856..b6c2a402e5f 100644 --- a/intern/ghost/intern/GHOST_ContextD3D.cpp +++ b/intern/ghost/intern/GHOST_ContextD3D.cpp @@ -71,7 +71,7 @@ class SharedOpenGLContext { m_wgl_ctx->activateDrawingContext(); - m_shared.device = wglDXOpenDeviceNV(m_d3d_ctx->m_device.Get()); + m_shared.device = wglDXOpenDeviceNV(m_d3d_ctx->m_device); if (m_shared.device == NULL) { fprintf(stderr, "Error opening shared device using wglDXOpenDeviceNV()\n"); return GHOST_kFailure; @@ -122,6 +122,10 @@ GHOST_ContextD3D::GHOST_ContextD3D(bool stereoVisual, HWND hWnd) GHOST_ContextD3D::~GHOST_ContextD3D() { delete glshared; + m_swapchain->Release(); + m_backbuffer_view->Release(); + m_device->Release(); + m_device_ctx->Release(); } GHOST_TSuccess GHOST_ContextD3D::swapBuffers() @@ -198,10 +202,11 @@ GHOST_TSuccess GHOST_ContextD3D::initializeDrawingContext() &m_device_ctx); WIN32_CHK(hres == S_OK); - Microsoft::WRL::ComPtr<ID3D11Resource> back_buffer = nullptr; - m_swapchain->GetBuffer(0, __uuidof(ID3D11Resource), &back_buffer); + ID3D11Texture2D *back_buffer; + m_swapchain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void **)&back_buffer); - m_device->CreateRenderTargetView(back_buffer.Get(), nullptr, &m_backbuffer_view); + m_device->CreateRenderTargetView(back_buffer, nullptr, &m_backbuffer_view); + back_buffer->Release(); m_swapchain->Present(0, 0); @@ -225,8 +230,8 @@ GHOST_TSuccess GHOST_ContextD3D::blitOpenGLOffscreenContext(GHOST_Context *offsc } // const float clear_col[] = {0.2f, 0.5f, 0.8f, 1.0f}; - // m_device_ctx->ClearRenderTargetView(m_backbuffer_view.Get(), clear_col); - m_device_ctx->OMSetRenderTargets(1, m_backbuffer_view.GetAddressOf(), nullptr); + // m_device_ctx->ClearRenderTargetView(m_backbuffer_view, clear_col); + m_device_ctx->OMSetRenderTargets(1, &m_backbuffer_view, nullptr); offscreen_ctx->activateDrawingContext(); diff --git a/intern/ghost/intern/GHOST_ContextD3D.h b/intern/ghost/intern/GHOST_ContextD3D.h index a4ff58a0b46..430ac12abbd 100644 --- a/intern/ghost/intern/GHOST_ContextD3D.h +++ b/intern/ghost/intern/GHOST_ContextD3D.h @@ -26,7 +26,6 @@ #endif // WIN32 #include <D3D11.h> -#include <wrl.h> // Microsoft::WRL::ComPtr #include "GHOST_Context.h" @@ -126,10 +125,10 @@ class GHOST_ContextD3D : public GHOST_Context { HWND m_hWnd; - Microsoft::WRL::ComPtr<ID3D11Device> m_device; - Microsoft::WRL::ComPtr<ID3D11DeviceContext> m_device_ctx; - Microsoft::WRL::ComPtr<IDXGISwapChain> m_swapchain; - Microsoft::WRL::ComPtr<ID3D11RenderTargetView> m_backbuffer_view; + ID3D11Device *m_device; + ID3D11DeviceContext *m_device_ctx; + IDXGISwapChain *m_swapchain; + ID3D11RenderTargetView *m_backbuffer_view; SharedOpenGLContext *glshared{NULL}; }; diff --git a/intern/ghost/intern/GHOST_XRGraphicsBinding.cpp b/intern/ghost/intern/GHOST_XRGraphicsBinding.cpp index d08940a951e..ee1655a2150 100644 --- a/intern/ghost/intern/GHOST_XRGraphicsBinding.cpp +++ b/intern/ghost/intern/GHOST_XRGraphicsBinding.cpp @@ -123,7 +123,7 @@ class GHOST_XrGraphicsBindingD3D : public GHOST_IXrGraphicsBinding { GHOST_ContextD3D *ctx_d3d = static_cast<GHOST_ContextD3D *>(ghost_ctx); oxr_binding.d3d11.type = XR_TYPE_GRAPHICS_BINDING_D3D11_KHR; - oxr_binding.d3d11.device = ctx_d3d->m_device.Get(); + oxr_binding.d3d11.device = ctx_d3d->m_device; m_ghost_ctx = ctx_d3d; } @@ -160,13 +160,15 @@ class GHOST_XrGraphicsBindingD3D : public GHOST_IXrGraphicsBinding { swapchain_image); const CD3D11_RENDER_TARGET_VIEW_DESC render_target_view_desc(D3D11_RTV_DIMENSION_TEXTURE2D, DXGI_FORMAT_R8G8B8A8_UNORM); - Microsoft::WRL::ComPtr<ID3D11RenderTargetView> renderTargetView; + ID3D11RenderTargetView *render_target_view; m_ghost_ctx->m_device->CreateRenderTargetView(d3d_swapchain_image->texture, &render_target_view_desc, - renderTargetView.ReleaseAndGetAddressOf()); + &render_target_view); const float clear_col[] = {0.2f, 0.5f, 0.8f, 1.0f}; - m_ghost_ctx->m_device_ctx->ClearRenderTargetView(renderTargetView.Get(), clear_col); + m_ghost_ctx->m_device_ctx->ClearRenderTargetView(render_target_view, clear_col); + + render_target_view->Release(); } void drawViewEnd(XrSwapchainImageBaseHeader *swapchain_image) override { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs