diff options
Diffstat (limited to 'src/platform/graphics/direct2d')
| -rw-r--r-- | src/platform/graphics/direct2d/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/platform/graphics/direct2d/Factory.cpp | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/platform/graphics/direct2d/CMakeLists.txt b/src/platform/graphics/direct2d/CMakeLists.txt index 322c91e9..e5fb9faf 100644 --- a/src/platform/graphics/direct2d/CMakeLists.txt +++ b/src/platform/graphics/direct2d/CMakeLists.txt @@ -11,6 +11,6 @@ add_library(CruPlatformGraphicsDirect2d WindowPainter.cpp WindowRenderTarget.cpp ) -target_link_libraries(CruPlatformGraphicsDirect2d PUBLIC D3D11 D2d1 DWrite) +target_link_libraries(CruPlatformGraphicsDirect2d PUBLIC D3D11 D2d1 DWrite dxgi dxguid) target_link_libraries(CruPlatformGraphicsDirect2d PUBLIC CruPlatformGraphics) target_compile_definitions(CruPlatformGraphicsDirect2d PRIVATE CRU_WIN_GRAPHICS_DIRECT_EXPORT_API) diff --git a/src/platform/graphics/direct2d/Factory.cpp b/src/platform/graphics/direct2d/Factory.cpp index 6be4f797..ef355c72 100644 --- a/src/platform/graphics/direct2d/Factory.cpp +++ b/src/platform/graphics/direct2d/Factory.cpp @@ -6,6 +6,9 @@ #include "cru/platform/graphics/direct2d/ImageFactory.h" #include "cru/platform/graphics/direct2d/TextLayout.h" +#include <dxgi1_3.h> +#include <dxgidebug.h> +#include <cstdlib> #include <utility> namespace cru::platform::graphics::direct2d { @@ -18,6 +21,13 @@ DirectGraphicsFactory::DirectGraphicsFactory() : DirectGraphicsResource(this) { #ifdef CRU_DEBUG creation_flags |= D3D11_CREATE_DEVICE_DEBUG; + + atexit([] { + Microsoft::WRL::ComPtr<IDXGIDebug1> dxgi_debug; + CheckHResult(DXGIGetDebugInterface1(0, IID_PPV_ARGS(&dxgi_debug))); + CheckHResult( + dxgi_debug->ReportLiveObjects(DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_ALL)); + }); #endif const D3D_FEATURE_LEVEL feature_levels[] = { @@ -36,7 +46,7 @@ DirectGraphicsFactory::DirectGraphicsFactory() : DirectGraphicsResource(this) { CheckHResult(d3d11_device_->QueryInterface(dxgi_device.GetAddressOf())); CheckHResult(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, - IID_PPV_ARGS(&d2d1_factory_))); + IID_PPV_ARGS(&d2d1_factory_))); CheckHResult(d2d1_factory_->CreateDevice(dxgi_device.Get(), &d2d1_device_)); |
