summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-03-04 20:46:21 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-03-19 00:38:15 +0000
commit4f5a4499cf0eee3761788eb6a422cd25e02ace40 (patch)
treea4caf790bcb35483de2eaa56b7735230a0f1b7a5 /Graphics/GraphicsEngineVulkan
parentMinor updates to ValidatePipelineResourceSignatureDesc (diff)
downloadDiligentCore-4f5a4499cf0eee3761788eb6a422cd25e02ace40.tar.gz
DiligentCore-4f5a4499cf0eee3761788eb6a422cd25e02ace40.zip
Refactored passing template arguments to base classes
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/CMakeLists.txt1
-rw-r--r--Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/BufferViewVkImpl.hpp7
-rw-r--r--Graphics/GraphicsEngineVulkan/include/BufferVkImpl.hpp7
-rw-r--r--Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp18
-rw-r--r--Graphics/GraphicsEngineVulkan/include/EngineVkImplTraits.hpp122
-rw-r--r--Graphics/GraphicsEngineVulkan/include/FenceVkImpl.hpp6
-rw-r--r--Graphics/GraphicsEngineVulkan/include/FramebufferVkImpl.hpp6
-rw-r--r--Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp5
-rw-r--r--Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/QueryVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/RenderDeviceVkImpl.hpp48
-rw-r--r--Graphics/GraphicsEngineVulkan/include/RenderPassVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/SamplerVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/ShaderBindingTableVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/ShaderVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/TextureViewVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/TextureVkImpl.hpp6
-rw-r--r--Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp4
20 files changed, 162 insertions, 104 deletions
diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt
index ff540add..61fe931e 100644
--- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt
+++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt
@@ -10,6 +10,7 @@ set(INCLUDE
include/CommandQueueVkImpl.hpp
include/DescriptorPoolManager.hpp
include/DeviceContextVkImpl.hpp
+ include/EngineVkImplTraits.hpp
include/FenceVkImpl.hpp
include/FramebufferVkImpl.hpp
include/VulkanDynamicHeap.hpp
diff --git a/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp
index ea990054..469aef6d 100644
--- a/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/BottomLevelASVkImpl.hpp
@@ -39,10 +39,10 @@
namespace Diligent
{
-class BottomLevelASVkImpl final : public BottomLevelASBase<IBottomLevelASVk, RenderDeviceVkImpl>
+class BottomLevelASVkImpl final : public BottomLevelASBase<EngineVkImplTraits>
{
public:
- using TBottomLevelASBase = BottomLevelASBase<IBottomLevelASVk, RenderDeviceVkImpl>;
+ using TBottomLevelASBase = BottomLevelASBase<EngineVkImplTraits>;
BottomLevelASVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pRenderDeviceVk,
diff --git a/Graphics/GraphicsEngineVulkan/include/BufferViewVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/BufferViewVkImpl.hpp
index bbba917f..15091572 100644
--- a/Graphics/GraphicsEngineVulkan/include/BufferViewVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/BufferViewVkImpl.hpp
@@ -39,14 +39,11 @@
namespace Diligent
{
-class FixedBlockMemoryAllocator;
-class BufferVkImpl;
-
/// Buffer view implementation in Vulkan backend.
-class BufferViewVkImpl final : public BufferViewBase<IBufferViewVk, RenderDeviceVkImpl>
+class BufferViewVkImpl final : public BufferViewBase<EngineVkImplTraits>
{
public:
- using TBufferViewBase = BufferViewBase<IBufferViewVk, RenderDeviceVkImpl>;
+ using TBufferViewBase = BufferViewBase<EngineVkImplTraits>;
BufferViewVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pDevice,
diff --git a/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.hpp
index ca50a35b..caffa62f 100644
--- a/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/BufferVkImpl.hpp
@@ -43,14 +43,11 @@
namespace Diligent
{
-class FixedBlockMemoryAllocator;
-class DeviceContextVkImpl;
-
/// Buffer object implementation in Vulkan backend.
-class BufferVkImpl final : public BufferBase<IBufferVk, RenderDeviceVkImpl, BufferViewVkImpl, FixedBlockMemoryAllocator>
+class BufferVkImpl final : public BufferBase<EngineVkImplTraits>
{
public:
- using TBufferBase = BufferBase<IBufferVk, RenderDeviceVkImpl, BufferViewVkImpl, FixedBlockMemoryAllocator>;
+ using TBufferBase = BufferBase<EngineVkImplTraits>;
BufferVkImpl(IReferenceCounters* pRefCounters,
FixedBlockMemoryAllocator& BuffViewObjMemAllocator,
diff --git a/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp
index e32405a9..ff0e27de 100644
--- a/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/DeviceContextVkImpl.hpp
@@ -61,25 +61,11 @@
namespace Diligent
{
-struct DeviceContextVkImplTraits
-{
- using BufferType = BufferVkImpl;
- using TextureType = TextureVkImpl;
- using PipelineStateType = PipelineStateVkImpl;
- using DeviceType = RenderDeviceVkImpl;
- using ICommandQueueType = ICommandQueueVk;
- using QueryType = QueryVkImpl;
- using FramebufferType = FramebufferVkImpl;
- using RenderPassType = RenderPassVkImpl;
- using BottomLevelASType = BottomLevelASVkImpl;
- using TopLevelASType = TopLevelASVkImpl;
-};
-
/// Device context implementation in Vulkan backend.
-class DeviceContextVkImpl final : public DeviceContextNextGenBase<IDeviceContextVk, DeviceContextVkImplTraits>
+class DeviceContextVkImpl final : public DeviceContextNextGenBase<EngineVkImplTraits>
{
public:
- using TDeviceContextBase = DeviceContextNextGenBase<IDeviceContextVk, DeviceContextVkImplTraits>;
+ using TDeviceContextBase = DeviceContextNextGenBase<EngineVkImplTraits>;
DeviceContextVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pDevice,
diff --git a/Graphics/GraphicsEngineVulkan/include/EngineVkImplTraits.hpp b/Graphics/GraphicsEngineVulkan/include/EngineVkImplTraits.hpp
new file mode 100644
index 00000000..aace213f
--- /dev/null
+++ b/Graphics/GraphicsEngineVulkan/include/EngineVkImplTraits.hpp
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2019-2021 Diligent Graphics LLC
+ * Copyright 2015-2019 Egor Yusov
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * In no event and under no legal theory, whether in tort (including negligence),
+ * contract, or otherwise, unless required by applicable law (such as deliberate
+ * and grossly negligent acts) or agreed to in writing, shall any Contributor be
+ * liable for any damages, including any direct, indirect, special, incidental,
+ * or consequential damages of any character arising as a result of this License or
+ * out of the use or inability to use the software (including but not limited to damages
+ * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
+ * all other commercial damages or losses), even if such Contributor has been advised
+ * of the possibility of such damages.
+ */
+
+#pragma once
+
+/// \file
+/// Declaration of Diligent::EngineVkImplTraits struct
+
+#include "RenderDeviceVk.h"
+#include "PipelineStateVk.h"
+#include "ShaderResourceBindingVk.h"
+#include "BufferVk.h"
+#include "BufferViewVk.h"
+#include "TextureVk.h"
+#include "TextureViewVk.h"
+#include "ShaderVk.h"
+#include "SamplerVk.h"
+#include "FenceVk.h"
+#include "QueryVk.h"
+#include "RenderPassVk.h"
+#include "FramebufferVk.h"
+#include "BottomLevelASVk.h"
+#include "TopLevelASVk.h"
+#include "ShaderBindingTableVk.h"
+#include "PipelineResourceSignature.h"
+#include "CommandQueueVk.h"
+#include "DeviceContextVk.h"
+
+namespace Diligent
+{
+
+class RenderDeviceVkImpl;
+class DeviceContextVkImpl;
+class PipelineStateVkImpl;
+class ShaderResourceBindingVkImpl;
+class BufferVkImpl;
+class BufferViewVkImpl;
+class TextureVkImpl;
+class TextureViewVkImpl;
+class ShaderVkImpl;
+class SamplerVkImpl;
+class FenceVkImpl;
+class QueryVkImpl;
+class RenderPassVkImpl;
+class FramebufferVkImpl;
+class BottomLevelASVkImpl;
+class TopLevelASVkImpl;
+class ShaderBindingTableVkImpl;
+class PipelineResourceSignatureVkImpl;
+
+class FixedBlockMemoryAllocator;
+
+struct EngineVkImplTraits
+{
+ using RenderDeviceInterface = IRenderDeviceVk;
+ using DeviceContextInterface = IDeviceContextVk;
+ using PipelineStateInterface = IPipelineStateVk;
+ using ShaderResourceBindingInterface = IShaderResourceBindingVk;
+ using BufferInterface = IBufferVk;
+ using BufferViewInterface = IBufferViewVk;
+ using TextureInterface = ITextureVk;
+ using TextureViewInterface = ITextureViewVk;
+ using ShaderInterface = IShaderVk;
+ using SamplerInterface = ISamplerVk;
+ using FenceInterface = IFenceVk;
+ using QueryInterface = IQueryVk;
+ using RenderPassInterface = IRenderPassVk;
+ using FramebufferInterface = IFramebufferVk;
+ using BottomLevelASInterface = IBottomLevelASVk;
+ using TopLevelASInterface = ITopLevelASVk;
+ using ShaderBindingTableInterface = IShaderBindingTableVk;
+ using PipelineResourceSignatureInterface = IPipelineResourceSignature;
+ using CommandQueueInterface = ICommandQueueVk;
+
+ using RenderDeviceImplType = RenderDeviceVkImpl;
+ using DeviceContextImplType = DeviceContextVkImpl;
+ using PipelineStateImplType = PipelineStateVkImpl;
+ using ShaderResourceBindingImplType = ShaderResourceBindingVkImpl;
+ using BufferImplType = BufferVkImpl;
+ using BufferViewImplType = BufferViewVkImpl;
+ using TextureImplType = TextureVkImpl;
+ using TextureViewImplType = TextureViewVkImpl;
+ using ShaderImplType = ShaderVkImpl;
+ using SamplerImplType = SamplerVkImpl;
+ using FenceImplType = FenceVkImpl;
+ using QueryImplType = QueryVkImpl;
+ using RenderPassImplType = RenderPassVkImpl;
+ using FramebufferImplType = FramebufferVkImpl;
+ using BottomLevelASImplType = BottomLevelASVkImpl;
+ using TopLevelASImplType = TopLevelASVkImpl;
+ using ShaderBindingTableImplType = ShaderBindingTableVkImpl;
+ using PipelineResourceSignatureImplType = PipelineResourceSignatureVkImpl;
+
+ using BuffViewObjAllocatorType = FixedBlockMemoryAllocator;
+ using TexViewObjAllocatorType = FixedBlockMemoryAllocator;
+};
+
+} // namespace Diligent
diff --git a/Graphics/GraphicsEngineVulkan/include/FenceVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/FenceVkImpl.hpp
index 303fe6cf..a3a81edc 100644
--- a/Graphics/GraphicsEngineVulkan/include/FenceVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/FenceVkImpl.hpp
@@ -41,13 +41,11 @@
namespace Diligent
{
-class FixedBlockMemoryAllocator;
-
/// Fence implementation in Vulkan backend.
-class FenceVkImpl final : public FenceBase<IFenceVk, RenderDeviceVkImpl>
+class FenceVkImpl final : public FenceBase<EngineVkImplTraits>
{
public:
- using TFenceBase = FenceBase<IFenceVk, RenderDeviceVkImpl>;
+ using TFenceBase = FenceBase<EngineVkImplTraits>;
FenceVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pRendeDeviceVkImpl,
diff --git a/Graphics/GraphicsEngineVulkan/include/FramebufferVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/FramebufferVkImpl.hpp
index de3ec01c..6877fd3d 100644
--- a/Graphics/GraphicsEngineVulkan/include/FramebufferVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/FramebufferVkImpl.hpp
@@ -38,13 +38,11 @@
namespace Diligent
{
-class FixedBlockMemoryAllocator;
-
/// Framebuffer implementation in Vulkan backend.
-class FramebufferVkImpl final : public FramebufferBase<IFramebufferVk, RenderDeviceVkImpl>
+class FramebufferVkImpl final : public FramebufferBase<EngineVkImplTraits>
{
public:
- using TFramebufferBase = FramebufferBase<IFramebufferVk, RenderDeviceVkImpl>;
+ using TFramebufferBase = FramebufferBase<EngineVkImplTraits>;
FramebufferVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pDevice,
diff --git a/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp
index 1fb11c53..f9d5d5ec 100644
--- a/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp
@@ -32,6 +32,7 @@
#include <array>
+#include "EngineVkImplTraits.hpp"
#include "PipelineResourceSignatureBase.hpp"
#include "VulkanUtilities/VulkanObjectWrappers.hpp"
#include "SRBMemoryAllocator.hpp"
@@ -66,10 +67,10 @@ enum class DescriptorType : Uint8
};
/// Implementation of the Diligent::PipelineResourceSignatureVkImpl class
-class PipelineResourceSignatureVkImpl final : public PipelineResourceSignatureBase<IPipelineResourceSignature, RenderDeviceVkImpl>
+class PipelineResourceSignatureVkImpl final : public PipelineResourceSignatureBase<EngineVkImplTraits>
{
public:
- using TPipelineResourceSignatureBase = PipelineResourceSignatureBase<IPipelineResourceSignature, RenderDeviceVkImpl>;
+ using TPipelineResourceSignatureBase = PipelineResourceSignatureBase<EngineVkImplTraits>;
// Descriptor set identifier (this is not the descriptor set index in the set layout!)
enum DESCRIPTOR_SET_ID : size_t
diff --git a/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.hpp
index 80d1a46b..d2f289af 100644
--- a/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.hpp
@@ -54,10 +54,10 @@ class ShaderVkImpl;
class ShaderResourceBindingVkImpl;
/// Pipeline state object implementation in Vulkan backend.
-class PipelineStateVkImpl final : public PipelineStateBase<IPipelineStateVk, RenderDeviceVkImpl>
+class PipelineStateVkImpl final : public PipelineStateBase<EngineVkImplTraits>
{
public:
- using TPipelineStateBase = PipelineStateBase<IPipelineStateVk, RenderDeviceVkImpl>;
+ using TPipelineStateBase = PipelineStateBase<EngineVkImplTraits>;
PipelineStateVkImpl(IReferenceCounters* pRefCounters, RenderDeviceVkImpl* pDeviceVk, const GraphicsPipelineStateCreateInfo& CreateInfo);
PipelineStateVkImpl(IReferenceCounters* pRefCounters, RenderDeviceVkImpl* pDeviceVk, const ComputePipelineStateCreateInfo& CreateInfo);
diff --git a/Graphics/GraphicsEngineVulkan/include/QueryVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/QueryVkImpl.hpp
index 718628e6..cc3919c9 100644
--- a/Graphics/GraphicsEngineVulkan/include/QueryVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/QueryVkImpl.hpp
@@ -43,10 +43,10 @@ namespace Diligent
class FixedBlockMemoryAllocator;
/// Query implementation in Vulkan backend.
-class QueryVkImpl final : public QueryBase<IQueryVk, RenderDeviceVkImpl>
+class QueryVkImpl final : public QueryBase<EngineVkImplTraits>
{
public:
- using TQueryBase = QueryBase<IQueryVk, RenderDeviceVkImpl>;
+ using TQueryBase = QueryBase<EngineVkImplTraits>;
QueryVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pRendeDeviceVkImpl,
diff --git a/Graphics/GraphicsEngineVulkan/include/RenderDeviceVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/RenderDeviceVkImpl.hpp
index 7e003fca..71294e24 100644
--- a/Graphics/GraphicsEngineVulkan/include/RenderDeviceVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/RenderDeviceVkImpl.hpp
@@ -31,7 +31,8 @@
/// Declaration of Diligent::RenderDeviceVkImpl class
#include <memory>
-#include "RenderDeviceVk.h"
+#include "EngineVkImplTraits.hpp"
+
#include "RenderDeviceBase.hpp"
#include "RenderDeviceNextGenBase.hpp"
#include "DescriptorPoolManager.hpp"
@@ -54,52 +55,11 @@
namespace Diligent
{
-class RenderDeviceVkImpl;
-class PipelineStateVkImpl;
-class ShaderResourceBindingVkImpl;
-class BufferVkImpl;
-class BufferViewVkImpl;
-class TextureVkImpl;
-class TextureViewVkImpl;
-class ShaderVkImpl;
-class SamplerVkImpl;
-class FenceVkImpl;
-class QueryVkImpl;
-class RenderPassVkImpl;
-class FramebufferVkImpl;
-class BottomLevelASVkImpl;
-class TopLevelASVkImpl;
-class ShaderBindingTableVkImpl;
-class PipelineResourceSignatureVkImpl;
-
-struct RenderDeviceVkImplTraits
-{
- using BaseInterface = IRenderDeviceVk;
-
- using RenderDeviceImplType = RenderDeviceVkImpl;
- using PipelineStateImplType = PipelineStateVkImpl;
- using ShaderResourceBindingImplType = ShaderResourceBindingVkImpl;
- using BufferImplType = BufferVkImpl;
- using BufferViewImplType = BufferViewVkImpl;
- using TextureImplType = TextureVkImpl;
- using TextureViewImplType = TextureViewVkImpl;
- using ShaderImplType = ShaderVkImpl;
- using SamplerImplType = SamplerVkImpl;
- using FenceImplType = FenceVkImpl;
- using QueryImplType = QueryVkImpl;
- using RenderPassImplType = RenderPassVkImpl;
- using FramebufferImplType = FramebufferVkImpl;
- using BottomLevelASImplType = BottomLevelASVkImpl;
- using TopLevelASImplType = TopLevelASVkImpl;
- using ShaderBindingTableImplType = ShaderBindingTableVkImpl;
- using PipelineResourceSignatureImplType = PipelineResourceSignatureVkImpl;
-};
-
/// Render device implementation in Vulkan backend.
-class RenderDeviceVkImpl final : public RenderDeviceNextGenBase<RenderDeviceBase<RenderDeviceVkImplTraits>, ICommandQueueVk>
+class RenderDeviceVkImpl final : public RenderDeviceNextGenBase<RenderDeviceBase<EngineVkImplTraits>, ICommandQueueVk>
{
public:
- using TRenderDeviceBase = RenderDeviceNextGenBase<RenderDeviceBase<RenderDeviceVkImplTraits>, ICommandQueueVk>;
+ using TRenderDeviceBase = RenderDeviceNextGenBase<RenderDeviceBase<EngineVkImplTraits>, ICommandQueueVk>;
RenderDeviceVkImpl(IReferenceCounters* pRefCounters,
IMemoryAllocator& RawMemAllocator,
diff --git a/Graphics/GraphicsEngineVulkan/include/RenderPassVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/RenderPassVkImpl.hpp
index ecad1df0..d155a0cd 100644
--- a/Graphics/GraphicsEngineVulkan/include/RenderPassVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/RenderPassVkImpl.hpp
@@ -42,10 +42,10 @@ namespace Diligent
class FixedBlockMemoryAllocator;
/// Render pass implementation in Vulkan backend.
-class RenderPassVkImpl final : public RenderPassBase<IRenderPassVk, RenderDeviceVkImpl>
+class RenderPassVkImpl final : public RenderPassBase<EngineVkImplTraits>
{
public:
- using TRenderPassBase = RenderPassBase<IRenderPassVk, RenderDeviceVkImpl>;
+ using TRenderPassBase = RenderPassBase<EngineVkImplTraits>;
RenderPassVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pDevice,
diff --git a/Graphics/GraphicsEngineVulkan/include/SamplerVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/SamplerVkImpl.hpp
index 24f1af24..5821e02e 100644
--- a/Graphics/GraphicsEngineVulkan/include/SamplerVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/SamplerVkImpl.hpp
@@ -42,10 +42,10 @@ namespace Diligent
class FixedBlockMemoryAllocator;
/// Sampler object object implementation in Vulkan backend.
-class SamplerVkImpl final : public SamplerBase<ISamplerVk, RenderDeviceVkImpl>
+class SamplerVkImpl final : public SamplerBase<EngineVkImplTraits>
{
public:
- using TSamplerBase = SamplerBase<ISamplerVk, RenderDeviceVkImpl>;
+ using TSamplerBase = SamplerBase<EngineVkImplTraits>;
SamplerVkImpl(IReferenceCounters* pRefCounters, RenderDeviceVkImpl* pRenderDeviceVk, const SamplerDesc& SamplerDesc);
~SamplerVkImpl();
diff --git a/Graphics/GraphicsEngineVulkan/include/ShaderBindingTableVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/ShaderBindingTableVkImpl.hpp
index 375163fa..5291f857 100644
--- a/Graphics/GraphicsEngineVulkan/include/ShaderBindingTableVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/ShaderBindingTableVkImpl.hpp
@@ -41,10 +41,10 @@
namespace Diligent
{
-class ShaderBindingTableVkImpl final : public ShaderBindingTableBase<IShaderBindingTableVk, PipelineStateVkImpl, TopLevelASVkImpl, RenderDeviceVkImpl>
+class ShaderBindingTableVkImpl final : public ShaderBindingTableBase<EngineVkImplTraits>
{
public:
- using TShaderBindingTableBase = ShaderBindingTableBase<IShaderBindingTableVk, PipelineStateVkImpl, TopLevelASVkImpl, RenderDeviceVkImpl>;
+ using TShaderBindingTableBase = ShaderBindingTableBase<EngineVkImplTraits>;
ShaderBindingTableVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pRenderDeviceVk,
diff --git a/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp
index c0e012a2..e77da610 100644
--- a/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp
@@ -45,10 +45,10 @@ class PipelineResourceSignatureVkImpl;
/// Implementation of the Diligent::IShaderResourceBindingVk interface
// sizeof(ShaderResourceBindingVkImpl) == 64 (x64, msvc, Release)
-class ShaderResourceBindingVkImpl final : public ShaderResourceBindingBase<IShaderResourceBindingVk, PipelineResourceSignatureVkImpl>
+class ShaderResourceBindingVkImpl final : public ShaderResourceBindingBase<EngineVkImplTraits>
{
public:
- using TBase = ShaderResourceBindingBase<IShaderResourceBindingVk, PipelineResourceSignatureVkImpl>;
+ using TBase = ShaderResourceBindingBase<EngineVkImplTraits>;
ShaderResourceBindingVkImpl(IReferenceCounters* pRefCounters,
PipelineResourceSignatureVkImpl* pPRS);
diff --git a/Graphics/GraphicsEngineVulkan/include/ShaderVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/ShaderVkImpl.hpp
index 804a1c84..f8b63b95 100644
--- a/Graphics/GraphicsEngineVulkan/include/ShaderVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/ShaderVkImpl.hpp
@@ -43,10 +43,10 @@ class ResourceMapping;
class FixedBlockMemoryAllocator;
/// Shader object object implementation in Vulkan backend.
-class ShaderVkImpl final : public ShaderBase<IShaderVk, RenderDeviceVkImpl>
+class ShaderVkImpl final : public ShaderBase<EngineVkImplTraits>
{
public:
- using TShaderBase = ShaderBase<IShaderVk, RenderDeviceVkImpl>;
+ using TShaderBase = ShaderBase<EngineVkImplTraits>;
ShaderVkImpl(IReferenceCounters* pRefCounters, RenderDeviceVkImpl* pRenderDeviceVk, const ShaderCreateInfo& CreationAttribs);
~ShaderVkImpl();
diff --git a/Graphics/GraphicsEngineVulkan/include/TextureViewVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/TextureViewVkImpl.hpp
index c1feb1b9..67806c8b 100644
--- a/Graphics/GraphicsEngineVulkan/include/TextureViewVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/TextureViewVkImpl.hpp
@@ -42,10 +42,10 @@ namespace Diligent
class FixedBlockMemoryAllocator;
/// Texture view implementation in Vulkan backend.
-class TextureViewVkImpl final : public TextureViewBase<ITextureViewVk, RenderDeviceVkImpl>
+class TextureViewVkImpl final : public TextureViewBase<EngineVkImplTraits>
{
public:
- using TTextureViewBase = TextureViewBase<ITextureViewVk, RenderDeviceVkImpl>;
+ using TTextureViewBase = TextureViewBase<EngineVkImplTraits>;
TextureViewVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pDevice,
diff --git a/Graphics/GraphicsEngineVulkan/include/TextureVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/TextureVkImpl.hpp
index f9958832..9f5cfb84 100644
--- a/Graphics/GraphicsEngineVulkan/include/TextureVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/TextureVkImpl.hpp
@@ -40,13 +40,11 @@
namespace Diligent
{
-class FixedBlockMemoryAllocator;
-
/// Texture object implementation in Vulkan backend.
-class TextureVkImpl final : public TextureBase<ITextureVk, RenderDeviceVkImpl, TextureViewVkImpl, FixedBlockMemoryAllocator>
+class TextureVkImpl final : public TextureBase<EngineVkImplTraits>
{
public:
- using TTextureBase = TextureBase<ITextureVk, RenderDeviceVkImpl, TextureViewVkImpl, FixedBlockMemoryAllocator>;
+ using TTextureBase = TextureBase<EngineVkImplTraits>;
using ViewImplType = TextureViewVkImpl;
// Creates a new Vk resource
diff --git a/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp
index deba84cc..7f34104d 100644
--- a/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp
+++ b/Graphics/GraphicsEngineVulkan/include/TopLevelASVkImpl.hpp
@@ -40,10 +40,10 @@
namespace Diligent
{
-class TopLevelASVkImpl final : public TopLevelASBase<ITopLevelASVk, BottomLevelASVkImpl, RenderDeviceVkImpl>
+class TopLevelASVkImpl final : public TopLevelASBase<EngineVkImplTraits>
{
public:
- using TTopLevelASBase = TopLevelASBase<ITopLevelASVk, BottomLevelASVkImpl, RenderDeviceVkImpl>;
+ using TTopLevelASBase = TopLevelASBase<EngineVkImplTraits>;
TopLevelASVkImpl(IReferenceCounters* pRefCounters,
RenderDeviceVkImpl* pRenderDeviceVk,