summaryrefslogtreecommitdiffstats
path: root/Graphics
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-09-17 03:19:06 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-09-17 03:19:06 +0000
commitc4e90c3f0025628c0951f368d0d4b54f13a87b3d (patch)
treecae1b894626f4a60f82352f4e66b041342d79d09 /Graphics
parentD3D12 backend: implemented proper detection of DXIL bytecode (diff)
downloadDiligentCore-c4e90c3f0025628c0951f368d0d4b54f13a87b3d.tar.gz
DiligentCore-c4e90c3f0025628c0951f368d0d4b54f13a87b3d.zip
Removed AdapterAttribs struct that was a duplicate of GraphicsAdapterInfo. Moved few members to GraphicsAdapterInfo
Diffstat (limited to 'Graphics')
-rw-r--r--Graphics/GraphicsEngine/interface/APIInfo.h2
-rw-r--r--Graphics/GraphicsEngine/interface/GraphicsTypes.h65
-rw-r--r--Graphics/GraphicsEngine/src/APIInfo.cpp2
-rw-r--r--Graphics/GraphicsEngineD3D11/interface/EngineFactoryD3D11.h2
-rw-r--r--Graphics/GraphicsEngineD3D12/interface/EngineFactoryD3D12.h2
-rw-r--r--Graphics/GraphicsEngineD3D12/src/EngineFactoryD3D12.cpp4
-rw-r--r--Graphics/GraphicsEngineD3DBase/include/DXGITypeConversions.hpp3
-rw-r--r--Graphics/GraphicsEngineD3DBase/include/EngineFactoryD3DBase.hpp10
-rw-r--r--Graphics/GraphicsEngineD3DBase/include/RenderDeviceD3DBase.hpp9
-rw-r--r--Graphics/GraphicsEngineD3DBase/src/DXGITypeConversions.cpp18
-rw-r--r--Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp5
-rw-r--r--Graphics/GraphicsEngineVulkan/src/RenderDeviceVkImpl.cpp8
12 files changed, 72 insertions, 58 deletions
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 <a href = "https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb173066(v=vs.85)">DXGI_MODE_SCALING enumeration on MSDN</a>,
@@ -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<IDXGIOutput> 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 <dxgi.h>
#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 <string.h>
#include "RenderDeviceGLImpl.hpp"
@@ -198,7 +199,11 @@ RenderDeviceGLImpl::RenderDeviceGLImpl(IReferenceCounters* pRefCounters,
auto& AdapterInfo = m_DeviceCaps.AdapterInfo;
+ strncpy_s(AdapterInfo.Description, reinterpret_cast<const char*>(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 <string.h>
+
#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;