aboutsummaryrefslogtreecommitdiff
path: root/src/platform/graphics/direct2d
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/graphics/direct2d')
-rw-r--r--src/platform/graphics/direct2d/CMakeLists.txt2
-rw-r--r--src/platform/graphics/direct2d/Factory.cpp12
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_));