updated vulkan device

This commit is contained in:
turanszkij
2018-03-04 21:47:32 +00:00
parent e50238a8f6
commit 4c32ee1c3d
3 changed files with 469 additions and 2 deletions
+438 -2
View File
@@ -216,6 +216,324 @@ namespace wiGraphicsTypes
}
// Converters:
inline VkFormat _ConvertFormat(FORMAT value)
{
// _TYPELESS is converted to _UINT or _FLOAT or _UNORM in that order depending on availability!
// X channel is converted to regular missing channel (eg. FORMAT_B8G8R8X8_UNORM -> VK_FORMAT_B8G8R8A8_UNORM)
switch (value)
{
case FORMAT_UNKNOWN:
return VK_FORMAT_UNDEFINED;
break;
case FORMAT_R32G32B32A32_TYPELESS:
return VK_FORMAT_R32G32B32A32_UINT;
break;
case FORMAT_R32G32B32A32_FLOAT:
return VK_FORMAT_R32G32B32A32_SFLOAT;
break;
case FORMAT_R32G32B32A32_UINT:
return VK_FORMAT_R32G32B32A32_UINT;
break;
case FORMAT_R32G32B32A32_SINT:
return VK_FORMAT_R32G32B32A32_SINT;
break;
case FORMAT_R32G32B32_TYPELESS:
return VK_FORMAT_R32G32B32_UINT;
break;
case FORMAT_R32G32B32_FLOAT:
return VK_FORMAT_R32G32B32_SFLOAT;
break;
case FORMAT_R32G32B32_UINT:
return VK_FORMAT_R32G32B32_UINT;
break;
case FORMAT_R32G32B32_SINT:
return VK_FORMAT_R32G32B32_SINT;
break;
case FORMAT_R16G16B16A16_TYPELESS:
return VK_FORMAT_R16G16B16A16_UINT;
break;
case FORMAT_R16G16B16A16_FLOAT:
return VK_FORMAT_R16G16B16A16_SFLOAT;
break;
case FORMAT_R16G16B16A16_UNORM:
return VK_FORMAT_R16G16B16A16_UNORM;
break;
case FORMAT_R16G16B16A16_UINT:
return VK_FORMAT_R16G16B16A16_UINT;
break;
case FORMAT_R16G16B16A16_SNORM:
return VK_FORMAT_R16G16B16A16_SNORM;
break;
case FORMAT_R16G16B16A16_SINT:
return VK_FORMAT_R16G16B16A16_SINT;
break;
case FORMAT_R32G32_TYPELESS:
return VK_FORMAT_R32G32_UINT;
break;
case FORMAT_R32G32_FLOAT:
return VK_FORMAT_R32G32_SFLOAT;
break;
case FORMAT_R32G32_UINT:
return VK_FORMAT_R32G32_UINT;
break;
case FORMAT_R32G32_SINT:
return VK_FORMAT_R32G32_SINT;
break;
case FORMAT_R32G8X24_TYPELESS:
return VK_FORMAT_R32G32_UINT; // possible mismatch!
break;
case FORMAT_D32_FLOAT_S8X24_UINT:
return VK_FORMAT_D32_SFLOAT_S8_UINT;
break;
case FORMAT_R32_FLOAT_X8X24_TYPELESS:
return VK_FORMAT_R32G32_SFLOAT; // possible mismatch!
break;
case FORMAT_X32_TYPELESS_G8X24_UINT:
return VK_FORMAT_R32G32_UINT; // possible mismatch!
break;
case FORMAT_R10G10B10A2_TYPELESS:
return VK_FORMAT_A2B10G10R10_UINT_PACK32;
break;
case FORMAT_R10G10B10A2_UNORM:
return VK_FORMAT_A2B10G10R10_UNORM_PACK32;
break;
case FORMAT_R10G10B10A2_UINT:
return VK_FORMAT_A2B10G10R10_UINT_PACK32;
break;
case FORMAT_R11G11B10_FLOAT:
return VK_FORMAT_B10G11R11_UFLOAT_PACK32;
break;
case FORMAT_R8G8B8A8_TYPELESS:
return VK_FORMAT_R8G8B8A8_UINT;
break;
case FORMAT_R8G8B8A8_UNORM:
return VK_FORMAT_R8G8B8A8_UNORM;
break;
case FORMAT_R8G8B8A8_UNORM_SRGB:
return VK_FORMAT_R8G8B8A8_SRGB;
break;
case FORMAT_R8G8B8A8_UINT:
return VK_FORMAT_R8G8B8A8_UINT;
break;
case FORMAT_R8G8B8A8_SNORM:
return VK_FORMAT_R8G8B8A8_SNORM;
break;
case FORMAT_R8G8B8A8_SINT:
return VK_FORMAT_R8G8B8A8_SINT;
break;
case FORMAT_R16G16_TYPELESS:
return VK_FORMAT_R16G16_UINT;
break;
case FORMAT_R16G16_FLOAT:
return VK_FORMAT_R16G16_SFLOAT;
break;
case FORMAT_R16G16_UNORM:
return VK_FORMAT_R16G16_UNORM;
break;
case FORMAT_R16G16_UINT:
return VK_FORMAT_R16G16_UINT;
break;
case FORMAT_R16G16_SNORM:
return VK_FORMAT_R16G16_SNORM;
break;
case FORMAT_R16G16_SINT:
return VK_FORMAT_R16G16_SINT;
break;
case FORMAT_R32_TYPELESS:
return VK_FORMAT_R32_UINT;
break;
case FORMAT_D32_FLOAT:
return VK_FORMAT_D32_SFLOAT;
break;
case FORMAT_R32_FLOAT:
return VK_FORMAT_R32_SFLOAT;
break;
case FORMAT_R32_UINT:
return VK_FORMAT_R32_UINT;
break;
case FORMAT_R32_SINT:
return VK_FORMAT_R32_SINT;
break;
case FORMAT_R24G8_TYPELESS:
return VK_FORMAT_R32_UINT;
break;
case FORMAT_D24_UNORM_S8_UINT:
return VK_FORMAT_D24_UNORM_S8_UINT;
break;
case FORMAT_R24_UNORM_X8_TYPELESS:
return VK_FORMAT_D24_UNORM_S8_UINT;
break;
case FORMAT_X24_TYPELESS_G8_UINT:
return VK_FORMAT_D24_UNORM_S8_UINT;
break;
case FORMAT_R8G8_TYPELESS:
return VK_FORMAT_R8G8_UINT;
break;
case FORMAT_R8G8_UNORM:
return VK_FORMAT_R8G8_UNORM;
break;
case FORMAT_R8G8_UINT:
return VK_FORMAT_R8G8_UINT;
break;
case FORMAT_R8G8_SNORM:
return VK_FORMAT_R8G8_SNORM;
break;
case FORMAT_R8G8_SINT:
return VK_FORMAT_R8G8_SINT;
break;
case FORMAT_R16_TYPELESS:
return VK_FORMAT_R16_SFLOAT;
break;
case FORMAT_R16_FLOAT:
return VK_FORMAT_R16_SFLOAT;
break;
case FORMAT_D16_UNORM:
return VK_FORMAT_D16_UNORM;
break;
case FORMAT_R16_UNORM:
return VK_FORMAT_R16_UNORM;
break;
case FORMAT_R16_UINT:
return VK_FORMAT_R16_UINT;
break;
case FORMAT_R16_SNORM:
return VK_FORMAT_R16_SNORM;
break;
case FORMAT_R16_SINT:
return VK_FORMAT_R16_SINT;
break;
case FORMAT_R8_TYPELESS:
return VK_FORMAT_R8_UINT;
break;
case FORMAT_R8_UNORM:
return VK_FORMAT_R8_UNORM;
break;
case FORMAT_R8_UINT:
return VK_FORMAT_R8_UINT;
break;
case FORMAT_R8_SNORM:
return VK_FORMAT_R8_SNORM;
break;
case FORMAT_R8_SINT:
return VK_FORMAT_R8_SINT;
break;
case FORMAT_A8_UNORM:
return VK_FORMAT_R8_UNORM; // mismatch!
break;
case FORMAT_R1_UNORM:
return VK_FORMAT_R8_UNORM; // mismatch!
break;
case FORMAT_R9G9B9E5_SHAREDEXP:
return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; // maybe ok
break;
case FORMAT_R8G8_B8G8_UNORM:
return VK_FORMAT_R8G8B8A8_UNORM; // mismatch
break;
case FORMAT_G8R8_G8B8_UNORM:
return VK_FORMAT_R8G8B8A8_UNORM; // mismatch
break;
case FORMAT_BC1_TYPELESS:
return VK_FORMAT_BC1_RGBA_UNORM_BLOCK;
break;
case FORMAT_BC1_UNORM:
return VK_FORMAT_BC1_RGBA_UNORM_BLOCK;
break;
case FORMAT_BC1_UNORM_SRGB:
return VK_FORMAT_BC1_RGBA_SRGB_BLOCK;
break;
case FORMAT_BC2_TYPELESS:
return VK_FORMAT_BC2_UNORM_BLOCK;
break;
case FORMAT_BC2_UNORM:
return VK_FORMAT_BC2_UNORM_BLOCK;
break;
case FORMAT_BC2_UNORM_SRGB:
return VK_FORMAT_BC2_SRGB_BLOCK;
break;
case FORMAT_BC3_TYPELESS:
return VK_FORMAT_BC3_UNORM_BLOCK;
break;
case FORMAT_BC3_UNORM:
return VK_FORMAT_BC3_UNORM_BLOCK;
break;
case FORMAT_BC3_UNORM_SRGB:
return VK_FORMAT_BC3_SRGB_BLOCK;
break;
case FORMAT_BC4_TYPELESS:
return VK_FORMAT_BC4_UNORM_BLOCK;
break;
case FORMAT_BC4_UNORM:
return VK_FORMAT_BC4_UNORM_BLOCK;
break;
case FORMAT_BC4_SNORM:
return VK_FORMAT_BC4_SNORM_BLOCK;
break;
case FORMAT_BC5_TYPELESS:
return VK_FORMAT_BC5_UNORM_BLOCK;
break;
case FORMAT_BC5_UNORM:
return VK_FORMAT_BC5_UNORM_BLOCK;
break;
case FORMAT_BC5_SNORM:
return VK_FORMAT_BC5_SNORM_BLOCK;
break;
case FORMAT_B5G6R5_UNORM:
return VK_FORMAT_B5G6R5_UNORM_PACK16;
break;
case FORMAT_B5G5R5A1_UNORM:
return VK_FORMAT_A1R5G5B5_UNORM_PACK16;
break;
case FORMAT_B8G8R8A8_UNORM:
return VK_FORMAT_B8G8R8A8_UNORM;
break;
case FORMAT_B8G8R8X8_UNORM:
return VK_FORMAT_B8G8R8A8_UNORM;
break;
case FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
return VK_FORMAT_B10G11R11_UFLOAT_PACK32; // mismatch
break;
case FORMAT_B8G8R8A8_TYPELESS:
return VK_FORMAT_B8G8R8A8_UINT;
break;
case FORMAT_B8G8R8A8_UNORM_SRGB:
return VK_FORMAT_B8G8R8A8_SRGB;
break;
case FORMAT_B8G8R8X8_TYPELESS:
return VK_FORMAT_B8G8R8A8_UINT;
break;
case FORMAT_B8G8R8X8_UNORM_SRGB:
return VK_FORMAT_B8G8R8A8_SRGB;
break;
case FORMAT_BC6H_TYPELESS:
return VK_FORMAT_BC6H_SFLOAT_BLOCK;
break;
case FORMAT_BC6H_UF16:
return VK_FORMAT_BC6H_UFLOAT_BLOCK;
break;
case FORMAT_BC6H_SF16:
return VK_FORMAT_BC6H_SFLOAT_BLOCK;
break;
case FORMAT_BC7_TYPELESS:
return VK_FORMAT_BC7_UNORM_BLOCK; // maybe mismatch
break;
case FORMAT_BC7_UNORM:
return VK_FORMAT_BC7_UNORM_BLOCK;
break;
case FORMAT_BC7_UNORM_SRGB:
return VK_FORMAT_BC7_SRGB_BLOCK;
break;
case FORMAT_B4G4R4A4_UNORM:
return VK_FORMAT_B4G4R4A4_UNORM_PACK16;
break;
default:
break;
}
return VK_FORMAT_UNDEFINED;
}
// Engine functions
GraphicsDevice_Vulkan::GraphicsDevice_Vulkan(wiWindowRegistration::window_type window, bool fullscreen) : GraphicsDevice()
{
@@ -624,11 +942,129 @@ namespace wiGraphicsTypes
}
HRESULT GraphicsDevice_Vulkan::CreateGraphicsPSO(const GraphicsPSODesc* pDesc, GraphicsPSO* pso)
{
return E_FAIL;
pso->desc = *pDesc;
pso->renderPass_Vulkan = new VkRenderPass;
pso->pipeline_Vulkan = new VkPipeline;
std::vector<VkAttachmentDescription> attachments;
std::vector<VkAttachmentReference> colorAttachmentRefs;
attachments.reserve(pDesc->numRTs);
colorAttachmentRefs.reserve(pDesc->numRTs);
for (UINT i = 0; i < pDesc->numRTs; ++i)
{
VkAttachmentDescription attachment = {};
attachment.format = _ConvertFormat(pDesc->RTFormats[i]);
attachment.samples = VK_SAMPLE_COUNT_1_BIT;
attachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
attachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
attachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
attachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
attachment.finalLayout = VK_IMAGE_LAYOUT_GENERAL;
attachments.push_back(attachment);
VkAttachmentReference ref = {};
ref.attachment = i;
ref.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
colorAttachmentRefs.push_back(ref);
}
VkSubpassDescription subpass = {};
subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpass.colorAttachmentCount = pDesc->numRTs;
subpass.pColorAttachments = colorAttachmentRefs.data();
if (pDesc->DSFormat != FORMAT_UNKNOWN && pDesc->dss != nullptr)
{
const bool depth_read_only = pDesc->dss->GetDesc().DepthWriteMask == DEPTH_WRITE_MASK_ZERO;
const bool stencil_read_only = pDesc->dss->GetDesc().StencilWriteMask == 0;
const bool all_read_only = depth_read_only && stencil_read_only;
VkAttachmentDescription attachment = {};
attachment.format = _ConvertFormat(pDesc->DSFormat);
attachment.samples = VK_SAMPLE_COUNT_1_BIT;
attachment.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; // hmmm...
attachment.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
attachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD; // hmmm...
attachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
attachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
attachment.finalLayout = VK_IMAGE_LAYOUT_GENERAL;
attachments.push_back(attachment);
VkAttachmentReference depthAttachmentRef = {};
depthAttachmentRef.attachment = static_cast<uint32_t>(attachments.size() - 1);
depthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
//if (all_read_only)
//{
// depthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL;
//}
//else
//{
// if (depth_read_only)
// {
// depthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR;
// }
// else if (stencil_read_only)
// {
// depthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR;
// }
// else
// {
// depthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
// }
//}
subpass.pDepthStencilAttachment = &depthAttachmentRef;
}
VkRenderPassCreateInfo renderPassInfo = {};
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
renderPassInfo.attachmentCount = static_cast<uint32_t>(attachments.size());
renderPassInfo.pAttachments = attachments.data();
renderPassInfo.subpassCount = 1;
renderPassInfo.pSubpasses = &subpass;
if (vkCreateRenderPass(device, &renderPassInfo, nullptr, &defaultRenderPass) != VK_SUCCESS) {
throw std::runtime_error("failed to create render pass!");
}
VkGraphicsPipelineCreateInfo pipelineInfo = {};
pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
pipelineInfo.layout = defaultPipelineLayout;
pipelineInfo.renderPass = *static_cast<VkRenderPass*>(pso->renderPass_Vulkan);
pipelineInfo.subpass = 0;
pipelineInfo.basePipelineHandle = VK_NULL_HANDLE;
// TODO...
//pipelineInfo.stageCount;
if (vkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, static_cast<VkPipeline*>(pso->pipeline_Vulkan)) != VK_SUCCESS) {
throw std::runtime_error("failed to create graphics pipeline!");
}
return S_OK;
}
HRESULT GraphicsDevice_Vulkan::CreateComputePSO(const ComputePSODesc* pDesc, ComputePSO* pso)
{
return E_FAIL;
pso->pipeline_Vulkan = new VkPipeline;
VkComputePipelineCreateInfo pipelineInfo = {};
pipelineInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
pipelineInfo.layout = defaultPipelineLayout;
pipelineInfo.basePipelineHandle = VK_NULL_HANDLE;
if (vkCreateComputePipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, static_cast<VkPipeline*>(pso->pipeline_Vulkan)) != VK_SUCCESS) {
throw std::runtime_error("failed to create graphics pipeline!");
}
return S_OK;
}
+7
View File
@@ -1,6 +1,7 @@
#include "wiGraphicsResource.h"
#include "Include_DX11.h"
#include "Include_DX12.h"
#include "Include_Vulkan.h"
namespace wiGraphicsTypes
{
@@ -262,18 +263,24 @@ namespace wiGraphicsTypes
GraphicsPSO::GraphicsPSO()
{
SAFE_INIT(resource_DX12);
SAFE_INIT(pipeline_Vulkan);
SAFE_INIT(renderPass_Vulkan);
}
GraphicsPSO::~GraphicsPSO()
{
SAFE_DELETE(resource_DX12);
SAFE_DELETE(pipeline_Vulkan);
SAFE_DELETE(renderPass_Vulkan);
}
ComputePSO::ComputePSO()
{
SAFE_INIT(resource_DX12);
SAFE_INIT(pipeline_Vulkan);
}
ComputePSO::~ComputePSO()
{
SAFE_DELETE(resource_DX12);
SAFE_DELETE(pipeline_Vulkan);
}
}
+24
View File
@@ -48,6 +48,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11VertexShader* resource_DX11;
ShaderByteCode code;
@@ -60,6 +61,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11PixelShader* resource_DX11;
ShaderByteCode code;
@@ -72,6 +74,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11GeometryShader* resource_DX11;
ShaderByteCode code;
@@ -84,6 +87,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11HullShader* resource_DX11;
ShaderByteCode code;
@@ -96,6 +100,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11DomainShader* resource_DX11;
ShaderByteCode code;
@@ -108,6 +113,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11ComputeShader* resource_DX11;
ShaderByteCode code;
@@ -120,6 +126,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11SamplerState* resource_DX11;
D3D12_CPU_DESCRIPTOR_HANDLE* resource_DX12;
@@ -136,6 +143,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
protected:
ID3D11ShaderResourceView* SRV_DX11; // main resource SRV
std::vector<ID3D11ShaderResourceView*> additionalSRVs_DX11; // can be used for sub-resources if requested
@@ -157,6 +165,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11Buffer* resource_DX11;
D3D12_CPU_DESCRIPTOR_HANDLE* CBV_DX12;
@@ -173,6 +182,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
size_t byteOffset;
uint64_t residentFrame;
@@ -188,6 +198,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11InputLayout* resource_DX11;
@@ -201,6 +212,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11BlendState* resource_DX11;
BlendStateDesc desc;
@@ -215,6 +227,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11DepthStencilState* resource_DX11;
DepthStencilStateDesc desc;
@@ -229,6 +242,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11RasterizerState* resource_DX11;
RasterizerStateDesc desc;
@@ -252,6 +266,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11RenderTargetView* RTV_DX11;
std::vector<ID3D11RenderTargetView*> additionalRTVs_DX11;
@@ -283,6 +298,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11Texture1D* texture1D_DX11;
@@ -298,6 +314,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11DepthStencilView* DSV_DX11;
std::vector<ID3D11DepthStencilView*> additionalDSVs_DX11;
@@ -317,6 +334,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11Texture3D* texture3D_DX11;
@@ -335,6 +353,7 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
std::vector<ID3D11Query*> resource_DX11;
std::vector<int> active;
@@ -359,8 +378,11 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D12PipelineState* resource_DX12;
void* renderPass_Vulkan;
void* pipeline_Vulkan;
GraphicsPSODesc desc;
public:
@@ -373,8 +395,10 @@ namespace wiGraphicsTypes
{
friend class GraphicsDevice_DX11;
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D12PipelineState* resource_DX12;
void* pipeline_Vulkan;
ComputePSODesc desc;
public: