From be9345461894a67484fe2f217f86a8e68b2737aa Mon Sep 17 00:00:00 2001 From: assiduous Date: Fri, 7 Aug 2020 17:48:50 -0700 Subject: D3D12 backend: added attachment load/store op conversions to D3D12 types --- .../include/D3D12TypeConversions.hpp | 4 +++ .../src/D3D12TypeConversions.cpp | 31 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) (limited to 'Graphics/GraphicsEngineD3D12') diff --git a/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.hpp b/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.hpp index bdaa3f5e..89e52955 100644 --- a/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.hpp +++ b/Graphics/GraphicsEngineD3D12/include/D3D12TypeConversions.hpp @@ -31,6 +31,7 @@ /// Type conversion routines #include "GraphicsTypes.h" +#include "RenderPass.h" namespace Diligent { @@ -71,4 +72,7 @@ RESOURCE_STATE D3D12ResourceStatesToResourceStateFlags(D3D12_RESOURCE D3D12_QUERY_HEAP_TYPE QueryTypeToD3D12QueryHeapType(QUERY_TYPE QueryType); D3D12_QUERY_TYPE QueryTypeToD3D12QueryType(QUERY_TYPE QueryType); +D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE AttachmentLoadOpToD3D12BeginningAccessType(ATTACHMENT_LOAD_OP LoadOp); +D3D12_RENDER_PASS_ENDING_ACCESS_TYPE AttachmentStoreOpToD3D12EndingAccessType(ATTACHMENT_STORE_OP StoreOp); + } // namespace Diligent diff --git a/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp b/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp index 6043cac5..04304938 100644 --- a/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp +++ b/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp @@ -502,4 +502,35 @@ D3D12_QUERY_HEAP_TYPE QueryTypeToD3D12QueryHeapType(QUERY_TYPE QueryType) // clang-format on } +D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE AttachmentLoadOpToD3D12BeginningAccessType(ATTACHMENT_LOAD_OP LoadOp) +{ + // clang-format off + switch (LoadOp) + { + case ATTACHMENT_LOAD_OP_LOAD: return D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE; + case ATTACHMENT_LOAD_OP_CLEAR: return D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR; + case ATTACHMENT_LOAD_OP_DISCARD: return D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD; + + default: + UNEXPECTED("Unexpected attachment load op"); + return D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE; + } + // clang-format on +} + +D3D12_RENDER_PASS_ENDING_ACCESS_TYPE AttachmentStoreOpToD3D12EndingAccessType(ATTACHMENT_STORE_OP StoreOp) +{ + // clang-format off + switch (StoreOp) + { + case ATTACHMENT_STORE_OP_STORE: return D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE; + case ATTACHMENT_STORE_OP_DISCARD: return D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD; + + default: + UNEXPECTED("Unexpected attachment store op"); + return D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE; + } + // clang-format on +} + } // namespace Diligent -- cgit v1.2.3