From c4e90c3f0025628c0951f368d0d4b54f13a87b3d Mon Sep 17 00:00:00 2001 From: assiduous Date: Wed, 16 Sep 2020 20:19:06 -0700 Subject: Removed AdapterAttribs struct that was a duplicate of GraphicsAdapterInfo. Moved few members to GraphicsAdapterInfo --- Graphics/GraphicsEngine/interface/APIInfo.h | 2 +- Graphics/GraphicsEngine/interface/GraphicsTypes.h | 65 ++++++++++------------ Graphics/GraphicsEngine/src/APIInfo.cpp | 2 +- .../interface/EngineFactoryD3D11.h | 2 +- .../interface/EngineFactoryD3D12.h | 2 +- .../GraphicsEngineD3D12/src/EngineFactoryD3D12.cpp | 4 +- .../include/DXGITypeConversions.hpp | 3 + .../include/EngineFactoryD3DBase.hpp | 10 +--- .../include/RenderDeviceD3DBase.hpp | 9 +-- .../src/DXGITypeConversions.cpp | 18 ++++++ .../src/RenderDeviceGLImpl.cpp | 5 ++ .../src/RenderDeviceVkImpl.cpp | 8 ++- 12 files changed, 72 insertions(+), 58 deletions(-) (limited to 'Graphics') diff --git a/Graphics/GraphicsEngine/interface/APIInfo.h b/Graphics/GraphicsEngine/interface/APIInfo.h index 72fec4c3..4baac91d 100644 --- a/Graphics/GraphicsEngine/interface/APIInfo.h +++ b/Graphics/GraphicsEngine/interface/APIInfo.h @@ -58,7 +58,7 @@ struct APIInfo size_t RectSize DEFAULT_INITIALIZER(0); size_t CopyTextureAttribsSize DEFAULT_INITIALIZER(0); size_t DeviceObjectAttribsSize DEFAULT_INITIALIZER(0); - size_t AdapterAttribsSize DEFAULT_INITIALIZER(0); + size_t GraphicsAdapterInfoSize DEFAULT_INITIALIZER(0); size_t DisplayModeAttribsSize DEFAULT_INITIALIZER(0); size_t SwapChainDescSize DEFAULT_INITIALIZER(0); size_t FullScreenModeDescSize DEFAULT_INITIALIZER(0); diff --git a/Graphics/GraphicsEngine/interface/GraphicsTypes.h b/Graphics/GraphicsEngine/interface/GraphicsTypes.h index fff72240..b87cce67 100644 --- a/Graphics/GraphicsEngine/interface/GraphicsTypes.h +++ b/Graphics/GraphicsEngine/interface/GraphicsTypes.h @@ -1183,35 +1183,6 @@ DILIGENT_TYPED_ENUM(ADAPTER_TYPE, Uint8) ADAPTER_TYPE_HARDWARE }; -/// Adapter attributes -struct AdapterAttribs -{ - /// Adapter type. See Diligent::ADAPTER_TYPE. - ADAPTER_TYPE AdapterType DEFAULT_INITIALIZER(ADAPTER_TYPE_UNKNOWN); - - /// A string that contains the adapter description - char Description[128] DEFAULT_INITIALIZER({}); - - /// Dedicated video memory, in bytes - size_t DedicatedVideoMemory DEFAULT_INITIALIZER(0); - - /// Dedicated system memory, in bytes - size_t DedicatedSystemMemory DEFAULT_INITIALIZER(0); - - /// Dedicated shared memory, in bytes - size_t SharedSystemMemory DEFAULT_INITIALIZER(0); - - /// The PCI ID of the hardware vendor - Uint32 VendorId DEFAULT_INITIALIZER(0); - - /// The PCI ID of the hardware device - Uint32 DeviceId DEFAULT_INITIALIZER(0); - - /// Number of outputs this device has - Uint32 NumOutputs DEFAULT_INITIALIZER(0); -}; -typedef struct AdapterAttribs AdapterAttribs; - /// Flags indicating how an image is stretched to fit a given monitor's resolution. /// \sa DXGI_MODE_SCALING enumeration on MSDN, @@ -1683,22 +1654,46 @@ DILIGENT_TYPED_ENUM(ADAPTER_VENDOR, Uint8) /// Graphics adapter properties struct GraphicsAdapterInfo { + /// A string that contains the adapter description. + char Description[128] DEFAULT_INITIALIZER({}); + /// Adapter type, see Diligent::ADAPTER_TYPE. - ADAPTER_TYPE Type DEFAULT_INITIALIZER(ADAPTER_TYPE_UNKNOWN); + ADAPTER_TYPE Type DEFAULT_INITIALIZER(ADAPTER_TYPE_UNKNOWN); /// Adapter vendor, see Diligent::ADAPTER_VENDOR. - ADAPTER_VENDOR Vendor DEFAULT_INITIALIZER(ADAPTER_VENDOR_UNKNOWN); + ADAPTER_VENDOR Vendor DEFAULT_INITIALIZER(ADAPTER_VENDOR_UNKNOWN); + + /// The PCI ID of the hardware vendor (if available). + Uint32 VendorId DEFAULT_INITIALIZER(0); + + /// The PCI ID of the hardware device (if available). + Uint32 DeviceId DEFAULT_INITIALIZER(0); - /// The amount of local video memory, in bytes, that is not accessible by CPU. + /// Number of video outputs this adapter has (if available). + Uint32 NumOutputs DEFAULT_INITIALIZER(0); - /// \note On some devices it may not be possible to query the memory size, + /// The amount of local video memory that is inaccessible by CPU, in bytes. + + /// \note Device-local memory is where USAGE_DEFAULT and USAGE_STATIC resources + /// are typically allocated. + /// + /// On some devices it may not be possible to query the memory size, /// in which case all memory sizes will be zero. Uint64 DeviceLocalMemory DEFAULT_INITIALIZER(0); - /// The amount of host-visible memory, in bytes, that can be accessed by CPU. + + /// The amount of host-visible memory that can be accessed by CPU and is visible by GPU, in bytes. + + /// \note Host-visible memory is where USAGE_DYNAMIC and USAGE_STAGING resources + /// are typically allocated. Uint64 HostVisibileMemory DEFAULT_INITIALIZER(0); - /// The amount of unified memory, in bytes, that can be directly accessed by both CPU and GPU. + + /// The amount of unified memory that can be directly accessed by both CPU and GPU, in bytes. + + /// \note Unified memory is where USAGE_UNIFIED resources are typically allocated, but + /// resourecs with other usages may be allocated as well if there is no corresponding + /// memory type. Uint64 UnifiedMemory DEFAULT_INITIALIZER(0); }; typedef struct GraphicsAdapterInfo GraphicsAdapterInfo; diff --git a/Graphics/GraphicsEngine/src/APIInfo.cpp b/Graphics/GraphicsEngine/src/APIInfo.cpp index d0d16ad9..f71b943e 100644 --- a/Graphics/GraphicsEngine/src/APIInfo.cpp +++ b/Graphics/GraphicsEngine/src/APIInfo.cpp @@ -68,7 +68,7 @@ static APIInfo InitAPIInfo() INIT_STRUCTURE_SIZE(Rect); INIT_STRUCTURE_SIZE(CopyTextureAttribs); INIT_STRUCTURE_SIZE(DeviceObjectAttribs); - INIT_STRUCTURE_SIZE(AdapterAttribs); + INIT_STRUCTURE_SIZE(GraphicsAdapterInfo); INIT_STRUCTURE_SIZE(DisplayModeAttribs); INIT_STRUCTURE_SIZE(SwapChainDesc); INIT_STRUCTURE_SIZE(FullScreenModeDesc); diff --git a/Graphics/GraphicsEngineD3D11/interface/EngineFactoryD3D11.h b/Graphics/GraphicsEngineD3D11/interface/EngineFactoryD3D11.h index 34ddc552..f58dbd27 100644 --- a/Graphics/GraphicsEngineD3D11/interface/EngineFactoryD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/EngineFactoryD3D11.h @@ -130,7 +130,7 @@ DILIGENT_BEGIN_INTERFACE(IEngineFactoryD3D11, IEngineFactory) VIRTUAL void METHOD(EnumerateAdapters)(THIS_ DIRECT3D_FEATURE_LEVEL MinFeatureLevel, Uint32 REF NumAdapters, - AdapterAttribs* Adapters) PURE; + GraphicsAdapterInfo* Adapters) PURE; /// Enumerates available display modes for the specified output of the specified adapter. diff --git a/Graphics/GraphicsEngineD3D12/interface/EngineFactoryD3D12.h b/Graphics/GraphicsEngineD3D12/interface/EngineFactoryD3D12.h index d5fb356e..b90f3aa0 100644 --- a/Graphics/GraphicsEngineD3D12/interface/EngineFactoryD3D12.h +++ b/Graphics/GraphicsEngineD3D12/interface/EngineFactoryD3D12.h @@ -149,7 +149,7 @@ DILIGENT_BEGIN_INTERFACE(IEngineFactoryD3D12, IEngineFactory) VIRTUAL void METHOD(EnumerateAdapters)(THIS_ DIRECT3D_FEATURE_LEVEL MinFeatureLevel, Uint32 REF NumAdapters, - AdapterAttribs* Adapters) PURE; + GraphicsAdapterInfo* Adapters) PURE; /// Enumerates available display modes for the specified output of the specified adapter. diff --git a/Graphics/GraphicsEngineD3D12/src/EngineFactoryD3D12.cpp b/Graphics/GraphicsEngineD3D12/src/EngineFactoryD3D12.cpp index 65991753..d00d72d5 100644 --- a/Graphics/GraphicsEngineD3D12/src/EngineFactoryD3D12.cpp +++ b/Graphics/GraphicsEngineD3D12/src/EngineFactoryD3D12.cpp @@ -90,7 +90,7 @@ public: virtual void DILIGENT_CALL_TYPE EnumerateAdapters(DIRECT3D_FEATURE_LEVEL MinFeatureLevel, Uint32& NumAdapters, - AdapterAttribs* Adapters) override final; + GraphicsAdapterInfo* Adapters) override final; virtual void DILIGENT_CALL_TYPE EnumerateDisplayModes(DIRECT3D_FEATURE_LEVEL MinFeatureLevel, Uint32 AdapterId, @@ -490,7 +490,7 @@ void EngineFactoryD3D12Impl::CreateSwapChainD3D12(IRenderDevice* pDev void EngineFactoryD3D12Impl::EnumerateAdapters(DIRECT3D_FEATURE_LEVEL MinFeatureLevel, Uint32& NumAdapters, - AdapterAttribs* Adapters) + GraphicsAdapterInfo* Adapters) { #if USE_D3D12_LOADER if (m_hD3D12Dll == NULL) diff --git a/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.hpp b/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.hpp index 91808f8f..f9d1b6df 100644 --- a/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.hpp +++ b/Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.hpp @@ -38,4 +38,7 @@ namespace Diligent DXGI_FORMAT TexFormatToDXGI_Format(TEXTURE_FORMAT TexFormat, Uint32 BindFlags = 0); TEXTURE_FORMAT DXGI_FormatToTexFormat(DXGI_FORMAT DXGIFormat); DXGI_FORMAT TypeToDXGI_Format(VALUE_TYPE ValType, Uint32 NumComponents, Bool bIsNormalized); + +GraphicsAdapterInfo DXGI_ADAPTER_DESC_To_GraphicsAdapterInfo(const DXGI_ADAPTER_DESC1& dxgiAdapterDesc); + } // namespace Diligent diff --git a/Graphics/GraphicsEngineD3DBase/include/EngineFactoryD3DBase.hpp b/Graphics/GraphicsEngineD3DBase/include/EngineFactoryD3DBase.hpp index 52948df2..2b54759b 100644 --- a/Graphics/GraphicsEngineD3DBase/include/EngineFactoryD3DBase.hpp +++ b/Graphics/GraphicsEngineD3DBase/include/EngineFactoryD3DBase.hpp @@ -49,7 +49,7 @@ public: virtual void DILIGENT_CALL_TYPE EnumerateAdapters(DIRECT3D_FEATURE_LEVEL MinFeatureLevel, Uint32& NumAdapters, - AdapterAttribs* Adapters) override + GraphicsAdapterInfo* Adapters) override { auto DXGIAdapters = FindCompatibleAdapters(MinFeatureLevel); @@ -66,13 +66,7 @@ public: auto& Attribs = Adapters[adapter]; - Attribs.AdapterType = (AdapterDesc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) ? ADAPTER_TYPE_SOFTWARE : ADAPTER_TYPE_HARDWARE; - WideCharToMultiByte(CP_ACP, 0, AdapterDesc.Description, -1, Attribs.Description, _countof(Attribs.Description), NULL, FALSE); - Attribs.DedicatedVideoMemory = AdapterDesc.DedicatedVideoMemory; - Attribs.DedicatedSystemMemory = AdapterDesc.DedicatedSystemMemory; - Attribs.SharedSystemMemory = AdapterDesc.SharedSystemMemory; - Attribs.VendorId = AdapterDesc.VendorId; - Attribs.DeviceId = AdapterDesc.DeviceId; + Attribs = DXGI_ADAPTER_DESC_To_GraphicsAdapterInfo(AdapterDesc); Attribs.NumOutputs = 0; CComPtr pOutput; diff --git a/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.hpp b/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.hpp index 738a8efe..104533c9 100644 --- a/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.hpp +++ b/Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.hpp @@ -33,7 +33,6 @@ #include #include "RenderDeviceBase.hpp" -#include "GraphicsAccessories.hpp" namespace Diligent { @@ -190,13 +189,7 @@ protected: auto hr = pdxgiAdapter->GetDesc1(&dxgiAdapterDesc); if (SUCCEEDED(hr)) { - auto& AdapterInfo = m_DeviceCaps.AdapterInfo; - - AdapterInfo.Type = (dxgiAdapterDesc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) ? ADAPTER_TYPE_SOFTWARE : ADAPTER_TYPE_HARDWARE; - AdapterInfo.Vendor = VendorIdToAdapterVendor(dxgiAdapterDesc.VendorId); - AdapterInfo.DeviceLocalMemory = dxgiAdapterDesc.DedicatedVideoMemory; - AdapterInfo.HostVisibileMemory = dxgiAdapterDesc.SharedSystemMemory; - AdapterInfo.UnifiedMemory = 0; + m_DeviceCaps.AdapterInfo = DXGI_ADAPTER_DESC_To_GraphicsAdapterInfo(dxgiAdapterDesc); } else { diff --git a/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp b/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp index 2c9ba74e..36b5fc4e 100644 --- a/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp +++ b/Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp @@ -28,6 +28,7 @@ #include "DXGITypeConversions.hpp" #include "BasicTypes.h" #include "DebugUtilities.hpp" +#include "GraphicsAccessories.hpp" namespace Diligent { @@ -453,4 +454,21 @@ TEXTURE_FORMAT DXGI_FormatToTexFormat(DXGI_FORMAT DXGIFormat) } } +GraphicsAdapterInfo DXGI_ADAPTER_DESC_To_GraphicsAdapterInfo(const DXGI_ADAPTER_DESC1& dxgiAdapterDesc) +{ + GraphicsAdapterInfo AdapterInfo; + + WideCharToMultiByte(CP_ACP, 0, dxgiAdapterDesc.Description, -1, AdapterInfo.Description, _countof(AdapterInfo.Description), NULL, FALSE); + AdapterInfo.Type = (dxgiAdapterDesc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) ? ADAPTER_TYPE_SOFTWARE : ADAPTER_TYPE_HARDWARE; + AdapterInfo.Vendor = VendorIdToAdapterVendor(dxgiAdapterDesc.VendorId); + AdapterInfo.VendorId = dxgiAdapterDesc.VendorId; + AdapterInfo.DeviceId = dxgiAdapterDesc.DeviceId; + AdapterInfo.NumOutputs = 0; + AdapterInfo.DeviceLocalMemory = dxgiAdapterDesc.DedicatedVideoMemory; + AdapterInfo.HostVisibileMemory = dxgiAdapterDesc.SharedSystemMemory; + AdapterInfo.UnifiedMemory = 0; + + return AdapterInfo; +} + } // namespace Diligent diff --git a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp index ed6c3705..99f6012d 100644 --- a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp @@ -26,6 +26,7 @@ */ #include "pch.h" +#include #include "RenderDeviceGLImpl.hpp" @@ -198,7 +199,11 @@ RenderDeviceGLImpl::RenderDeviceGLImpl(IReferenceCounters* pRefCounters, auto& AdapterInfo = m_DeviceCaps.AdapterInfo; + strncpy_s(AdapterInfo.Description, reinterpret_cast(glstrVendor.data()), _countof(AdapterInfo.Description) - 1); AdapterInfo.Type = ADAPTER_TYPE_HARDWARE; + AdapterInfo.VendorId = 0; + AdapterInfo.DeviceId = 0; + AdapterInfo.NumOutputs = 0; AdapterInfo.DeviceLocalMemory = 0; AdapterInfo.HostVisibileMemory = 0; AdapterInfo.UnifiedMemory = 0; diff --git a/Graphics/GraphicsEngineVulkan/src/RenderDeviceVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/RenderDeviceVkImpl.cpp index 87bb60e2..246811be 100644 --- a/Graphics/GraphicsEngineVulkan/src/RenderDeviceVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/RenderDeviceVkImpl.cpp @@ -26,6 +26,8 @@ */ #include "pch.h" +#include + #include "RenderDeviceVkImpl.hpp" #include "PipelineStateVkImpl.hpp" #include "ShaderVkImpl.hpp" @@ -160,8 +162,12 @@ RenderDeviceVkImpl::RenderDeviceVkImpl(IReferenceCounters* const auto& DeviceProps = m_PhysicalDevice->GetProperties(); - AdapterInfo.Vendor = VendorIdToAdapterVendor(DeviceProps.vendorID); + strncpy_s(AdapterInfo.Description, DeviceProps.deviceName, _countof(AdapterInfo.Description) - 1); AdapterInfo.Type = ADAPTER_TYPE_HARDWARE; + AdapterInfo.Vendor = VendorIdToAdapterVendor(DeviceProps.vendorID); + AdapterInfo.VendorId = DeviceProps.vendorID; + AdapterInfo.DeviceId = DeviceProps.deviceID; + AdapterInfo.NumOutputs = 0; AdapterInfo.DeviceLocalMemory = 0; AdapterInfo.HostVisibileMemory = 0; AdapterInfo.UnifiedMemory = 0; -- cgit v1.2.3