summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngine
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-02-08 19:56:56 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-03-19 00:31:34 +0000
commit9220e5a6b5e8449786acb996204b140305df94fc (patch)
treeb1977c0108e1f6804ff5e9ba7ebe173a8c09f5e1 /Graphics/GraphicsEngine
parentReworked PipelineResourceSignatureTest.VulkanDescriptorIndexing to validate r... (diff)
parentUpdated readme (diff)
downloadDiligentCore-9220e5a6b5e8449786acb996204b140305df94fc.tar.gz
DiligentCore-9220e5a6b5e8449786acb996204b140305df94fc.zip
Merged master
Diffstat (limited to 'Graphics/GraphicsEngine')
-rw-r--r--Graphics/GraphicsEngine/include/StateObjectsRegistry.hpp1
-rw-r--r--Graphics/GraphicsEngine/interface/APIInfo.h2
-rw-r--r--Graphics/GraphicsEngine/interface/DeviceContext.h14
-rw-r--r--Graphics/GraphicsEngine/interface/GraphicsTypes.h13
4 files changed, 22 insertions, 8 deletions
diff --git a/Graphics/GraphicsEngine/include/StateObjectsRegistry.hpp b/Graphics/GraphicsEngine/include/StateObjectsRegistry.hpp
index a2a7cad1..937e6908 100644
--- a/Graphics/GraphicsEngine/include/StateObjectsRegistry.hpp
+++ b/Graphics/GraphicsEngine/include/StateObjectsRegistry.hpp
@@ -66,6 +66,7 @@ public:
static constexpr int DeletedObjectsToPurge = 32;
StateObjectsRegistry(IMemoryAllocator& RawAllocator, const Char* RegistryName) :
+ m_NumDeletedObjects{0},
m_DescToObjHashMap(STD_ALLOCATOR_RAW_MEM(HashMapElem, RawAllocator, "Allocator for unordered_map<ResourceDescType, RefCntWeakPtr<IDeviceObject> >")),
m_RegistryName{RegistryName}
{}
diff --git a/Graphics/GraphicsEngine/interface/APIInfo.h b/Graphics/GraphicsEngine/interface/APIInfo.h
index cd2be5a4..f268ff63 100644
--- a/Graphics/GraphicsEngine/interface/APIInfo.h
+++ b/Graphics/GraphicsEngine/interface/APIInfo.h
@@ -30,7 +30,7 @@
/// \file
/// Diligent API information
-#define DILIGENT_API_VERSION 240081
+#define DILIGENT_API_VERSION 240082
#include "../../../Primitives/interface/BasicTypes.h"
diff --git a/Graphics/GraphicsEngine/interface/DeviceContext.h b/Graphics/GraphicsEngine/interface/DeviceContext.h
index 2f9408bd..411103d7 100644
--- a/Graphics/GraphicsEngine/interface/DeviceContext.h
+++ b/Graphics/GraphicsEngine/interface/DeviceContext.h
@@ -1836,12 +1836,14 @@ DILIGENT_BEGIN_INTERFACE(IDeviceContext, IObject)
ICommandList** ppCommandList) PURE;
- /// Executes recorded commands in a command list.
+ /// Submits an array of recorded command lists for execution.
- /// \param [in] pCommandList - Pointer to the command list to executre.
- /// \remarks After command list is executed, it is no longer valid and should be released.
- VIRTUAL void METHOD(ExecuteCommandList)(THIS_
- ICommandList* pCommandList) PURE;
+ /// \param [in] NumCommandLists - The number of command lists to execute.
+ /// \param [in] ppCommandLists - Pointer to the array of NumCommandLists command lists to execute.
+ /// \remarks After a command list is executed, it is no longer valid and must be released.
+ VIRTUAL void METHOD(ExecuteCommandLists)(THIS_
+ Uint32 NumCommandLists,
+ ICommandList* const* ppCommandLists) PURE;
/// Tells the GPU to set a fence to a specified value after all previous work has completed.
@@ -2231,7 +2233,7 @@ DILIGENT_END_INTERFACE
# define IDeviceContext_ClearDepthStencil(This, ...) CALL_IFACE_METHOD(DeviceContext, ClearDepthStencil, This, __VA_ARGS__)
# define IDeviceContext_ClearRenderTarget(This, ...) CALL_IFACE_METHOD(DeviceContext, ClearRenderTarget, This, __VA_ARGS__)
# define IDeviceContext_FinishCommandList(This, ...) CALL_IFACE_METHOD(DeviceContext, FinishCommandList, This, __VA_ARGS__)
-# define IDeviceContext_ExecuteCommandList(This, ...) CALL_IFACE_METHOD(DeviceContext, ExecuteCommandList, This, __VA_ARGS__)
+# define IDeviceContext_ExecuteCommandLists(This, ...) CALL_IFACE_METHOD(DeviceContext, ExecuteCommandLists, This, __VA_ARGS__)
# define IDeviceContext_SignalFence(This, ...) CALL_IFACE_METHOD(DeviceContext, SignalFence, This, __VA_ARGS__)
# define IDeviceContext_WaitForFence(This, ...) CALL_IFACE_METHOD(DeviceContext, WaitForFence, This, __VA_ARGS__)
# define IDeviceContext_WaitForIdle(This, ...) CALL_IFACE_METHOD(DeviceContext, WaitForIdle, This, __VA_ARGS__)
diff --git a/Graphics/GraphicsEngine/interface/GraphicsTypes.h b/Graphics/GraphicsEngine/interface/GraphicsTypes.h
index 2bc7cab1..57c484db 100644
--- a/Graphics/GraphicsEngine/interface/GraphicsTypes.h
+++ b/Graphics/GraphicsEngine/interface/GraphicsTypes.h
@@ -1521,7 +1521,18 @@ DILIGENT_TYPED_ENUM(DEVICE_FEATURE_STATE, Uint8)
/// Describes the device features
struct DeviceFeatures
{
- /// Indicates if device supports separable programs
+ /// Indicates if device supports separable shader programs.
+
+ /// \remarks The only case when separable programs are not supported is when the engine is
+ /// initialized in GLES3.0 mode. In GLES3.1+ and in all other backends, the
+ /// feature is always enabled.
+ /// In OpenGL backend, it may forcibly be disabled using ForceNonSeparablePrograms
+ /// member of EngineGLCreateInfo struct (this is primarily used for testing).
+ /// The are two main limitations when separable programs are disabled:
+ /// - If the same shader variable is present in multiple shader stages,
+ /// it will always be shared between all stages and different resources
+ /// can't be bound to different stages.
+ /// - Shader resource queries will be also disabled.
DEVICE_FEATURE_STATE SeparablePrograms DEFAULT_INITIALIZER(DEVICE_FEATURE_STATE_DISABLED);
/// Indicates if device supports resource queries from shader objects.