From 7e4e7dd395c4f1c390711b297c9cdf5ddf680a6e Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 11 Oct 2017 09:41:19 +0200 Subject: [PATCH] [dxgi] Moved private storage out of DXGI library --- src/dxgi/meson.build | 1 - src/util/com/com_include.h | 1 + .../com/com_private_data.cpp} | 38 +++++++++---------- .../com/com_private_data.h} | 24 ++++++------ src/util/meson.build | 1 + 5 files changed, 33 insertions(+), 32 deletions(-) rename src/{dxgi/dxgi_private_data.cpp => util/com/com_private_data.cpp} (69%) rename src/{dxgi/dxgi_private_data.h => util/com/com_private_data.h} (79%) diff --git a/src/dxgi/meson.build b/src/dxgi/meson.build index 57c101ec..0bee8ffe 100644 --- a/src/dxgi/meson.build +++ b/src/dxgi/meson.build @@ -3,7 +3,6 @@ dxgi_src = [ 'dxgi_factory.cpp', 'dxgi_main.cpp', 'dxgi_output.cpp', - 'dxgi_private_data.cpp', 'dxgi_swapchain.cpp', ] diff --git a/src/util/com/com_include.h b/src/util/com/com_include.h index f18a98b0..70279a4f 100644 --- a/src/util/com/com_include.h +++ b/src/util/com/com_include.h @@ -6,3 +6,4 @@ #define WIN32_LEAN_AND_MEAN #include +#include \ No newline at end of file diff --git a/src/dxgi/dxgi_private_data.cpp b/src/util/com/com_private_data.cpp similarity index 69% rename from src/dxgi/dxgi_private_data.cpp rename to src/util/com/com_private_data.cpp index b900a616..b06ade02 100644 --- a/src/dxgi/dxgi_private_data.cpp +++ b/src/util/com/com_private_data.cpp @@ -2,12 +2,12 @@ #include #include -#include "dxgi_private_data.h" +#include "com_private_data.h" namespace dxvk { - DxgiPrivateDataEntry::DxgiPrivateDataEntry() { } - DxgiPrivateDataEntry::DxgiPrivateDataEntry( + ComPrivateDataEntry::ComPrivateDataEntry() { } + ComPrivateDataEntry::ComPrivateDataEntry( REFGUID guid, UINT size, const void* data) @@ -18,7 +18,7 @@ namespace dxvk { } - DxgiPrivateDataEntry::DxgiPrivateDataEntry( + ComPrivateDataEntry::ComPrivateDataEntry( REFGUID guid, const IUnknown* iface) : m_guid (guid), @@ -27,12 +27,12 @@ namespace dxvk { } - DxgiPrivateDataEntry::~DxgiPrivateDataEntry() { + ComPrivateDataEntry::~ComPrivateDataEntry() { this->destroy(); } - DxgiPrivateDataEntry::DxgiPrivateDataEntry(DxgiPrivateDataEntry&& other) + ComPrivateDataEntry::ComPrivateDataEntry(ComPrivateDataEntry&& other) : m_guid (other.m_guid), m_size (other.m_size), m_data (other.m_data), @@ -44,7 +44,7 @@ namespace dxvk { } - DxgiPrivateDataEntry& DxgiPrivateDataEntry::operator = (DxgiPrivateDataEntry&& other) { + ComPrivateDataEntry& ComPrivateDataEntry::operator = (ComPrivateDataEntry&& other) { this->destroy(); this->m_guid = other.m_guid; this->m_size = other.m_size; @@ -59,7 +59,7 @@ namespace dxvk { } - HRESULT DxgiPrivateDataEntry::get(UINT& size, void* data) const { + HRESULT ComPrivateDataEntry::get(UINT& size, void* data) const { if (size != 0 && data == nullptr) return DXGI_ERROR_INVALID_CALL; @@ -85,7 +85,7 @@ namespace dxvk { } - void DxgiPrivateDataEntry::destroy() { + void ComPrivateDataEntry::destroy() { if (m_data != nullptr) std::free(m_data); if (m_iface != nullptr) @@ -93,24 +93,24 @@ namespace dxvk { } - HRESULT DxgiPrivateData::setData( + HRESULT ComPrivateData::setData( REFGUID guid, UINT size, const void* data) { - this->insertEntry(DxgiPrivateDataEntry(guid, size, data)); + this->insertEntry(ComPrivateDataEntry(guid, size, data)); return S_OK; } - HRESULT DxgiPrivateData::setInterface( + HRESULT ComPrivateData::setInterface( REFGUID guid, const IUnknown* iface) { - this->insertEntry(DxgiPrivateDataEntry(guid, iface)); + this->insertEntry(ComPrivateDataEntry(guid, iface)); return S_OK; } - HRESULT DxgiPrivateData::getData( + HRESULT ComPrivateData::getData( REFGUID guid, UINT* size, void* data) { @@ -126,8 +126,8 @@ namespace dxvk { } - DxgiPrivateDataEntry* DxgiPrivateData::findEntry(REFGUID guid) { - for (DxgiPrivateDataEntry& e : m_entries) { + ComPrivateDataEntry* ComPrivateData::findEntry(REFGUID guid) { + for (ComPrivateDataEntry& e : m_entries) { if (e.hasGuid(guid)) return &e; } @@ -136,9 +136,9 @@ namespace dxvk { } - void DxgiPrivateData::insertEntry(DxgiPrivateDataEntry&& entry) { - DxgiPrivateDataEntry srcEntry = std::move(entry); - DxgiPrivateDataEntry* dstEntry = this->findEntry(srcEntry.guid()); + void ComPrivateData::insertEntry(ComPrivateDataEntry&& entry) { + ComPrivateDataEntry srcEntry = std::move(entry); + ComPrivateDataEntry* dstEntry = this->findEntry(srcEntry.guid()); if (dstEntry != nullptr) *dstEntry = std::move(srcEntry); diff --git a/src/dxgi/dxgi_private_data.h b/src/util/com/com_private_data.h similarity index 79% rename from src/dxgi/dxgi_private_data.h rename to src/util/com/com_private_data.h index 26bab34d..e8b3419c 100644 --- a/src/dxgi/dxgi_private_data.h +++ b/src/util/com/com_private_data.h @@ -2,7 +2,7 @@ #include -#include "dxgi_include.h" +#include "com_include.h" namespace dxvk { @@ -10,22 +10,22 @@ namespace dxvk { * \brief Data entry for private storage * Stores a single private storage item. */ - class DxgiPrivateDataEntry { + class ComPrivateDataEntry { public: - DxgiPrivateDataEntry(); - DxgiPrivateDataEntry( + ComPrivateDataEntry(); + ComPrivateDataEntry( REFGUID guid, UINT size, const void* data); - DxgiPrivateDataEntry( + ComPrivateDataEntry( REFGUID guid, const IUnknown* iface); - ~DxgiPrivateDataEntry(); + ~ComPrivateDataEntry(); - DxgiPrivateDataEntry (DxgiPrivateDataEntry&& other); - DxgiPrivateDataEntry& operator = (DxgiPrivateDataEntry&& other); + ComPrivateDataEntry (ComPrivateDataEntry&& other); + ComPrivateDataEntry& operator = (ComPrivateDataEntry&& other); /** * \brief The entry's GUID @@ -75,7 +75,7 @@ namespace dxvk { * byte arrays or COM interfaces that can be * retrieved using GUIDs. */ - class DxgiPrivateData { + class ComPrivateData { public: @@ -95,10 +95,10 @@ namespace dxvk { private: - std::vector m_entries; + std::vector m_entries; - DxgiPrivateDataEntry* findEntry(REFGUID guid); - void insertEntry(DxgiPrivateDataEntry&& entry); + ComPrivateDataEntry* findEntry(REFGUID guid); + void insertEntry(ComPrivateDataEntry&& entry); }; diff --git a/src/util/meson.build b/src/util/meson.build index 05e0cd7d..23bbdef3 100644 --- a/src/util/meson.build +++ b/src/util/meson.build @@ -1,5 +1,6 @@ util_src = files([ 'com/com_guid.cpp', + 'com/com_private_data.cpp', 'log/log.cpp', 'log/log_debug.cpp',