From b5c72649db5faf5c41d99abf4d55dfb5eebb584a Mon Sep 17 00:00:00 2001 From: Patedam Date: Tue, 6 Jan 2026 21:33:15 -0500 Subject: [PATCH] Conversion to use Fastbuild + -Wall and warning as errors. WIP --- Assets/compiled/SolidColor.frag.dxil | Bin 2812 -> 2812 bytes Assets/compiled/Triangle.vert.dxil | Bin 3108 -> 3108 bytes Juliet/Juliet.vcxproj | 68 +- .../Core/Application/ApplicationManager.h | 2 + Juliet/include/Core/Common/CoreUtils.h | 35 +- Juliet/include/Core/Common/EnumUtils.h | 100 +- Juliet/include/Core/Common/NonNullPtr.h | 2 +- Juliet/include/Core/HAL/IO/IOStream.h | 2 +- Juliet/include/Core/HAL/Keyboard/KeyCode.h | 2 + Juliet/include/Core/HAL/Keyboard/Keyboard.h | 1 + Juliet/include/Core/Logging/LogManager.h | 9 +- Juliet/include/Core/Math/MathUtils.h | 2 +- Juliet/include/Core/Memory/Allocator.h | 1 + .../include/Core/Networking/NetworkPacket.h | 2 +- Juliet/include/Core/Networking/Socket.h | 3 + Juliet/include/Core/Networking/TcpListener.h | 3 + Juliet/include/Core/Networking/TcpSocket.h | 3 + Juliet/include/Graphics/Graphics.h | 11 +- Juliet/include/Graphics/GraphicsBuffer.h | 34 + Juliet/include/Juliet.h | 4 +- .../Core/Application/ApplicationManager.cpp | 2 - Juliet/src/Core/Common/CoreUtils.cpp | 36 +- Juliet/src/Core/Common/String.cpp | 21 +- Juliet/src/Core/HAL/Display/Display.cpp | 16 +- .../HAL/Display/Win32/Win32DisplayDevice.cpp | 6 +- .../HAL/Display/Win32/Win32DisplayEvent.cpp | 17 +- .../Core/HAL/Display/Win32/Win32Window.cpp | 18 +- Juliet/src/Core/HAL/Display/Window.h | 2 + .../Core/HAL/DynLib/Win32/DynamicLibrary.cpp | 7 +- Juliet/src/Core/HAL/Event/Keyboard.cpp | 4 +- Juliet/src/Core/HAL/Event/KeyboardMapping.cpp | 13 +- Juliet/src/Core/HAL/Event/Mouse.cpp | 2 - Juliet/src/Core/HAL/Event/SystemEvent.cpp | 45 +- Juliet/src/Core/HAL/Event/WindowEvent.cpp | 2 - Juliet/src/Core/HAL/Filesystem/Filesystem.cpp | 2 - .../HAL/Filesystem/Win32/Win32Filesystem.cpp | 4 +- Juliet/src/Core/HAL/IO/IOStream.cpp | 24 +- .../src/Core/HAL/IO/Win32/Win32IOStream.cpp | 6 +- Juliet/src/Core/HAL/Win32.h | 11 +- Juliet/src/Core/HotReload/HotReload.cpp | 8 +- .../Core/HotReload/Win32/Win32HotReload.cpp | 19 +- Juliet/src/Core/Juliet.cpp | 3 +- Juliet/src/Core/Logging/LogManager.cpp | 13 +- Juliet/src/Core/Math/MathRound.cpp | 45 +- Juliet/src/Core/Math/Math_Private.h | 36 +- Juliet/src/Core/Memory/Allocator.cpp | 8 +- Juliet/src/Core/Networking/NetworkPacket.cpp | 3 +- Juliet/src/Core/Networking/Socket.cpp | 11 +- .../src/Core/Networking/SocketPlatformImpl.h | 2 +- Juliet/src/Core/Networking/TcpListener.cpp | 2 - Juliet/src/Core/Networking/TcpSocket.cpp | 10 +- .../Win32/Win32SocketPlatformImpl.cpp | 2 - Juliet/src/Engine/Engine.cpp | 2 - .../d3dx12/d3dx12_property_format_table.cpp | 7231 ++++++++++++++--- .../d3dx12/d3dx12_property_format_table.h | 6 +- Juliet/src/Graphics/D3D12/D3D12Buffer.cpp | 166 + Juliet/src/Graphics/D3D12/D3D12Buffer.h | 14 + .../src/Graphics/D3D12/D3D12CommandList.cpp | 29 +- Juliet/src/Graphics/D3D12/D3D12CommandList.h | 4 +- Juliet/src/Graphics/D3D12/D3D12Common.cpp | 4 +- .../Graphics/D3D12/D3D12DescriptorHeap.cpp | 2 - .../Graphics/D3D12/D3D12GraphicsDevice.cpp | 71 +- .../src/Graphics/D3D12/D3D12GraphicsDevice.h | 2 +- .../Graphics/D3D12/D3D12GraphicsPipeline.cpp | 2 - .../Graphics/D3D12/D3D12GraphicsPipeline.h | 8 +- Juliet/src/Graphics/D3D12/D3D12Includes.h | 19 +- Juliet/src/Graphics/D3D12/D3D12RenderPass.cpp | 2 - Juliet/src/Graphics/D3D12/D3D12RenderPass.h | 2 +- Juliet/src/Graphics/D3D12/D3D12Shader.cpp | 8 +- Juliet/src/Graphics/D3D12/D3D12SwapChain.cpp | 10 +- .../Graphics/D3D12/D3D12Synchronization.cpp | 6 +- Juliet/src/Graphics/D3D12/D3D12Texture.cpp | 4 +- Juliet/src/Graphics/D3D12/D3D12Utils.cpp | 18 +- Juliet/src/Graphics/D3D12/D3D12Utils.h | 4 +- Juliet/src/Graphics/Graphics.cpp | 34 +- Juliet/src/Graphics/GraphicsDevice.h | 4 + Juliet/src/pch.cpp | 5 - JulietShaderCompiler/ShaderCompiler.cpp | 2 +- JulietShaderCompiler/main.cpp | 4 +- 79 files changed, 6839 insertions(+), 1508 deletions(-) create mode 100644 Juliet/include/Graphics/GraphicsBuffer.h create mode 100644 Juliet/src/Graphics/D3D12/D3D12Buffer.cpp create mode 100644 Juliet/src/Graphics/D3D12/D3D12Buffer.h delete mode 100644 Juliet/src/pch.cpp diff --git a/Assets/compiled/SolidColor.frag.dxil b/Assets/compiled/SolidColor.frag.dxil index c9f2b868c8b7984dd48dd628b9d1fe6cf0ed81ad..8920976a73ee942d460e86a1b44fe147238d85e0 100644 GIT binary patch delta 452 zcmew(`bSj6CBn&>uStF-@89Pd)$vs&$JhS-zEQ-5kvENjfkB&*fx#uh(}!(yD&rbP z7L7K+hRLGLL1Hr$1dg&DG|)J3HdjKRX@&yF0k(w036pD?RZR`lI9QDxHD+-#CHe?- zBsVvtN{czqT5(EBulbT0i}Ym8)%vRpc5XJ>#p(1gC!#0slUCLap2^plV;CDZo3Pwr zR86$MFRT0IX6zL|rnW@=onJuqUtwWj0J+B$?jBRNHH@qpZAB7{lb^9i*F&74bFR%{ zrUC~;=e7+d+kp-cSg3VKs;X*|(kum$lPn7Z%vjE`EQ|mm+r8Lvwg~SO;aF*=yu%Yp541I9+Ayp*bS&-qvq^4Y z&)m#aIaW=0xbw!;lami{s0cHxbZ&c|G(D_rx{H~sxLdfHYQX0294i@PS|4j1>2PFf zP>_(A^3lfGFlhpV0tcI0sl$b&9tjl&j;6*$#XuJsWj0QRri6xwb`?vga)oP(p2rLz Y$~#Iuf|Mc38Ixoug|Kh{!-IhV002vx6951J delta 452 zcmew(`bSj6CBn(M=C9Z6yIV>^EBu3Y{n>Qm_(l;IM&1Ml1_o_L1_qZ1PalTOsf=qF zStJ-W+9r!K2Z`NK5MW{5v6GW2Fh_!~WrhOB0k(w04wGw{RZSJtI9QDxHD+-#CHe?- zBsVvtN{czoT5(EBuj!H*i}Ym8)%vRpc5XJ>#p(1gC!!*@VV;CJbo3Pwr zROPHOe7Hg7 z2uot28Ov!FM+T2AtxINtT5HW-Lco7Dj*_sL;pB)R-fnm3`RB zCP2lP+12HG8$+^D>Q`4$wem1GbD$4+xfeRl7U2~UjFo1}J3OKEK-;218-^8!j-_3H zHpwmQnVY#P$EpbrcixzKa`FKV6=8*y&TY?=riYbHcQJDncMCUDjoAF1VZ!-F-cY=l!XHr9t;cs6_k`) diff --git a/Assets/compiled/Triangle.vert.dxil b/Assets/compiled/Triangle.vert.dxil index c9c9597cce2c76d8f67f50b59f8785390943c489..5711d79b40b3eadbb0b51e0248aa1ff8942e3f11 100644 GIT binary patch delta 428 zcmZ1?u|z_|CBn)1_TG-@hxuneCbPUOjtJ}iv{9sikvENjk->qHfx#uh(}!*ILdG?W zEE;Ws4U+?z!^CDN@Em13XrOW9Y_5br(+mZU18fP06DIFv)(|mJ<8U!{l<46-WSSGf zletJMdjZenpUevE$&c5plD0WKS%GCDW5VW5Ebkaq??=_^T@tBEIG4*5{NdS$DIlwI zSQ!{VR!76FKFYR%kyWFuNP=;46-RU`#73P9Z4NUPI2by&Z7|u+c_^V^=B8hpv?eds zKJ2YDOF`fyOJjf;%Q=?D2sMtw8yy$4@pgZ9m}tT~(Ku9^shcBI@Y;pTlSMAFG$w$Z zt1yT2P(zM@M&98^2{%2Na5OP8u?ZdzJ&2IF^8_w& Z@p$Y}xJ0dt8)0}c%w)IBX0r&BZC7Y1A|M1rw_yCg^X($ zStJ-W+9n4whl$-#5MW{5y_54$K#l}o%M1mM18fP09VYK()(}xp<8U!{l<46-WSSGf zk-11KdjZGfpUevENsrg8lD0WCS%GCDW5DK3EbkaqUj$5;qPlDC2fsa0$1;QXc|lg? zure@!td53TeUxnjBP-DA_N2*G9MP%10&K~L8&r<4BsQ9{oMv%k@YvG2bZ6nrO}{p2 zO5 zCV-u*Fo*L{Lymw(-eISNn<|-y-6mUcsx$UZPU5r?b_{CgIe%1d?Hj$$oG!hdbva%e zHgDuS&B%V##PCRgv%} Level3 true - _DEBUG;JULIET_EXPORT;JULIET_WIN32;%(PreprocessorDefinitions) + DEBUG;JULIET_EXPORT;JULIET_WIN32;%(PreprocessorDefinitions) true - Use - pch.h + NotUsing stdcpp20 Fast false @@ -144,13 +143,13 @@ + - @@ -186,6 +185,7 @@ + @@ -231,6 +231,7 @@ + @@ -242,64 +243,7 @@ - - MultiThreadedDebugDll - Disabled - true - NoListing - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\ - false - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\ - Default - Default - Column - false - false - false - NotSet - Fast - Default - false - stdcpp20 - Default - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\ - false - Neither - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\ - Cdecl - Use - pch.h - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\Juliet.pch - false - false - false - false - false - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\ - true - true - false - Default - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\Juliet.tlog\ - true - false - Level3 - W:\Classified\Juliet\Intermediate\Juliet\x64\Debug\ - ProgramDatabase - false - false - true - _DEBUG;_LIB;JULIET_WIN32;_UNICODE;UNICODE; - false - true - true - Default - --target=amd64-pc-windows-msvc - - - Create - Create - + diff --git a/Juliet/include/Core/Application/ApplicationManager.h b/Juliet/include/Core/Application/ApplicationManager.h index c0b79c3..3672694 100644 --- a/Juliet/include/Core/Application/ApplicationManager.h +++ b/Juliet/include/Core/Application/ApplicationManager.h @@ -1,6 +1,8 @@ #pragma once #include +#include +#include namespace Juliet { diff --git a/Juliet/include/Core/Common/CoreUtils.h b/Juliet/include/Core/Common/CoreUtils.h index dbc78ab..ce1dbb4 100644 --- a/Juliet/include/Core/Common/CoreUtils.h +++ b/Juliet/include/Core/Common/CoreUtils.h @@ -4,34 +4,53 @@ #include #include +#include namespace Juliet { -#if _DEBUG -#define Assert(expression) \ - do \ +#if JULIET_DEBUG +#define JULIET_ASSERT_INTERNAL(expression, message) \ + __pragma(warning(push)) __pragma(warning(disable : 4127)) __pragma(warning(disable : 4548)) do \ { \ if (!(expression)) \ { \ - Juliet::JulietAssert("Assertion Failed: " #expression); \ + Juliet::JulietAssert(#expression, message); \ + } \ + } \ + while (0) \ + __pragma(warning(pop)) + +#define AssertHR(hr_expression, message) \ + do \ + { \ + long hr_val = (hr_expression); \ + if (hr_val < 0) \ + { \ + Juliet::JulietAssert(#hr_expression, message, std::source_location::current(), hr_val); \ } \ } \ while (0) +#define GET_ASSERT_MACRO(_1, _2, NAME, ...) NAME +#define Assert(...) GET_ASSERT_MACRO(__VA_ARGS__, JULIET_ASSERT_INTERNAL, JULIET_ASSERT_NO_MSG)(__VA_ARGS__) +#define JULIET_ASSERT_NO_MSG(expression) JULIET_ASSERT_INTERNAL(expression, "No additional information provided.") + #define Unimplemented() \ do \ { \ - Juliet::JulietAssert("Unimplemented!"); \ + Juliet::JulietAssert("UNIMPLEMENTED", "This code path is not yet functional."); \ } \ while (0) #else -#define Assert(Expression) -#define Unimplemented() +#define Assert(...) ((void)0) +#define AssertHR(hr_expression, message) ((void)(hr_expression)) +#define Unimplemented() ((void)0) #endif - extern void JULIET_API JulietAssert(const char* expression); + JULIET_API extern void JulietAssert(const char* expression, const char* message, + std::source_location location = std::source_location::current(), long handleResult = 0); #define ZeroStruct(structInstance) ZeroSize(sizeof(structInstance), &(structInstance)) #define ZeroArray(array) ZeroSize(sizeof((array)), (array)) diff --git a/Juliet/include/Core/Common/EnumUtils.h b/Juliet/include/Core/Common/EnumUtils.h index 5364a47..adcd13f 100644 --- a/Juliet/include/Core/Common/EnumUtils.h +++ b/Juliet/include/Core/Common/EnumUtils.h @@ -4,87 +4,87 @@ namespace Juliet { + template + concept IsEnum = std::is_enum_v; - template - requires std::is_enum_v - E operator~(E lhs) + template + constexpr E operator~(E lhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(~static_cast(lhs)); + return static_cast(~static_cast>(lhs)); } - template - requires std::is_enum_v - E operator|(E lhs, E rhs) + template + constexpr E operator|(E lhs, E rhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(static_cast(lhs) | static_cast(rhs)); + return static_cast(static_cast>(lhs) | static_cast>(rhs)); } - template - requires std::is_enum_v - E& operator|=(E& lhs, E rhs) + template + constexpr E& operator|=(E& lhs, E rhs) noexcept { - return lhs = lhs | rhs; + return lhs = (lhs | rhs); } - template - requires std::is_enum_v - E operator&(E lhs, E rhs) + template + constexpr E operator&(E lhs, E rhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(static_cast(lhs) & static_cast(rhs)); + return static_cast(static_cast>(lhs) & static_cast>(rhs)); } - template - requires std::is_enum_v - E& operator&=(E& lhs, E rhs) + template + constexpr E& operator&=(E& lhs, E rhs) noexcept { - return lhs = lhs & rhs; + return lhs = (lhs & rhs); } - template - requires std::is_enum_v - E operator+(const E& lhs, const E& rhs) + template + constexpr E operator^(E lhs, E rhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(static_cast(lhs) + static_cast(rhs)); + return static_cast(static_cast>(lhs) ^ static_cast>(rhs)); } - template - requires std::is_enum_v - E operator-(const E& lhs, const E& rhs) + template + constexpr E& operator^=(E& lhs, E rhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(static_cast(lhs) - static_cast(rhs)); + return lhs = (lhs ^ rhs); } - template - requires std::is_enum_v - E operator^(const E& lhs, const E& rhs) + template + constexpr std::underlying_type_t operator-(E lhs, E rhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(static_cast(lhs) ^ static_cast(rhs)); + using T = std::underlying_type_t; + return static_cast(static_cast(lhs) - static_cast(rhs)); } - template - requires std::is_enum_v - E& operator^=(E& lhs, const E& rhs) + template + constexpr std::underlying_type_t operator+(E lhs, E rhs) noexcept { - return lhs = lhs ^ rhs; + using T = std::underlying_type_t; + return static_cast(static_cast(lhs) + static_cast(rhs)); } - template - requires std::is_enum_v - constexpr std::underlying_type_t ToUnderlying(E enm) + template + constexpr E operator-(E lhs, std::underlying_type_t rhs) noexcept { - using underlying = std::underlying_type_t; - return static_cast(enm); + using T = std::underlying_type_t; + return static_cast(static_cast(static_cast(lhs) - rhs)); } - template - requires std::is_enum_v - constexpr E ToEnum(std::underlying_type_t value) + template + constexpr E operator+(E lhs, std::underlying_type_t rhs) noexcept + { + using T = std::underlying_type_t; + return static_cast(static_cast(static_cast(lhs) + rhs)); + } + + template + constexpr std::underlying_type_t ToUnderlying(E enm) noexcept + { + return static_cast>(enm); + } + + template + constexpr E ToEnum(std::underlying_type_t value) noexcept { return static_cast(value); } diff --git a/Juliet/include/Core/Common/NonNullPtr.h b/Juliet/include/Core/Common/NonNullPtr.h index 52836fb..c701c75 100644 --- a/Juliet/include/Core/Common/NonNullPtr.h +++ b/Juliet/include/Core/Common/NonNullPtr.h @@ -100,7 +100,7 @@ namespace Juliet return *this; } - explicit operator bool() const { return true; }; + explicit operator bool() const { return true; } private: Type* InternalPtr; diff --git a/Juliet/include/Core/HAL/IO/IOStream.h b/Juliet/include/Core/HAL/IO/IOStream.h index d94db3e..e972e47 100644 --- a/Juliet/include/Core/HAL/IO/IOStream.h +++ b/Juliet/include/Core/HAL/IO/IOStream.h @@ -50,7 +50,7 @@ namespace Juliet extern JULIET_API IOStream* IOFromFile(String filename, String mode); // Let you use an interface to open any io. Is used internally by IOFromFile - extern JULIET_API IOStream* IOFromInterface(NonNullPtr interface, NonNullPtr payload); + extern JULIET_API IOStream* IOFromInterface(NonNullPtr streamInterface, NonNullPtr payload); // Write formatted string into the stream. extern JULIET_API size_t IOPrintf(NonNullPtr stream, _Printf_format_string_ const char* format, ...); diff --git a/Juliet/include/Core/HAL/Keyboard/KeyCode.h b/Juliet/include/Core/HAL/Keyboard/KeyCode.h index 35ee21b..3f0f465 100644 --- a/Juliet/include/Core/HAL/Keyboard/KeyCode.h +++ b/Juliet/include/Core/HAL/Keyboard/KeyCode.h @@ -1,5 +1,7 @@ #pragma once +#include + namespace Juliet { // Represents a Virtual Key corresponding to the Physical key, but localized using the keyboard layout diff --git a/Juliet/include/Core/HAL/Keyboard/Keyboard.h b/Juliet/include/Core/HAL/Keyboard/Keyboard.h index fc86432..716e6dd 100644 --- a/Juliet/include/Core/HAL/Keyboard/Keyboard.h +++ b/Juliet/include/Core/HAL/Keyboard/Keyboard.h @@ -2,6 +2,7 @@ #include #include +#include namespace Juliet { diff --git a/Juliet/include/Core/Logging/LogManager.h b/Juliet/include/Core/Logging/LogManager.h index bf8c5fe..48dfd61 100644 --- a/Juliet/include/Core/Logging/LogManager.h +++ b/Juliet/include/Core/Logging/LogManager.h @@ -6,6 +6,7 @@ // TODO : Juliet strings #include // TODO Juliet Containers + Allocators... +#include #include namespace Juliet @@ -25,10 +26,10 @@ namespace Juliet private: struct Entry { - std::string Value; - uint64_t Time; - LogLevel Level; - LogCategory Category; + std::string Value; + std::chrono::system_clock::time_point Time; + LogLevel Level; + LogCategory Category; Entry(std::string& value, LogLevel level, LogCategory category); }; diff --git a/Juliet/include/Core/Math/MathUtils.h b/Juliet/include/Core/Math/MathUtils.h index 5e60554..f301591 100644 --- a/Juliet/include/Core/Math/MathUtils.h +++ b/Juliet/include/Core/Math/MathUtils.h @@ -9,7 +9,7 @@ namespace Juliet inline int32 LRoundF(float value) { - return RoundF(value); + return static_cast(RoundF(value)); } template diff --git a/Juliet/include/Core/Memory/Allocator.h b/Juliet/include/Core/Memory/Allocator.h index d91c6b7..c7edec6 100644 --- a/Juliet/include/Core/Memory/Allocator.h +++ b/Juliet/include/Core/Memory/Allocator.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include diff --git a/Juliet/include/Core/Networking/NetworkPacket.h b/Juliet/include/Core/Networking/NetworkPacket.h index df2cc81..e3d91f9 100644 --- a/Juliet/include/Core/Networking/NetworkPacket.h +++ b/Juliet/include/Core/Networking/NetworkPacket.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include namespace Juliet diff --git a/Juliet/include/Core/Networking/Socket.h b/Juliet/include/Core/Networking/Socket.h index 3feef83..a73495e 100644 --- a/Juliet/include/Core/Networking/Socket.h +++ b/Juliet/include/Core/Networking/Socket.h @@ -13,6 +13,9 @@ namespace Juliet Socket(Socket&& other) noexcept; Socket& operator=(Socket&& socket) noexcept; + Socket(const Socket&) = delete; + Socket& operator=(const Socket&) = delete; + bool IsValid() const; enum class Status : uint8 diff --git a/Juliet/include/Core/Networking/TcpListener.h b/Juliet/include/Core/Networking/TcpListener.h index 1d855d4..3f47300 100644 --- a/Juliet/include/Core/Networking/TcpListener.h +++ b/Juliet/include/Core/Networking/TcpListener.h @@ -11,6 +11,9 @@ namespace Juliet public: TcpListener(); + TcpListener(const TcpListener&) = delete; + TcpListener& operator=(const TcpListener&) = delete; + Status Listen(uint16 port, uint32 address = kAnyIp); Status Accept(TcpSocket& socket); void Close(); diff --git a/Juliet/include/Core/Networking/TcpSocket.h b/Juliet/include/Core/Networking/TcpSocket.h index 35ff226..8c93d61 100644 --- a/Juliet/include/Core/Networking/TcpSocket.h +++ b/Juliet/include/Core/Networking/TcpSocket.h @@ -11,6 +11,9 @@ namespace Juliet public: TcpSocket(); + TcpSocket(const TcpSocket&) = delete; + TcpSocket& operator=(const TcpSocket&) = delete; + RequestStatus Send(NetworkPacket& packet); RequestStatus Send(ByteBuffer buffer); Status Receive(NetworkPacket& outPacket); diff --git a/Juliet/include/Graphics/Graphics.h b/Juliet/include/Graphics/Graphics.h index 24b17a8..7cf877c 100644 --- a/Juliet/include/Graphics/Graphics.h +++ b/Juliet/include/Graphics/Graphics.h @@ -4,14 +4,17 @@ #include #include #include +#include #include #include #include #include #include -#ifdef JULIET_DEBUG +#if JULIET_DEBUG #define ALLOW_SHADER_HOT_RELOAD 1 +#else +#define ALLOW_SHADER_HOT_RELOAD 0 #endif // Graphics Interface @@ -138,4 +141,10 @@ namespace Juliet Shader* optional_vertexShader, Shader* optional_fragmentShader); #endif + // Buffers + extern GraphicsBuffer* CreateGraphicsBuffer(NonNullPtr device, const BufferCreateInfo& createInfo); + extern GraphicsTransferBuffer* CreateGraphicsTransferBuffer(NonNullPtr device, + const TransferBufferCreateInfo& createInfo); + extern void ReleaseGraphicsBuffer(NonNullPtr device, NonNullPtr buffer); + extern void ReleaseGraphicsTransferBuffer(NonNullPtr device, NonNullPtr buffer); } // namespace Juliet diff --git a/Juliet/include/Graphics/GraphicsBuffer.h b/Juliet/include/Graphics/GraphicsBuffer.h new file mode 100644 index 0000000..352fa0f --- /dev/null +++ b/Juliet/include/Graphics/GraphicsBuffer.h @@ -0,0 +1,34 @@ +#pragma once + +namespace Juliet +{ + enum class BufferUsage : uint8 + { + None = 0, + IndexBuffer = 1 << 0, + ConstantBuffer = 1 << 1, + StructuredBuffer = 1 << 2, + }; + + enum class TransferBufferUsage : uint8 + { + Download, + Upload + }; + + struct BufferCreateInfo + { + size_t Size; + BufferUsage Usage; + }; + + struct TransferBufferCreateInfo + { + size_t Size; + TransferBufferUsage Usage; + }; + + // Opaque + struct GraphicsBuffer; + struct GraphicsTransferBuffer; +} // namespace Juliet diff --git a/Juliet/include/Juliet.h b/Juliet/include/Juliet.h index 6efdf5f..7b2e82e 100644 --- a/Juliet/include/Juliet.h +++ b/Juliet/include/Juliet.h @@ -19,7 +19,9 @@ # endif #endif -#if _DEBUG +#ifdef DEBUG #define JULIET_DEBUG 1 +#else +#define JULIET_DEBUG 0 #endif // clang-format on diff --git a/Juliet/src/Core/Application/ApplicationManager.cpp b/Juliet/src/Core/Application/ApplicationManager.cpp index 37637a7..5bf23cc 100644 --- a/Juliet/src/Core/Application/ApplicationManager.cpp +++ b/Juliet/src/Core/Application/ApplicationManager.cpp @@ -1,5 +1,3 @@ -#include - #include #include diff --git a/Juliet/src/Core/Common/CoreUtils.cpp b/Juliet/src/Core/Common/CoreUtils.cpp index 70bddf6..a2605ed 100644 --- a/Juliet/src/Core/Common/CoreUtils.cpp +++ b/Juliet/src/Core/Common/CoreUtils.cpp @@ -1,13 +1,39 @@ -#include - +#include +#include #include +#include // For _com_error to decode HRESULTs +#include // For __debugbreak + namespace Juliet { - void JulietAssert(const char* expression) + void JulietAssert(const char* expression, const char* message, std::source_location location, long handleResult) { - Log(LogLevel::Error, LogCategory::Core, expression); - __debugbreak(); + Log(LogLevel::Error, LogCategory::Core, "--- ASSERTION FAILED ---"); + Log(LogLevel::Error, LogCategory::Core, "Expression: %s", expression); + Log(LogLevel::Error, LogCategory::Core, "Message: %s", message); + Log(LogLevel::Error, LogCategory::Core, "Location: %s(%u): %s", + location.file_name(), + location.line(), + location.function_name()); + + if (handleResult < 0) + { + _com_error err(handleResult); + // Using %ls because ErrorMessage() returns a wide string (wchar_t*) + Log(LogLevel::Error, LogCategory::Graphics, "HRESULT: 0x%08X (%ls)", handleResult, err.ErrorMessage()); + } + + Log(LogLevel::Error, LogCategory::Core, "-------------------------"); + + if (IsDebuggerPresent()) + { + __debugbreak(); + } + else + { + exit(1); + } } void Free(ByteBuffer& buffer) diff --git a/Juliet/src/Core/Common/String.cpp b/Juliet/src/Core/Common/String.cpp index d9d8fae..8b9c15f 100644 --- a/Juliet/src/Core/Common/String.cpp +++ b/Juliet/src/Core/Common/String.cpp @@ -1,6 +1,7 @@ -#include - +#include #include +#include +#include #include namespace Juliet @@ -222,13 +223,13 @@ namespace Juliet { { uint32 leftFolded[3]; - int8 num_folded = CaseFoldUnicode(StepUTF8(str1), leftFolded); + [[maybe_unused]] int8 num_folded = CaseFoldUnicode(StepUTF8(str1), leftFolded); Assert(num_folded == 1); // Only one uint32 codepoint supported for now (low ascii) left = leftFolded[0]; } { uint32 rightFolded[3]; - int8 num_folded = CaseFoldUnicode(StepUTF8(str2), rightFolded); + [[maybe_unused]] int8 num_folded = CaseFoldUnicode(StepUTF8(str2), rightFolded); Assert(num_folded == 1); // Only one uint32 codepoint supported for now (low ascii) right = rightFolded[0]; } @@ -357,13 +358,13 @@ namespace Juliet } break; } - case StringEncoding::Unknown: Assert(false && "ConvertString: Invalid Source Format: Unknown"); break; + case StringEncoding::Unknown: Assert(false, "ConvertString: Invalid Source Format: Unknown"); break; case StringEncoding::ASCII: case StringEncoding::LATIN1: case StringEncoding::UTF16: case StringEncoding::UTF32: case StringEncoding::UCS2: - case StringEncoding::UCS4: Assert(false && "ConvertString: Unsupported Source Format"); break; + case StringEncoding::UCS4: Assert(false, "ConvertString: Unsupported Source Format"); break; } // Encode out character @@ -398,8 +399,8 @@ namespace Juliet return false; } character = character - 0x10000; - uint16 word1 = 0xD800 | static_cast((character >> 10) & 0x3FF); - uint16 word2 = 0xDC00 | static_cast(character & 0x3FF); + uint16 word1 = 0xD800U | static_cast((character >> 10) & 0x3FF); + uint16 word2 = 0xDC00U | static_cast(character & 0x3FF); p[1] = static_cast(word1 >> 8); p[0] = static_cast(word1); p[3] = static_cast(word2 >> 8); @@ -411,13 +412,13 @@ namespace Juliet } break; } - case StringEncoding::Unknown: Assert(false && "ConvertString: Invalid Source Format: Unknown"); break; + case StringEncoding::Unknown: Assert(false, "ConvertString: Invalid Source Format: Unknown"); break; case StringEncoding::ASCII: case StringEncoding::LATIN1: case StringEncoding::UTF8: case StringEncoding::UTF32: case StringEncoding::UCS2: - case StringEncoding::UCS4: Assert(false && "ConvertString: Unsupported Destination Format"); break; + case StringEncoding::UCS4: Assert(false, "ConvertString: Unsupported Destination Format"); break; } } return true; diff --git a/Juliet/src/Core/HAL/Display/Display.cpp b/Juliet/src/Core/HAL/Display/Display.cpp index 16a96cb..174761f 100644 --- a/Juliet/src/Core/HAL/Display/Display.cpp +++ b/Juliet/src/Core/HAL/Display/Display.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include @@ -67,7 +65,7 @@ namespace Juliet CurrentDisplayDevice = nullptr; } - Window* CreatePlatformWindow(const char* title, uint16 width, uint16 height, int flags /* = 0 unused */) + Window* CreatePlatformWindow(const char* title, uint16 width, uint16 height, int /*flags*/ /* = 0 unused */) { Assert(CurrentDisplayDevice->CreatePlatformWindow); @@ -79,6 +77,14 @@ namespace Juliet window->Width = width; window->Height = height; + // TODO String creator that copy + auto titleLen = StringLength(title); + auto buffer = static_cast(Calloc(titleLen, sizeof(char))); + MemCopy(buffer, title, titleLen); + + window->Title.Data = buffer; + window->Title.Size = titleLen; + CurrentDisplayDevice->MainWindow = window; if (!CurrentDisplayDevice->CreatePlatformWindow(CurrentDisplayDevice, window)) { @@ -98,6 +104,10 @@ namespace Juliet HideWindow(window); + // TODO : Free string function + SafeFree(window->Title.Data); + window->Title.Size = 0; + CurrentDisplayDevice->DestroyPlatformWindow(CurrentDisplayDevice, window); Free(window.Get()); diff --git a/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp b/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp index 7c5f91a..dd5698a 100644 --- a/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp +++ b/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include @@ -9,11 +7,11 @@ namespace Juliet::Win32 { namespace { - bool Initialize(NonNullPtr self) + bool Initialize(NonNullPtr /*self*/) { return true; } - void Shutdown(NonNullPtr self) {} + void Shutdown(NonNullPtr /*self*/) {} void Free(NonNullPtr self) { Juliet::Free(self.Get()); diff --git a/Juliet/src/Core/HAL/Display/Win32/Win32DisplayEvent.cpp b/Juliet/src/Core/HAL/Display/Win32/Win32DisplayEvent.cpp index a319b71..baf769e 100644 --- a/Juliet/src/Core/HAL/Display/Win32/Win32DisplayEvent.cpp +++ b/Juliet/src/Core/HAL/Display/Win32/Win32DisplayEvent.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include @@ -33,7 +31,7 @@ namespace Juliet::Win32 { if (window) { - auto state = reinterpret_cast(window->State); + auto state = static_cast(window->State); if (state && state->Handle == handle) { return state; @@ -46,7 +44,7 @@ namespace Juliet::Win32 } // Win32 Keyboard Utils - Key GetScanScodeFromWinScanCode(WPARAM wParam, LPARAM lParam) + Key GetScanScodeFromWinScanCode(WPARAM /*wParam*/, LPARAM lParam) { Key key = {}; @@ -70,14 +68,14 @@ namespace Juliet::Win32 } else { - Assert(false && "Virtual Key : Unimplemented"); + Assert(false, "Virtual Key : Unimplemented"); // uint16 virtualKey = LOWORD(wParam); } // Pack the scancode to have everything within one byte. // Because scancode low byte are never bigger than 0x7F // We can use the most significant bit to store anything that is in the High Byte of the scancode - uint8 index = LOBYTE(scanCode) | (HIBYTE(scanCode) ? 0x80 : 0x00); + uint8 index = static_cast(LOBYTE(scanCode) | (HIBYTE(scanCode) ? 0x80 : 0x00)); key.ScanCode = Win32ToHIDUsagePageTable[index]; key.Raw = scanCode; @@ -111,7 +109,7 @@ namespace Juliet::Win32 } } - WPARAM LastFrameButtonState = -1; + WPARAM LastFrameButtonState = static_cast(-1); void ExtractAllMouseButtonState(uint64 timestamp, WPARAM wParam, NonNullPtr windowState, MouseID mouseID) { if (wParam != LastFrameButtonState) @@ -130,7 +128,7 @@ namespace Juliet::Win32 } } // namespace - void PumpEvents(NonNullPtr self) + void PumpEvents(NonNullPtr /*self*/) { uint8 peekedMessageCount = 0; MSG message = {}; @@ -211,7 +209,8 @@ namespace Juliet::Win32 windowState->IsMouseTracked = true; } - SendMouseMotion(1, windowState->Window, kGlobalMouseID, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + SendMouseMotion(1, windowState->Window, kGlobalMouseID, static_cast(GET_X_LPARAM(lParam)), + static_cast(GET_Y_LPARAM(lParam))); break; } diff --git a/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp b/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp index c07c69a..3b82a57 100644 --- a/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp +++ b/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include @@ -12,7 +10,7 @@ namespace Juliet::Win32 constexpr auto WindowClassName = "JulietWindowClass"; constexpr LPCSTR WindowClassPtr = WindowClassName; - bool SetupWindowState(NonNullPtr self, NonNullPtr window, HWND handle) + bool SetupWindowState(NonNullPtr /*self*/, NonNullPtr window, HWND handle) { auto state = static_cast(Calloc(1, sizeof(Window32State))); window->State = state; @@ -27,9 +25,9 @@ namespace Juliet::Win32 return true; } - void CleanUpWindowState(NonNullPtr self, NonNullPtr window) + void CleanUpWindowState(NonNullPtr /*self*/, NonNullPtr window) { - if (auto* state = reinterpret_cast(window->State)) + if (auto* state = static_cast(window->State)) { ReleaseDC(state->Handle, state->HDC); DestroyWindow(state->Handle); @@ -51,7 +49,7 @@ namespace Juliet::Win32 WindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; WindowClass.lpfnWndProc = Win32MainWindowCallback; WindowClass.hInstance = instance; - WindowClass.hCursor = LoadCursor(0, IDC_ARROW); + WindowClass.hCursor = LoadCursor(nullptr, IDC_ARROW); WindowClass.hbrBackground = static_cast(GetStockObject(LTGRAY_BRUSH)); WindowClass.lpszClassName = WindowClassName; if (!RegisterClassExA(&WindowClass)) @@ -83,18 +81,18 @@ namespace Juliet::Win32 CleanUpWindowState(self, window); } - void ShowWindow(NonNullPtr self, NonNullPtr window) + void ShowWindow(NonNullPtr /*self*/, NonNullPtr window) { Assert(window); Assert(window->State); - auto& win32State = reinterpret_cast(*window->State); + auto& win32State = static_cast(*window->State); ::ShowWindow(win32State.Handle, SW_SHOW); } - void HideWindow(NonNullPtr self, NonNullPtr window) + void HideWindow(NonNullPtr /*self*/, NonNullPtr window) { - auto& win32State = reinterpret_cast(*window->State); + auto& win32State = static_cast(*window->State); ::ShowWindow(win32State.Handle, SW_HIDE); } } // namespace Juliet::Win32 diff --git a/Juliet/src/Core/HAL/Display/Window.h b/Juliet/src/Core/HAL/Display/Window.h index 03a0be6..bd844d6 100644 --- a/Juliet/src/Core/HAL/Display/Window.h +++ b/Juliet/src/Core/HAL/Display/Window.h @@ -1,5 +1,6 @@ #pragma once +#include #include namespace Juliet @@ -17,5 +18,6 @@ namespace Juliet int32 Width; int32 Height; + String Title; }; } // namespace Juliet diff --git a/Juliet/src/Core/HAL/DynLib/Win32/DynamicLibrary.cpp b/Juliet/src/Core/HAL/DynLib/Win32/DynamicLibrary.cpp index 12fce36..57c40e9 100644 --- a/Juliet/src/Core/HAL/DynLib/Win32/DynamicLibrary.cpp +++ b/Juliet/src/Core/HAL/DynLib/Win32/DynamicLibrary.cpp @@ -1,7 +1,7 @@ -#include - #include #include +#include +#include namespace Juliet { @@ -26,12 +26,15 @@ namespace Juliet FunctionPtr LoadFunction(NonNullPtr lib, const char* functionName) { +#pragma warning(push) +#pragma warning(disable: 4191) // Disable "unsafe conversion from FARPROC" auto function = reinterpret_cast(GetProcAddress(reinterpret_cast(lib.Get()), functionName)); if (!function) { Log(LogLevel::Error, LogCategory::Core, "Failed loading %s", functionName); } return function; +#pragma warning(pop) } void UnloadDynamicLibrary(NonNullPtr lib) diff --git a/Juliet/src/Core/HAL/Event/Keyboard.cpp b/Juliet/src/Core/HAL/Event/Keyboard.cpp index 0b27897..f86a018 100644 --- a/Juliet/src/Core/HAL/Event/Keyboard.cpp +++ b/Juliet/src/Core/HAL/Event/Keyboard.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include @@ -17,7 +15,7 @@ namespace Juliet KeyMod KeyModState; } KeyboardState; - bool SendKeyboardKey_Internal(uint64 timestamp, KeyboardID ID, Key key, KeyState keyState) + bool SendKeyboardKey_Internal(uint64 timestamp, KeyboardID /*ID*/, Key key, KeyState keyState) { Assert(key.KeyCode == KeyCode::Unknown); // At this point Keycode is not yet extracted diff --git a/Juliet/src/Core/HAL/Event/KeyboardMapping.cpp b/Juliet/src/Core/HAL/Event/KeyboardMapping.cpp index a83d099..f6d23f0 100644 --- a/Juliet/src/Core/HAL/Event/KeyboardMapping.cpp +++ b/Juliet/src/Core/HAL/Event/KeyboardMapping.cpp @@ -1,5 +1,4 @@ -#include - +#include #include #include #include @@ -161,7 +160,7 @@ namespace Juliet { if (scanCode <= ScanCode::Unknown || scanCode > ScanCode::Count) { - Assert(false && "Unsupported KeyCode (out of bounds)"); + Assert(false , "Unsupported KeyCode (out of bounds)"); return KeyCode::Unknown; } @@ -173,7 +172,7 @@ namespace Juliet // Handles A-Z characters if (scanCode <= ScanCode::Z) { - const auto index = ToUnderlying(scanCode - ScanCode::A); + const auto index = scanCode - ScanCode::A; bool isShiftPressed = (keyModState & KeyMod::Shift) != KeyMod::None; if ((keyModState & KeyMod::CapsLock) != KeyMod::None) { @@ -182,15 +181,15 @@ namespace Juliet if (isShiftPressed) { - return ToEnum('A' + index); + return ToEnum(static_cast('A') + index); } - return ToEnum('a' + index); + return ToEnum(static_cast('a') + index); } // Handles Num1 to Num0 if (scanCode <= ScanCode::Num0) { - const auto index = ToUnderlying<>(scanCode - ScanCode::Num1); + const auto index = scanCode - ScanCode::Num1; const bool isShiftPressed = (keyModState & KeyMod::Shift) != KeyMod::None; if (isShiftPressed) { diff --git a/Juliet/src/Core/HAL/Event/Mouse.cpp b/Juliet/src/Core/HAL/Event/Mouse.cpp index 11ee0e8..822f6cb 100644 --- a/Juliet/src/Core/HAL/Event/Mouse.cpp +++ b/Juliet/src/Core/HAL/Event/Mouse.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Core/HAL/Event/SystemEvent.cpp b/Juliet/src/Core/HAL/Event/SystemEvent.cpp index 5f1d5b5..771ceca 100644 --- a/Juliet/src/Core/HAL/Event/SystemEvent.cpp +++ b/Juliet/src/Core/HAL/Event/SystemEvent.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -36,25 +36,44 @@ namespace Juliet return WaitEvent(event, 0); } - // TODO : use chrono to tag the timeout correctly with nanosec - // timeout == -1 means wait for any event before pursuing - // timeout == 0 means checking once for the frame and getting out - // timeout > 0 means wait until time is out bool WaitEvent(SystemEvent& event, int32 timeoutInNS /* = -1 */) { - PumpEvents(); + using namespace std::chrono; - if (eventQueue.empty()) + // Handle the "Infinite Wait" and "Timed Wait" logic + const bool isInfinite = (timeoutInNS < 0); + const nanoseconds timeout(timeoutInNS); + const auto startTime = steady_clock::now(); + + while (true) { - // TODO : Infinite loop here to wait for event if timeout > 0 + PumpEvents(); - return false; + if (!eventQueue.empty()) + { + event = eventQueue.front(); + eventQueue.pop(); + return true; + } + + // If timeout is 0, we only check once (PumpEvents already ran) + if (timeoutInNS == 0) + { + break; + } + + // Check if we have exceeded our time limit + if (!isInfinite) + { + auto elapsed = steady_clock::now() - startTime; + if (elapsed >= timeout) + { + break; + } + } } - event = eventQueue.front(); - eventQueue.pop(); - - return true; + return false; } bool AddEvent(SystemEvent& event) diff --git a/Juliet/src/Core/HAL/Event/WindowEvent.cpp b/Juliet/src/Core/HAL/Event/WindowEvent.cpp index ba65a5d..9cfd9be 100644 --- a/Juliet/src/Core/HAL/Event/WindowEvent.cpp +++ b/Juliet/src/Core/HAL/Event/WindowEvent.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Core/HAL/Filesystem/Filesystem.cpp b/Juliet/src/Core/HAL/Filesystem/Filesystem.cpp index dac7678..341a870 100644 --- a/Juliet/src/Core/HAL/Filesystem/Filesystem.cpp +++ b/Juliet/src/Core/HAL/Filesystem/Filesystem.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Core/HAL/Filesystem/Win32/Win32Filesystem.cpp b/Juliet/src/Core/HAL/Filesystem/Win32/Win32Filesystem.cpp index 6671e6e..20bcae7 100644 --- a/Juliet/src/Core/HAL/Filesystem/Win32/Win32Filesystem.cpp +++ b/Juliet/src/Core/HAL/Filesystem/Win32/Win32Filesystem.cpp @@ -1,8 +1,8 @@ -#include - #include #include #include +#include +#include #include namespace Juliet::Platform diff --git a/Juliet/src/Core/HAL/IO/IOStream.cpp b/Juliet/src/Core/HAL/IO/IOStream.cpp index 7fd00a9..c0a7ba4 100644 --- a/Juliet/src/Core/HAL/IO/IOStream.cpp +++ b/Juliet/src/Core/HAL/IO/IOStream.cpp @@ -1,8 +1,9 @@ -#include +#include #include -#include #include +#include +#include #include #include #include @@ -25,15 +26,15 @@ namespace Juliet return Internal::IOFromFile(filename, mode); } - IOStream* IOFromInterface(NonNullPtr interface, NonNullPtr payload) + IOStream* IOFromInterface(NonNullPtr streamInterface, NonNullPtr payload) { - Assert(interface->Version >= sizeof(*interface.Get())); + Assert(streamInterface->Version >= sizeof(*streamInterface.Get())); auto stream = static_cast(Calloc(1, sizeof(IOStream))); if (stream) { IOStreamInterface* dstInterface = &stream->Interface; - const IOStreamInterface* srcInterface = interface.Get(); + const IOStreamInterface* srcInterface = streamInterface.Get(); static_assert(sizeof(*(dstInterface)) == sizeof(*(srcInterface)), "Source and Destination type mismatch"); MemCopy(dstInterface, srcInterface, sizeof(*srcInterface)); stream->Data = payload.Get(); @@ -54,7 +55,7 @@ namespace Juliet Assert(writtenSize >= 0); - ByteBuffer buffer = {.Data = reinterpret_cast(formattedBuffer), .Size = static_cast(writtenSize) }; + ByteBuffer buffer = { .Data = reinterpret_cast(formattedBuffer), .Size = static_cast(writtenSize) }; return IOWrite(stream, buffer); } @@ -161,13 +162,14 @@ namespace Juliet // Try reading the size from the stream, if failing we'll try to read it chunk by chunk bool loadChunks = false; - int64 size = IOSize(stream); - if (size < 0) + int64 ssize = IOSize(stream); + if (ssize < 0) { - size = kFileChunkSize; + ssize = kFileChunkSize; loadChunks = true; } - data = static_cast(Malloc(static_cast(size + 1))); + size_t size = static_cast(ssize); + data = static_cast(Malloc(static_cast(size + 1))); if (!data) { return {}; @@ -179,7 +181,7 @@ namespace Juliet { if ((totalSize + kFileChunkSize) > size) { - size = static_cast(totalSize + kFileChunkSize); + size = totalSize + kFileChunkSize; newData = static_cast(Realloc(data, static_cast(size + 1))); if (!newData) { diff --git a/Juliet/src/Core/HAL/IO/Win32/Win32IOStream.cpp b/Juliet/src/Core/HAL/IO/Win32/Win32IOStream.cpp index 509bbd2..5b4ea20 100644 --- a/Juliet/src/Core/HAL/IO/Win32/Win32IOStream.cpp +++ b/Juliet/src/Core/HAL/IO/Win32/Win32IOStream.cpp @@ -1,9 +1,9 @@ -#include - #include #include #include #include +#include +#include #include namespace Juliet::Internal @@ -197,7 +197,7 @@ namespace Juliet::Internal // "a+"= append + read, file may not exist // "w+" = read, write, truncate. file may not exist -#if _DEBUG +#if JULIET_DEBUG // Making sure the mode is valid size_t modeLength = StringLength(mode); Assert((modeLength <= 2) && diff --git a/Juliet/src/Core/HAL/Win32.h b/Juliet/src/Core/HAL/Win32.h index 509429a..f551b44 100644 --- a/Juliet/src/Core/HAL/Win32.h +++ b/Juliet/src/Core/HAL/Win32.h @@ -15,11 +15,20 @@ #endif // Only Supports Win10 and greater +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +#endif + #undef WINVER #undef _WIN32_WINNT -#define _WIN32_WINNT 0x0A00 +#define _WIN32_WINNT _WIN32_WINNT_WIN10 #define WINVER _WIN32_WINNT +#ifdef __clang__ + #pragma clang diagnostic pop +#endif + #define NOIME #define NOWINRES #define NOGDICAPMASKS diff --git a/Juliet/src/Core/HotReload/HotReload.cpp b/Juliet/src/Core/HotReload/HotReload.cpp index 1b84e0a..b62ede9 100644 --- a/Juliet/src/Core/HotReload/HotReload.cpp +++ b/Juliet/src/Core/HotReload/HotReload.cpp @@ -1,7 +1,7 @@ -#include - #include #include +#include +#include #include #include @@ -29,7 +29,7 @@ namespace Juliet Log(LogLevel::Error, LogCategory::Core, "Cannot create DLL Full Path"); return; } - code.DLLFullPath.Size = writtenSize; + code.DLLFullPath.Size = static_cast(writtenSize); // Lock filename path const size_t lockPathLength = basePathLength + StringLength(lockFilename) + 1; // Need +1 because snprintf needs 0 terminated strings @@ -42,7 +42,7 @@ namespace Juliet Log(LogLevel::Error, LogCategory::Core, "Cannot create lock file full path"); return; } - code.LockFullPath.Size = writtenSize; + code.LockFullPath.Size = static_cast(writtenSize); LoadCode(code); } diff --git a/Juliet/src/Core/HotReload/Win32/Win32HotReload.cpp b/Juliet/src/Core/HotReload/Win32/Win32HotReload.cpp index 601cb15..19029c1 100644 --- a/Juliet/src/Core/HotReload/Win32/Win32HotReload.cpp +++ b/Juliet/src/Core/HotReload/Win32/Win32HotReload.cpp @@ -1,9 +1,9 @@ -#include - #include #include #include #include +#include +#include #include namespace Juliet @@ -59,10 +59,23 @@ namespace Juliet // int to char char idToStr[kTempDLLBufferSizeForID + 1]; int idLength = snprintf(idToStr, sizeof(idToStr), "%u", code.UniqueID); + if (idLength < 0) + { + SafeFree(tempDllPath); + Log(LogLevel::Error, LogCategory::Core, "Cannot create temp full path"); + return; + } int writtenSize = snprintf(tempDllPath, tempDllMaxBufferSize, "%s%s_%s", CStr(basePath), idToStr, CStr(code.TransientDLLName)); - if (writtenSize < static_cast(basePathLength + idLength + code.TransientDLLName.Size) - 1) + if (writtenSize < 0) + { + SafeFree(tempDllPath); + Log(LogLevel::Error, LogCategory::Core, "Cannot create temp full path"); + return; + } + + if (static_cast(writtenSize) + 1 < basePathLength + static_cast(idLength) + code.TransientDLLName.Size) { SafeFree(tempDllPath); Log(LogLevel::Error, LogCategory::Core, "Cannot create temp full path"); diff --git a/Juliet/src/Core/Juliet.cpp b/Juliet/src/Core/Juliet.cpp index 4c53513..96bc778 100644 --- a/Juliet/src/Core/Juliet.cpp +++ b/Juliet/src/Core/Juliet.cpp @@ -1,5 +1,4 @@ -#include - +#include #include #include #include diff --git a/Juliet/src/Core/Logging/LogManager.cpp b/Juliet/src/Core/Logging/LogManager.cpp index b44f59d..56c311e 100644 --- a/Juliet/src/Core/Logging/LogManager.cpp +++ b/Juliet/src/Core/Logging/LogManager.cpp @@ -1,5 +1,3 @@ -#include - #include #include @@ -29,7 +27,7 @@ namespace Juliet , Category(category) { // TODO Juliet clock - Time = std::chrono::system_clock::now().time_since_epoch().count(); + Time = std::chrono::system_clock::now(); } LogManager::LogManager() @@ -66,10 +64,15 @@ namespace Juliet void LogManager::OutputLog(Entry& entry) { // TODO Juliet Output io for each platform + + // {:%F} is YYYY-MM-DD, {:%T} is HH:MM:SS.ffffff + std::string timestamp = std::format("[{:%F %T}] ", entry.Time); + std::string fullMessage = timestamp + entry.Value + "\n"; + #ifdef JULIET_WIN32 - OutputDebugStringA((entry.Value + "\n").c_str()); + OutputDebugStringA(fullMessage.c_str()); #endif - printf("%s", (entry.Value + "\n").c_str()); + printf("%s", fullMessage.c_str()); } void InitializeLogManager() diff --git a/Juliet/src/Core/Math/MathRound.cpp b/Juliet/src/Core/Math/MathRound.cpp index 9baf97d..1197742 100644 --- a/Juliet/src/Core/Math/MathRound.cpp +++ b/Juliet/src/Core/Math/MathRound.cpp @@ -1,32 +1,41 @@ -#include - +#include #include +#include + namespace Juliet { // From MUSL lib https://github.com/rofl0r/musl -#if FLT_EVAL_METHOD == 0 -#define EPS FLT_EPSILON -#elif FLT_EVAL_METHOD == 1 -#define EPS DBL_EPSILON -#elif FLT_EVAL_METHOD == 2 -#define EPS LDBL_EPSILON -#endif - namespace { - const float_t toint = 1 / EPS; - } + consteval float GetEps() + { +#if defined(__FLT_EVAL_METHOD__) + if constexpr (__FLT_EVAL_METHOD__ == 1) + { + return static_cast(DBL_EPSILON); + } + if constexpr (__FLT_EVAL_METHOD__ == 2) + { + return static_cast(LDBL_EPSILON); + } +#endif + return FLT_EPSILON; + } + + constexpr float EPS = GetEps(); + constexpr float toint = 1.0f / EPS; + } // namespace float RoundF(float value) { union { - float f; - uint32_t i; - } u = { value }; - int e = u.i >> 23 & 0xff; - float_t y; + float f; + uint32 i; + } u = { value }; + auto e = u.i >> 23 & 0xff; + float y = 0.0f; if (e >= 0x7f + 23) { @@ -38,7 +47,7 @@ namespace Juliet } if (e < 0x7f - 1) { - FORCE_EVAL(value + toint); + ForceEval(value + toint); return 0 * u.f; } y = value + toint - toint - value; diff --git a/Juliet/src/Core/Math/Math_Private.h b/Juliet/src/Core/Math/Math_Private.h index 713c746..19106c3 100644 --- a/Juliet/src/Core/Math/Math_Private.h +++ b/Juliet/src/Core/Math/Math_Private.h @@ -9,6 +9,7 @@ namespace Juliet { volatile float y; y = x; + (void)y; } #endif @@ -18,6 +19,7 @@ namespace Juliet { volatile double y; y = x; + (void)y; } #endif @@ -27,25 +29,25 @@ namespace Juliet { volatile long double y; y = x; + (void)y; } #endif -#define FORCE_EVAL(x) \ - do \ - { \ - if (sizeof(x) == sizeof(float)) \ - { \ - fp_force_evalf(x); \ - } \ - else if (sizeof(x) == sizeof(double)) \ - { \ - fp_force_eval(x); \ - } \ - else \ - { \ - fp_force_evall(x); \ - } \ - } \ - while (0) + template + inline void ForceEval(T x) + { + if constexpr (std::is_same_v) + { + fp_force_evalf(x); + } + else if constexpr (std::is_same_v) + { + fp_force_eval(x); + } + else + { + fp_force_evall(x); + } + } } // namespace Juliet diff --git a/Juliet/src/Core/Memory/Allocator.cpp b/Juliet/src/Core/Memory/Allocator.cpp index e8e4856..5d6ecb1 100644 --- a/Juliet/src/Core/Memory/Allocator.cpp +++ b/Juliet/src/Core/Memory/Allocator.cpp @@ -1,6 +1,4 @@ -#include - -#include +#include namespace Juliet { @@ -34,7 +32,7 @@ namespace Juliet return retMemory; } - +\ void* Realloc(void* memory, size_t newSize) { if (!newSize) @@ -47,6 +45,4 @@ namespace Juliet return retMemory; } - - void Free(void* memory) {} } // namespace Juliet diff --git a/Juliet/src/Core/Networking/NetworkPacket.cpp b/Juliet/src/Core/Networking/NetworkPacket.cpp index b032c85..e1fdb96 100644 --- a/Juliet/src/Core/Networking/NetworkPacket.cpp +++ b/Juliet/src/Core/Networking/NetworkPacket.cpp @@ -1,5 +1,4 @@ -#include - +#include #include #include diff --git a/Juliet/src/Core/Networking/Socket.cpp b/Juliet/src/Core/Networking/Socket.cpp index 22c3a14..c79011b 100644 --- a/Juliet/src/Core/Networking/Socket.cpp +++ b/Juliet/src/Core/Networking/Socket.cpp @@ -1,5 +1,4 @@ -#include - +#include #include #include #include @@ -18,14 +17,14 @@ namespace Juliet Close(); } - Socket::Socket(Socket&& other) noexcept + Socket::Socket(Socket&& /*other*/) noexcept { - Assert(false); // Unimplemented + Unimplemented(); } - Socket& Socket::operator=(Socket&& socket) noexcept + Socket& Socket::operator=(Socket&& /*socket*/) noexcept { - Assert(false); // Unimplemented + Unimplemented(); return *this; } diff --git a/Juliet/src/Core/Networking/SocketPlatformImpl.h b/Juliet/src/Core/Networking/SocketPlatformImpl.h index 359db28..b185804 100644 --- a/Juliet/src/Core/Networking/SocketPlatformImpl.h +++ b/Juliet/src/Core/Networking/SocketPlatformImpl.h @@ -7,7 +7,7 @@ // TODO : implement for other platforms #if JULIET_WIN32 -#include +#include #else // UNIMPLEMENT_SOCKETS diff --git a/Juliet/src/Core/Networking/TcpListener.cpp b/Juliet/src/Core/Networking/TcpListener.cpp index f009127..b2384d1 100644 --- a/Juliet/src/Core/Networking/TcpListener.cpp +++ b/Juliet/src/Core/Networking/TcpListener.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Core/Networking/TcpSocket.cpp b/Juliet/src/Core/Networking/TcpSocket.cpp index 87a8ea9..18f828d 100644 --- a/Juliet/src/Core/Networking/TcpSocket.cpp +++ b/Juliet/src/Core/Networking/TcpSocket.cpp @@ -1,9 +1,7 @@ -#include - #include #include #include -#include +#include #include namespace Juliet @@ -65,7 +63,9 @@ namespace Juliet for (request.Length = 0; request.Length < buffer.Size; request.Length += static_cast(result)) { result = ::send(GetHandle(), reinterpret_cast(buffer.Data + request.Length), - static_cast(buffer.Size) - request.Length, sendFlags); + static_cast(buffer.Size) - + static_cast(request.Length), + sendFlags); // Results is -1 when an error occured. // https://pubs.opengroup.org/onlinepubs/000095399/functions/send.html @@ -85,7 +85,7 @@ namespace Juliet return request; } - Socket::Status TcpSocket::Receive(NetworkPacket& outPacket) + Socket::Status TcpSocket::Receive(NetworkPacket& /*outPacket*/) { return Status::Done; } diff --git a/Juliet/src/Core/Networking/Win32/Win32SocketPlatformImpl.cpp b/Juliet/src/Core/Networking/Win32/Win32SocketPlatformImpl.cpp index 297e92b..b7fff31 100644 --- a/Juliet/src/Core/Networking/Win32/Win32SocketPlatformImpl.cpp +++ b/Juliet/src/Core/Networking/Win32/Win32SocketPlatformImpl.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Engine/Engine.cpp b/Juliet/src/Engine/Engine.cpp index 969f7c4..faa6b72 100644 --- a/Juliet/src/Engine/Engine.cpp +++ b/Juliet/src/Engine/Engine.cpp @@ -1,5 +1,3 @@ -#include - #include #include diff --git a/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.cpp b/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.cpp index 0940492..331f2e1 100644 --- a/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.cpp +++ b/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.cpp @@ -1,6 +1,3 @@ -#include - - //********************************************************* // // Copyright (c) Microsoft Corporation. @@ -8,28 +5,38 @@ // //********************************************************* +// Because Microsoft respects nothing +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wreserved-macro-identifier" + #pragma clang diagnostic ignored "-Wreserved-identifier" + #pragma clang diagnostic ignored "-Wnonportable-system-include-path" + #pragma clang diagnostic ignored "-Wmicrosoft-enum-value" + #pragma clang diagnostic ignored "-Wnested-anon-types" +#endif + #ifndef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN #endif #ifndef NOMINMAX - #define NOMINMAX 1 +#define NOMINMAX 1 #endif #ifdef __MINGW32__ - #include +#include #endif #ifndef _WIN32 - #include +#include #endif -#include "d3dx12_property_format_table.h" #include #include -#include +#include +#include "d3dx12_property_format_table.h" #if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) #include #endif #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606) #ifndef ASSUME - #define ASSUME(x) assert(x) +#define ASSUME(x) assert(x) #endif #define R D3DFCN_R @@ -40,17 +47,17 @@ #define S D3DFCN_S #define X D3DFCN_X -#define _TYPELESS D3DFCI_TYPELESS -#define _FLOAT D3DFCI_FLOAT -#define _SNORM D3DFCI_SNORM -#define _UNORM D3DFCI_UNORM -#define _SINT D3DFCI_SINT -#define _UINT D3DFCI_UINT +#define _TYPELESS D3DFCI_TYPELESS +#define _FLOAT D3DFCI_FLOAT +#define _SNORM D3DFCI_SNORM +#define _UNORM D3DFCI_UNORM +#define _SINT D3DFCI_SINT +#define _UINT D3DFCI_UINT #define _UNORM_SRGB D3DFCI_UNORM_SRGB -#define _FIXED_2_8 D3DFCI_BIASED_FIXED_2_8 +#define _FIXED_2_8 D3DFCI_BIASED_FIXED_2_8 #ifndef INTSAFE_E_ARITHMETIC_OVERFLOW - #define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216L) +#define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216L) #endif // @@ -72,8 +79,8 @@ inline HRESULT Safe_UIntAdd(UINT uAugend, UINT uAddend, UINT* puResult) // inline HRESULT Safe_UIntMult(UINT uMultiplicand, UINT uMultiplier, UINT* puResult) { - ULONGLONG ull64Result = (ULONGLONG)uMultiplicand * (ULONGLONG)uMultiplier; - + ULONGLONG ull64Result = (ULONGLONG)uMultiplicand * (ULONGLONG)uMultiplier; + if (ull64Result <= UINT_MAX) { *puResult = (UINT)ull64Result; @@ -83,235 +90,225 @@ inline HRESULT Safe_UIntMult(UINT uMultiplicand, UINT uMultiplier, UINT* puResul return E_FAIL; } -const LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatNames[] = // separate from above structure so it can be compiled out of the runtime. -{ -// Name - "UNKNOWN", - "R32G32B32A32_TYPELESS", - "R32G32B32A32_FLOAT", - "R32G32B32A32_UINT", - "R32G32B32A32_SINT", - "R32G32B32_TYPELESS", - "R32G32B32_FLOAT", - "R32G32B32_UINT", - "R32G32B32_SINT", - "R16G16B16A16_TYPELESS", - "R16G16B16A16_FLOAT", - "R16G16B16A16_UNORM", - "R16G16B16A16_UINT", - "R16G16B16A16_SNORM", - "R16G16B16A16_SINT", - "R32G32_TYPELESS", - "R32G32_FLOAT", - "R32G32_UINT", - "R32G32_SINT", - "R32G8X24_TYPELESS", - "D32_FLOAT_S8X24_UINT", - "R32_FLOAT_X8X24_TYPELESS", - "X32_TYPELESS_G8X24_UINT", - "R10G10B10A2_TYPELESS", - "R10G10B10A2_UNORM", - "R10G10B10A2_UINT", - "R11G11B10_FLOAT", - "R8G8B8A8_TYPELESS", - "R8G8B8A8_UNORM", - "R8G8B8A8_UNORM_SRGB", - "R8G8B8A8_UINT", - "R8G8B8A8_SNORM", - "R8G8B8A8_SINT", - "R16G16_TYPELESS", - "R16G16_FLOAT", - "R16G16_UNORM", - "R16G16_UINT", - "R16G16_SNORM", - "R16G16_SINT", - "R32_TYPELESS", - "D32_FLOAT", - "R32_FLOAT", - "R32_UINT", - "R32_SINT", - "R24G8_TYPELESS", - "D24_UNORM_S8_UINT", - "R24_UNORM_X8_TYPELESS", - "X24_TYPELESS_G8_UINT", - "R8G8_TYPELESS", - "R8G8_UNORM", - "R8G8_UINT", - "R8G8_SNORM", - "R8G8_SINT", - "R16_TYPELESS", - "R16_FLOAT", - "D16_UNORM", - "R16_UNORM", - "R16_UINT", - "R16_SNORM", - "R16_SINT", - "R8_TYPELESS", - "R8_UNORM", - "R8_UINT", - "R8_SNORM", - "R8_SINT", - "A8_UNORM", - "R1_UNORM", - "R9G9B9E5_SHAREDEXP", - "R8G8_B8G8_UNORM", - "G8R8_G8B8_UNORM", - "BC1_TYPELESS", - "BC1_UNORM", - "BC1_UNORM_SRGB", - "BC2_TYPELESS", - "BC2_UNORM", - "BC2_UNORM_SRGB", - "BC3_TYPELESS", - "BC3_UNORM", - "BC3_UNORM_SRGB", - "BC4_TYPELESS", - "BC4_UNORM", - "BC4_SNORM", - "BC5_TYPELESS", - "BC5_UNORM", - "BC5_SNORM", - "B5G6R5_UNORM", - "B5G5R5A1_UNORM", - "B8G8R8A8_UNORM", - "B8G8R8X8_UNORM", - "R10G10B10_XR_BIAS_A2_UNORM", - "B8G8R8A8_TYPELESS", - "B8G8R8A8_UNORM_SRGB", - "B8G8R8X8_TYPELESS", - "B8G8R8X8_UNORM_SRGB", - "BC6H_TYPELESS", - "BC6H_UF16", - "BC6H_SF16", - "BC7_TYPELESS", - "BC7_UNORM", - "BC7_UNORM_SRGB", - "AYUV", - "Y410", - "Y416", - "NV12", - "P010", - "P016", - "420_OPAQUE", - "YUY2", - "Y210", - "Y216", - "NV11", - "AI44", - "IA44", - "P8", - "A8P8", - "B4G4R4A4_UNORM", +const LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatNames[] = // separate from above structure so it can be compiled out of the runtime. + { + // Name + "UNKNOWN", + "R32G32B32A32_TYPELESS", + "R32G32B32A32_FLOAT", + "R32G32B32A32_UINT", + "R32G32B32A32_SINT", + "R32G32B32_TYPELESS", + "R32G32B32_FLOAT", + "R32G32B32_UINT", + "R32G32B32_SINT", + "R16G16B16A16_TYPELESS", + "R16G16B16A16_FLOAT", + "R16G16B16A16_UNORM", + "R16G16B16A16_UINT", + "R16G16B16A16_SNORM", + "R16G16B16A16_SINT", + "R32G32_TYPELESS", + "R32G32_FLOAT", + "R32G32_UINT", + "R32G32_SINT", + "R32G8X24_TYPELESS", + "D32_FLOAT_S8X24_UINT", + "R32_FLOAT_X8X24_TYPELESS", + "X32_TYPELESS_G8X24_UINT", + "R10G10B10A2_TYPELESS", + "R10G10B10A2_UNORM", + "R10G10B10A2_UINT", + "R11G11B10_FLOAT", + "R8G8B8A8_TYPELESS", + "R8G8B8A8_UNORM", + "R8G8B8A8_UNORM_SRGB", + "R8G8B8A8_UINT", + "R8G8B8A8_SNORM", + "R8G8B8A8_SINT", + "R16G16_TYPELESS", + "R16G16_FLOAT", + "R16G16_UNORM", + "R16G16_UINT", + "R16G16_SNORM", + "R16G16_SINT", + "R32_TYPELESS", + "D32_FLOAT", + "R32_FLOAT", + "R32_UINT", + "R32_SINT", + "R24G8_TYPELESS", + "D24_UNORM_S8_UINT", + "R24_UNORM_X8_TYPELESS", + "X24_TYPELESS_G8_UINT", + "R8G8_TYPELESS", + "R8G8_UNORM", + "R8G8_UINT", + "R8G8_SNORM", + "R8G8_SINT", + "R16_TYPELESS", + "R16_FLOAT", + "D16_UNORM", + "R16_UNORM", + "R16_UINT", + "R16_SNORM", + "R16_SINT", + "R8_TYPELESS", + "R8_UNORM", + "R8_UINT", + "R8_SNORM", + "R8_SINT", + "A8_UNORM", + "R1_UNORM", + "R9G9B9E5_SHAREDEXP", + "R8G8_B8G8_UNORM", + "G8R8_G8B8_UNORM", + "BC1_TYPELESS", + "BC1_UNORM", + "BC1_UNORM_SRGB", + "BC2_TYPELESS", + "BC2_UNORM", + "BC2_UNORM_SRGB", + "BC3_TYPELESS", + "BC3_UNORM", + "BC3_UNORM_SRGB", + "BC4_TYPELESS", + "BC4_UNORM", + "BC4_SNORM", + "BC5_TYPELESS", + "BC5_UNORM", + "BC5_SNORM", + "B5G6R5_UNORM", + "B5G5R5A1_UNORM", + "B8G8R8A8_UNORM", + "B8G8R8X8_UNORM", + "R10G10B10_XR_BIAS_A2_UNORM", + "B8G8R8A8_TYPELESS", + "B8G8R8A8_UNORM_SRGB", + "B8G8R8X8_TYPELESS", + "B8G8R8X8_UNORM_SRGB", + "BC6H_TYPELESS", + "BC6H_UF16", + "BC6H_SF16", + "BC7_TYPELESS", + "BC7_UNORM", + "BC7_UNORM_SRGB", + "AYUV", + "Y410", + "Y416", + "NV12", + "P010", + "P016", + "420_OPAQUE", + "YUY2", + "Y210", + "Y216", + "NV11", + "AI44", + "IA44", + "P8", + "A8P8", + "B4G4R4A4_UNORM", - nullptr, // 116 - nullptr, // 117 - nullptr, // 118 - nullptr, // 119 - nullptr, // 120 - nullptr, // 121 - nullptr, // 122 - nullptr, // 123 - nullptr, // 124 - nullptr, // 125 - nullptr, // 126 - nullptr, // 127 - nullptr, // 128 - nullptr, // 129 + nullptr, // 116 + nullptr, // 117 + nullptr, // 118 + nullptr, // 119 + nullptr, // 120 + nullptr, // 121 + nullptr, // 122 + nullptr, // 123 + nullptr, // 124 + nullptr, // 125 + nullptr, // 126 + nullptr, // 127 + nullptr, // 128 + nullptr, // 129 - "P208", - "V208", - "V408", + "P208", + "V208", + "V408", - NULL, // 133 - NULL, // 134 - NULL, // 135 - NULL, // 136 - NULL, // 137 - NULL, // 138 - NULL, // 139 - NULL, // 140 - NULL, // 141 - NULL, // 142 - NULL, // 143 - NULL, // 144 - NULL, // 145 - NULL, // 146 - NULL, // 147 - NULL, // 148 - NULL, // 149 - NULL, // 150 - NULL, // 151 - NULL, // 152 - NULL, // 153 - NULL, // 154 - NULL, // 155 - NULL, // 156 - NULL, // 157 - NULL, // 158 - NULL, // 159 - NULL, // 160 - NULL, // 161 - NULL, // 162 - NULL, // 163 - NULL, // 164 - NULL, // 165 - NULL, // 166 - NULL, // 167 - NULL, // 168 - NULL, // 169 - NULL, // 170 - NULL, // 171 - NULL, // 172 - NULL, // 173 - NULL, // 174 - NULL, // 175 - NULL, // 176 - NULL, // 177 - NULL, // 178 - NULL, // 179 - NULL, // 180 - NULL, // 181 - NULL, // 182 - NULL, // 183 - NULL, // 184 - NULL, // 185 - NULL, // 186 - NULL, // 187 - NULL, // 188 + nullptr, // 133 + nullptr, // 134 + nullptr, // 135 + nullptr, // 136 + nullptr, // 137 + nullptr, // 138 + nullptr, // 139 + nullptr, // 140 + nullptr, // 141 + nullptr, // 142 + nullptr, // 143 + nullptr, // 144 + nullptr, // 145 + nullptr, // 146 + nullptr, // 147 + nullptr, // 148 + nullptr, // 149 + nullptr, // 150 + nullptr, // 151 + nullptr, // 152 + nullptr, // 153 + nullptr, // 154 + nullptr, // 155 + nullptr, // 156 + nullptr, // 157 + nullptr, // 158 + nullptr, // 159 + nullptr, // 160 + nullptr, // 161 + nullptr, // 162 + nullptr, // 163 + nullptr, // 164 + nullptr, // 165 + nullptr, // 166 + nullptr, // 167 + nullptr, // 168 + nullptr, // 169 + nullptr, // 170 + nullptr, // 171 + nullptr, // 172 + nullptr, // 173 + nullptr, // 174 + nullptr, // 175 + nullptr, // 176 + nullptr, // 177 + nullptr, // 178 + nullptr, // 179 + nullptr, // 180 + nullptr, // 181 + nullptr, // 182 + nullptr, // 183 + nullptr, // 184 + nullptr, // 185 + nullptr, // 186 + nullptr, // 187 + nullptr, // 188 - "SAMPLER_FEEDBACK_MIN_MIP_OPAQUE", - "SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE", - "A4B4G4R4_UNORM", -}; + "SAMPLER_FEEDBACK_MIN_MIP_OPAQUE", + "SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE", + "A4B4G4R4_UNORM", + }; // -------------------------------------------------------------------------------------------------------------------------------- // Format Cast Sets // -------------------------------------------------------------------------------------------------------------------------------- -constexpr DXGI_FORMAT D3DFCS_UNKNOWN[] = -{ +constexpr DXGI_FORMAT D3DFCS_UNKNOWN[] = { DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R32G32B32A32[] = -{ - DXGI_FORMAT_R32G32B32A32_TYPELESS, - DXGI_FORMAT_R32G32B32A32_FLOAT, - DXGI_FORMAT_R32G32B32A32_UINT, - DXGI_FORMAT_R32G32B32A32_SINT, +constexpr DXGI_FORMAT D3DFCS_R32G32B32A32[] = { + DXGI_FORMAT_R32G32B32A32_TYPELESS, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_UINT, DXGI_FORMAT_R32G32B32A32_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R32G32B32[] = -{ - DXGI_FORMAT_R32G32B32_TYPELESS, - DXGI_FORMAT_R32G32B32_FLOAT, - DXGI_FORMAT_R32G32B32_UINT, - DXGI_FORMAT_R32G32B32_SINT, +constexpr DXGI_FORMAT D3DFCS_R32G32B32[] = { + DXGI_FORMAT_R32G32B32_TYPELESS, DXGI_FORMAT_R32G32B32_FLOAT, DXGI_FORMAT_R32G32B32_UINT, DXGI_FORMAT_R32G32B32_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R16G16B16A16[] = -{ +constexpr DXGI_FORMAT D3DFCS_R16G16B16A16[] = { DXGI_FORMAT_R16G16B16A16_TYPELESS, DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_UNORM, @@ -321,32 +318,23 @@ constexpr DXGI_FORMAT D3DFCS_R16G16B16A16[] = DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R32G32[] = -{ - DXGI_FORMAT_R32G32_TYPELESS, - DXGI_FORMAT_R32G32_FLOAT, - DXGI_FORMAT_R32G32_UINT, - DXGI_FORMAT_R32G32_SINT, +constexpr DXGI_FORMAT D3DFCS_R32G32[] = { + DXGI_FORMAT_R32G32_TYPELESS, DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R32G8X24[] = -{ - DXGI_FORMAT_R32G8X24_TYPELESS, - DXGI_FORMAT_D32_FLOAT_S8X24_UINT, - DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, +constexpr DXGI_FORMAT D3DFCS_R32G8X24[] = { + DXGI_FORMAT_R32G8X24_TYPELESS, DXGI_FORMAT_D32_FLOAT_S8X24_UINT, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, DXGI_FORMAT_X32_TYPELESS_G8X24_UINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R11G11B10[] = -{ +constexpr DXGI_FORMAT D3DFCS_R11G11B10[] = { DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R8G8B8A8[] = -{ +constexpr DXGI_FORMAT D3DFCS_R8G8B8A8[] = { DXGI_FORMAT_R8G8B8A8_TYPELESS, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, @@ -356,526 +344,5627 @@ constexpr DXGI_FORMAT D3DFCS_R8G8B8A8[] = DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R16G16[] = -{ - DXGI_FORMAT_R16G16_TYPELESS, - DXGI_FORMAT_R16G16_FLOAT, - DXGI_FORMAT_R16G16_UNORM, - DXGI_FORMAT_R16G16_UINT, - DXGI_FORMAT_R16G16_SNORM, - DXGI_FORMAT_R16G16_SINT, +constexpr DXGI_FORMAT D3DFCS_R16G16[] = { + DXGI_FORMAT_R16G16_TYPELESS, DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_UNORM, + DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_SNORM, DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R32[] = -{ - DXGI_FORMAT_R32_TYPELESS, - DXGI_FORMAT_D32_FLOAT, - DXGI_FORMAT_R32_FLOAT, - DXGI_FORMAT_R32_UINT, - DXGI_FORMAT_R32_SINT, +constexpr DXGI_FORMAT D3DFCS_R32[] = { + DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_R32_UINT, DXGI_FORMAT_R32_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R24G8[] = -{ - DXGI_FORMAT_R24G8_TYPELESS, - DXGI_FORMAT_D24_UNORM_S8_UINT, - DXGI_FORMAT_R24_UNORM_X8_TYPELESS, - DXGI_FORMAT_X24_TYPELESS_G8_UINT, +constexpr DXGI_FORMAT D3DFCS_R24G8[] = { + DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_X24_TYPELESS_G8_UINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R8G8[] = -{ - DXGI_FORMAT_R8G8_TYPELESS, - DXGI_FORMAT_R8G8_UNORM, - DXGI_FORMAT_R8G8_UINT, - DXGI_FORMAT_R8G8_SNORM, - DXGI_FORMAT_R8G8_SINT, +constexpr DXGI_FORMAT D3DFCS_R8G8[] = { + DXGI_FORMAT_R8G8_TYPELESS, DXGI_FORMAT_R8G8_UNORM, DXGI_FORMAT_R8G8_UINT, + DXGI_FORMAT_R8G8_SNORM, DXGI_FORMAT_R8G8_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R16[] = -{ - DXGI_FORMAT_R16_TYPELESS, - DXGI_FORMAT_R16_FLOAT, - DXGI_FORMAT_D16_UNORM, - DXGI_FORMAT_R16_UNORM, - DXGI_FORMAT_R16_UINT, - DXGI_FORMAT_R16_SNORM, - DXGI_FORMAT_R16_SINT, +constexpr DXGI_FORMAT D3DFCS_R16[] = { + DXGI_FORMAT_R16_TYPELESS, DXGI_FORMAT_R16_FLOAT, DXGI_FORMAT_D16_UNORM, DXGI_FORMAT_R16_UNORM, + DXGI_FORMAT_R16_UINT, DXGI_FORMAT_R16_SNORM, DXGI_FORMAT_R16_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R8[] = -{ - DXGI_FORMAT_R8_TYPELESS, - DXGI_FORMAT_R8_UNORM, - DXGI_FORMAT_R8_UINT, - DXGI_FORMAT_R8_SNORM, - DXGI_FORMAT_R8_SINT, +constexpr DXGI_FORMAT D3DFCS_R8[] = { + DXGI_FORMAT_R8_TYPELESS, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UINT, DXGI_FORMAT_R8_SNORM, DXGI_FORMAT_R8_SINT, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_A8[] = -{ +constexpr DXGI_FORMAT D3DFCS_A8[] = { DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R1[] = -{ +constexpr DXGI_FORMAT D3DFCS_R1[] = { DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R9G9B9E5[] = -{ +constexpr DXGI_FORMAT D3DFCS_R9G9B9E5[] = { DXGI_FORMAT_R9G9B9E5_SHAREDEXP, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R8G8_B8G8[] = -{ +constexpr DXGI_FORMAT D3DFCS_R8G8_B8G8[] = { DXGI_FORMAT_R8G8_B8G8_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_G8R8_G8B8[] = -{ +constexpr DXGI_FORMAT D3DFCS_G8R8_G8B8[] = { DXGI_FORMAT_G8R8_G8B8_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC1[] = -{ - DXGI_FORMAT_BC1_TYPELESS, - DXGI_FORMAT_BC1_UNORM, - DXGI_FORMAT_BC1_UNORM_SRGB, +constexpr DXGI_FORMAT D3DFCS_BC1[] = { + DXGI_FORMAT_BC1_TYPELESS, DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM_SRGB, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC2[] = -{ - DXGI_FORMAT_BC2_TYPELESS, - DXGI_FORMAT_BC2_UNORM, - DXGI_FORMAT_BC2_UNORM_SRGB, +constexpr DXGI_FORMAT D3DFCS_BC2[] = { + DXGI_FORMAT_BC2_TYPELESS, DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM_SRGB, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC3[] = -{ - DXGI_FORMAT_BC3_TYPELESS, - DXGI_FORMAT_BC3_UNORM, - DXGI_FORMAT_BC3_UNORM_SRGB, +constexpr DXGI_FORMAT D3DFCS_BC3[] = { + DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM_SRGB, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC4[] = -{ - DXGI_FORMAT_BC4_TYPELESS, - DXGI_FORMAT_BC4_UNORM, - DXGI_FORMAT_BC4_SNORM, +constexpr DXGI_FORMAT D3DFCS_BC4[] = { + DXGI_FORMAT_BC4_TYPELESS, DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_BC4_SNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC5[] = -{ - DXGI_FORMAT_BC5_TYPELESS, - DXGI_FORMAT_BC5_UNORM, - DXGI_FORMAT_BC5_SNORM, +constexpr DXGI_FORMAT D3DFCS_BC5[] = { + DXGI_FORMAT_BC5_TYPELESS, DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_BC5_SNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_B5G6R5[] = -{ +constexpr DXGI_FORMAT D3DFCS_B5G6R5[] = { DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_B5G5R5A1[] = -{ +constexpr DXGI_FORMAT D3DFCS_B5G5R5A1[] = { DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_B8G8R8A8[] = -{ - DXGI_FORMAT_B8G8R8A8_TYPELESS, - DXGI_FORMAT_B8G8R8A8_UNORM, - DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, +constexpr DXGI_FORMAT D3DFCS_B8G8R8A8[] = { + DXGI_FORMAT_B8G8R8A8_TYPELESS, DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_B8G8R8X8[] = -{ - DXGI_FORMAT_B8G8R8X8_TYPELESS, - DXGI_FORMAT_B8G8R8X8_UNORM, - DXGI_FORMAT_B8G8R8X8_UNORM_SRGB, +constexpr DXGI_FORMAT D3DFCS_B8G8R8X8[] = { + DXGI_FORMAT_B8G8R8X8_TYPELESS, DXGI_FORMAT_B8G8R8X8_UNORM, DXGI_FORMAT_B8G8R8X8_UNORM_SRGB, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_R10G10B10A2[] = -{ - DXGI_FORMAT_R10G10B10A2_TYPELESS, - DXGI_FORMAT_R10G10B10A2_UNORM, - DXGI_FORMAT_R10G10B10A2_UINT, - DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM, +constexpr DXGI_FORMAT D3DFCS_R10G10B10A2[] = { + DXGI_FORMAT_R10G10B10A2_TYPELESS, DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC6H[] = -{ - DXGI_FORMAT_BC6H_TYPELESS, - DXGI_FORMAT_BC6H_UF16, - DXGI_FORMAT_BC6H_SF16, +constexpr DXGI_FORMAT D3DFCS_BC6H[] = { + DXGI_FORMAT_BC6H_TYPELESS, DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_BC7[] = -{ - DXGI_FORMAT_BC7_TYPELESS, - DXGI_FORMAT_BC7_UNORM, - DXGI_FORMAT_BC7_UNORM_SRGB, +constexpr DXGI_FORMAT D3DFCS_BC7[] = { + DXGI_FORMAT_BC7_TYPELESS, DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_BC7_UNORM_SRGB, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_AYUV[] = -{ +constexpr DXGI_FORMAT D3DFCS_AYUV[] = { DXGI_FORMAT_AYUV, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_NV12[] = -{ +constexpr DXGI_FORMAT D3DFCS_NV12[] = { DXGI_FORMAT_NV12, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_YUY2[] = -{ +constexpr DXGI_FORMAT D3DFCS_YUY2[] = { DXGI_FORMAT_YUY2, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_P010[] = -{ +constexpr DXGI_FORMAT D3DFCS_P010[] = { DXGI_FORMAT_P010, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_P016[] = -{ +constexpr DXGI_FORMAT D3DFCS_P016[] = { DXGI_FORMAT_P016, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_NV11[] = -{ +constexpr DXGI_FORMAT D3DFCS_NV11[] = { DXGI_FORMAT_NV11, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_420_OPAQUE[] = -{ +constexpr DXGI_FORMAT D3DFCS_420_OPAQUE[] = { DXGI_FORMAT_420_OPAQUE, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_Y410[] = -{ +constexpr DXGI_FORMAT D3DFCS_Y410[] = { DXGI_FORMAT_Y410, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_Y416[] = -{ +constexpr DXGI_FORMAT D3DFCS_Y416[] = { DXGI_FORMAT_Y416, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_Y210[] = -{ +constexpr DXGI_FORMAT D3DFCS_Y210[] = { DXGI_FORMAT_Y210, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_Y216[] = -{ +constexpr DXGI_FORMAT D3DFCS_Y216[] = { DXGI_FORMAT_Y216, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_AI44[] = -{ +constexpr DXGI_FORMAT D3DFCS_AI44[] = { DXGI_FORMAT_AI44, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_IA44[] = -{ +constexpr DXGI_FORMAT D3DFCS_IA44[] = { DXGI_FORMAT_IA44, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_P8[] = -{ +constexpr DXGI_FORMAT D3DFCS_P8[] = { DXGI_FORMAT_P8, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_A8P8[] = -{ +constexpr DXGI_FORMAT D3DFCS_A8P8[] = { DXGI_FORMAT_A8P8, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_B4G4R4A4[] = -{ +constexpr DXGI_FORMAT D3DFCS_B4G4R4A4[] = { DXGI_FORMAT_B4G4R4A4_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_P208[] = -{ +constexpr DXGI_FORMAT D3DFCS_P208[] = { DXGI_FORMAT_P208, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_V208[] = -{ +constexpr DXGI_FORMAT D3DFCS_V208[] = { DXGI_FORMAT_V208, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr DXGI_FORMAT D3DFCS_V408[] = -{ +constexpr DXGI_FORMAT D3DFCS_V408[] = { DXGI_FORMAT_V408, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; - -constexpr DXGI_FORMAT D3DFCS_A4B4G4R4[] = -{ + +constexpr DXGI_FORMAT D3DFCS_A4B4G4R4[] = { DXGI_FORMAT_A4B4G4R4_UNORM, DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator" }; -constexpr D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail[] = -{ - // DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal - {DXGI_FORMAT_UNKNOWN ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R32G32B32A32_TYPELESS ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32B32A32_FLOAT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32B32A32_UINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32B32A32_SINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R32G32B32_TYPELESS ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32B32_FLOAT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32B32_UINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _UINT, _UINT, _UINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32B32_SINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _SINT, _SINT, _SINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R16G16B16A16_TYPELESS ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16B16A16_FLOAT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16B16A16_UNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16B16A16_UINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16B16A16_SNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16B16A16_SINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R32G32_TYPELESS ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32_FLOAT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32_UINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32G32_SINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R32G8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_D32_FLOAT_S8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _FLOAT,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_X32_TYPELESS_G8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R10G10B10A2_TYPELESS ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, }, - { DXGI_FORMAT_R10G10B10A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, }, - { DXGI_FORMAT_R10G10B10A2_UINT ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, }, - {DXGI_FORMAT_R11G11B10_FLOAT ,DXGI_FORMAT_R11G11B10_FLOAT, D3DFCS_R11G11B10, {11,11,10,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R8G8B8A8_TYPELESS ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8B8A8_UNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8B8A8_UINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8B8A8_SNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8B8A8_SINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R16G16_TYPELESS ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16_FLOAT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16_UNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16_UINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16_SNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16G16_SINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R32_TYPELESS ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_D32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32_UINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R32_SINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R24G8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_D24_UNORM_S8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _UNORM,_UINT,_TYPELESS,_TYPELESS, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R24_UNORM_X8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_X24_TYPELESS_G8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R8G8_TYPELESS ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8_UNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8_UINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8_SNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8G8_SINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R16_TYPELESS ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16_FLOAT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_D16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16_UINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16_SNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R16_SINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R8_TYPELESS ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8_UNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8_UINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8_SNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_R8_SINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_A8_UNORM ,DXGI_FORMAT_A8_UNORM, D3DFCS_A8, {0,0,0,8}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,X,X,A, _TYPELESS, _TYPELESS, _TYPELESS, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R1_UNORM ,DXGI_FORMAT_R1_UNORM, D3DFCS_R1, {1,0,0,0}, 1, FALSE, 8, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R9G9B9E5_SHAREDEXP ,DXGI_FORMAT_R9G9B9E5_SHAREDEXP, D3DFCS_R9G9B9E5, {0,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _FLOAT, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R8G8_B8G8_UNORM ,DXGI_FORMAT_R8G8_B8G8_UNORM, D3DFCS_R8G8_B8G8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_G8R8_G8B8_UNORM ,DXGI_FORMAT_G8R8_G8B8_UNORM, D3DFCS_G8R8_G8B8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC1_TYPELESS ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC1_UNORM ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC1_UNORM_SRGB ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC2_TYPELESS ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC2_UNORM ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC2_UNORM_SRGB ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC3_TYPELESS ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC3_UNORM ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC3_UNORM_SRGB ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC4_TYPELESS ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC4_UNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC4_SNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC5_TYPELESS ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC5_UNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC5_SNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_B5G6R5_UNORM ,DXGI_FORMAT_B5G6R5_UNORM, D3DFCS_B5G6R5, {5,6,5,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_B5G5R5A1_UNORM ,DXGI_FORMAT_B5G5R5A1_UNORM, D3DFCS_B5G5R5A1, {5,5,5,1}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_B8G8R8A8_UNORM ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_B8G8R8X8_UNORM ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FIXED_2_8, _FIXED_2_8, _FIXED_2_8, _UNORM, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_B8G8R8A8_TYPELESS ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_B8G8R8A8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_B8G8R8X8_TYPELESS ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_B8G8R8X8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC6H_TYPELESS ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC6H_UF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC6H_SF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - {DXGI_FORMAT_BC7_TYPELESS ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC7_UNORM ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_BC7_UNORM_SRGB ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - // YUV 4:4:4 formats - { DXGI_FORMAT_AYUV ,DXGI_FORMAT_AYUV, D3DFCS_AYUV, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_Y410 ,DXGI_FORMAT_Y410, D3DFCS_Y410, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_Y416 ,DXGI_FORMAT_Y416, D3DFCS_Y416, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - // YUV 4:2:0 formats - { DXGI_FORMAT_NV12 ,DXGI_FORMAT_NV12, D3DFCS_NV12, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_P010 ,DXGI_FORMAT_P010, D3DFCS_P010, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_P016 ,DXGI_FORMAT_P016, D3DFCS_P016, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_420_OPAQUE ,DXGI_FORMAT_420_OPAQUE, D3DFCS_420_OPAQUE, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - // YUV 4:2:2 formats - { DXGI_FORMAT_YUY2 ,DXGI_FORMAT_YUY2, D3DFCS_YUY2, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_Y210 ,DXGI_FORMAT_Y210, D3DFCS_Y210, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_Y216 ,DXGI_FORMAT_Y216, D3DFCS_Y216, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - // YUV 4:1:1 formats - { DXGI_FORMAT_NV11 ,DXGI_FORMAT_NV11, D3DFCS_NV11, {0,0,0,0}, 8, FALSE, 4, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - // Legacy substream formats - { DXGI_FORMAT_AI44 ,DXGI_FORMAT_AI44, D3DFCS_AI44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_IA44 ,DXGI_FORMAT_IA44, D3DFCS_IA44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_P8 ,DXGI_FORMAT_P8, D3DFCS_P8, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_A8P8 ,DXGI_FORMAT_A8P8, D3DFCS_A8P8, {0,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT_B4G4R4A4_UNORM ,DXGI_FORMAT_B4G4R4A4_UNORM, D3DFCS_B4G4R4A4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT(116) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(117) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(118) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(119) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(120) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(121) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(122) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, +constexpr D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail[] = { + // DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], + // BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], + // bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal + { + DXGI_FORMAT_UNKNOWN, + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32A32_TYPELESS, + DXGI_FORMAT_R32G32B32A32_TYPELESS, + D3DFCS_R32G32B32A32, + { 32, 32, 32, 32 }, + 128, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32A32_FLOAT, + DXGI_FORMAT_R32G32B32A32_TYPELESS, + D3DFCS_R32G32B32A32, + { 32, 32, 32, 32 }, + 128, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _FLOAT, + _FLOAT, + _FLOAT, + _FLOAT, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32A32_UINT, + DXGI_FORMAT_R32G32B32A32_TYPELESS, + D3DFCS_R32G32B32A32, + { 32, 32, 32, 32 }, + 128, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UINT, + _UINT, + _UINT, + _UINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32A32_SINT, + DXGI_FORMAT_R32G32B32A32_TYPELESS, + D3DFCS_R32G32B32A32, + { 32, 32, 32, 32 }, + 128, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _SINT, + _SINT, + _SINT, + _SINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32_TYPELESS, + DXGI_FORMAT_R32G32B32_TYPELESS, + D3DFCS_R32G32B32, + { 32, 32, 32, 0 }, + 96, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32_FLOAT, + DXGI_FORMAT_R32G32B32_TYPELESS, + D3DFCS_R32G32B32, + { 32, 32, 32, 0 }, + 96, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _FLOAT, + _FLOAT, + _FLOAT, + _TYPELESS, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32_UINT, + DXGI_FORMAT_R32G32B32_TYPELESS, + D3DFCS_R32G32B32, + { 32, 32, 32, 0 }, + 96, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _UINT, + _UINT, + _UINT, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32B32_SINT, + DXGI_FORMAT_R32G32B32_TYPELESS, + D3DFCS_R32G32B32, + { 32, 32, 32, 0 }, + 96, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _SINT, + _SINT, + _SINT, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16B16A16_TYPELESS, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + D3DFCS_R16G16B16A16, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16B16A16_FLOAT, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + D3DFCS_R16G16B16A16, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _FLOAT, + _FLOAT, + _FLOAT, + _FLOAT, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16B16A16_UNORM, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + D3DFCS_R16G16B16A16, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16B16A16_UINT, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + D3DFCS_R16G16B16A16, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UINT, + _UINT, + _UINT, + _UINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16B16A16_SNORM, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + D3DFCS_R16G16B16A16, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _SNORM, + _SNORM, + _SNORM, + _SNORM, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16B16A16_SINT, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + D3DFCS_R16G16B16A16, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _SINT, + _SINT, + _SINT, + _SINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32_TYPELESS, + DXGI_FORMAT_R32G32_TYPELESS, + D3DFCS_R32G32, + { 32, 32, 0, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32_FLOAT, + DXGI_FORMAT_R32G32_TYPELESS, + D3DFCS_R32G32, + { 32, 32, 0, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _FLOAT, + _FLOAT, + _TYPELESS, + _TYPELESS, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32_UINT, + DXGI_FORMAT_R32G32_TYPELESS, + D3DFCS_R32G32, + { 32, 32, 0, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _UINT, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G32_SINT, + DXGI_FORMAT_R32G32_TYPELESS, + D3DFCS_R32G32, + { 32, 32, 0, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _SINT, + _SINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32G8X24_TYPELESS, + DXGI_FORMAT_R32G8X24_TYPELESS, + D3DFCS_R32G8X24, + { 32, 8, 24, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_D32_FLOAT_S8X24_UINT, + DXGI_FORMAT_R32G8X24_TYPELESS, + D3DFCS_R32G8X24, + { 32, 8, 24, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + D, + S, + X, + X, + _FLOAT, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, + DXGI_FORMAT_R32G8X24_TYPELESS, + D3DFCS_R32G8X24, + { 32, 8, 24, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _FLOAT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_X32_TYPELESS_G8X24_UINT, + DXGI_FORMAT_R32G8X24_TYPELESS, + D3DFCS_R32G8X24, + { 32, 8, 24, 0 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + X, + G, + X, + X, + _TYPELESS, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R10G10B10A2_TYPELESS, + DXGI_FORMAT_R10G10B10A2_TYPELESS, + D3DFCS_R10G10B10A2, + { 10, 10, 10, 2 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + }, + { + DXGI_FORMAT_R10G10B10A2_UNORM, + DXGI_FORMAT_R10G10B10A2_TYPELESS, + D3DFCS_R10G10B10A2, + { 10, 10, 10, 2 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + }, + { + DXGI_FORMAT_R10G10B10A2_UINT, + DXGI_FORMAT_R10G10B10A2_TYPELESS, + D3DFCS_R10G10B10A2, + { 10, 10, 10, 2 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UINT, + _UINT, + _UINT, + _UINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + }, + { + DXGI_FORMAT_R11G11B10_FLOAT, + DXGI_FORMAT_R11G11B10_FLOAT, + D3DFCS_R11G11B10, + { 11, 11, 10, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _FLOAT, + _FLOAT, + _FLOAT, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8B8A8_TYPELESS, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + D3DFCS_R8G8B8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8B8A8_UNORM, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + D3DFCS_R8G8B8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + D3DFCS_R8G8B8A8, + { 8, 8, 8, 8 }, + 32, + TRUE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8B8A8_UINT, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + D3DFCS_R8G8B8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UINT, + _UINT, + _UINT, + _UINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8B8A8_SNORM, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + D3DFCS_R8G8B8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _SNORM, + _SNORM, + _SNORM, + _SNORM, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8B8A8_SINT, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + D3DFCS_R8G8B8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _SINT, + _SINT, + _SINT, + _SINT, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16_TYPELESS, + DXGI_FORMAT_R16G16_TYPELESS, + D3DFCS_R16G16, + { 16, 16, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16_FLOAT, + DXGI_FORMAT_R16G16_TYPELESS, + D3DFCS_R16G16, + { 16, 16, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _FLOAT, + _FLOAT, + _TYPELESS, + _TYPELESS, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16_UNORM, + DXGI_FORMAT_R16G16_TYPELESS, + D3DFCS_R16G16, + { 16, 16, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _UNORM, + _UNORM, + _TYPELESS, + _TYPELESS, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16_UINT, + DXGI_FORMAT_R16G16_TYPELESS, + D3DFCS_R16G16, + { 16, 16, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _UINT, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16_SNORM, + DXGI_FORMAT_R16G16_TYPELESS, + D3DFCS_R16G16, + { 16, 16, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _SNORM, + _SNORM, + _TYPELESS, + _TYPELESS, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16G16_SINT, + DXGI_FORMAT_R16G16_TYPELESS, + D3DFCS_R16G16, + { 16, 16, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _SINT, + _SINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32_TYPELESS, + DXGI_FORMAT_R32_TYPELESS, + D3DFCS_R32, + { 32, 0, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_D32_FLOAT, + DXGI_FORMAT_R32_TYPELESS, + D3DFCS_R32, + { 32, 0, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + D, + X, + X, + X, + _FLOAT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32_FLOAT, + DXGI_FORMAT_R32_TYPELESS, + D3DFCS_R32, + { 32, 0, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _FLOAT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32_UINT, + DXGI_FORMAT_R32_TYPELESS, + D3DFCS_R32, + { 32, 0, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UINT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R32_SINT, + DXGI_FORMAT_R32_TYPELESS, + D3DFCS_R32, + { 32, 0, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _SINT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R24G8_TYPELESS, + DXGI_FORMAT_R24G8_TYPELESS, + D3DFCS_R24G8, + { 24, 8, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_D24_UNORM_S8_UINT, + DXGI_FORMAT_R24G8_TYPELESS, + D3DFCS_R24G8, + { 24, 8, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + D, + S, + X, + X, + _UNORM, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R24_UNORM_X8_TYPELESS, + DXGI_FORMAT_R24G8_TYPELESS, + D3DFCS_R24G8, + { 24, 8, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_X24_TYPELESS_G8_UINT, + DXGI_FORMAT_R24G8_TYPELESS, + D3DFCS_R24G8, + { 24, 8, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + X, + G, + X, + X, + _TYPELESS, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8_TYPELESS, + DXGI_FORMAT_R8G8_TYPELESS, + D3DFCS_R8G8, + { 8, 8, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + G, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8_UNORM, + DXGI_FORMAT_R8G8_TYPELESS, + D3DFCS_R8G8, + { 8, 8, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _UNORM, + _UNORM, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8_UINT, + DXGI_FORMAT_R8G8_TYPELESS, + D3DFCS_R8G8, + { 8, 8, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _UINT, + _UINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8_SNORM, + DXGI_FORMAT_R8G8_TYPELESS, + D3DFCS_R8G8, + { 8, 8, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _SNORM, + _SNORM, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8_SINT, + DXGI_FORMAT_R8G8_TYPELESS, + D3DFCS_R8G8, + { 8, 8, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _SINT, + _SINT, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16_TYPELESS, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16_FLOAT, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _FLOAT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_D16_UNORM, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + D, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16_UNORM, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16_UINT, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UINT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16_SNORM, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _SNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R16_SINT, + DXGI_FORMAT_R16_TYPELESS, + D3DFCS_R16, + { 16, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _SINT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8_TYPELESS, + DXGI_FORMAT_R8_TYPELESS, + D3DFCS_R8, + { 8, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + R, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8_UNORM, + DXGI_FORMAT_R8_TYPELESS, + D3DFCS_R8, + { 8, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8_UINT, + DXGI_FORMAT_R8_TYPELESS, + D3DFCS_R8, + { 8, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UINT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8_SNORM, + DXGI_FORMAT_R8_TYPELESS, + D3DFCS_R8, + { 8, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _SNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8_SINT, + DXGI_FORMAT_R8_TYPELESS, + D3DFCS_R8, + { 8, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _SINT, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_A8_UNORM, + DXGI_FORMAT_A8_UNORM, + D3DFCS_A8, + { 0, 0, 0, 8 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + X, + X, + X, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R1_UNORM, + DXGI_FORMAT_R1_UNORM, + D3DFCS_R1, + { 1, 0, 0, 0 }, + 1, + FALSE, + 8, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R9G9B9E5_SHAREDEXP, + DXGI_FORMAT_R9G9B9E5_SHAREDEXP, + D3DFCS_R9G9B9E5, + { 0, 0, 0, 0 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _FLOAT, + _FLOAT, + _FLOAT, + _FLOAT, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R8G8_B8G8_UNORM, + DXGI_FORMAT_R8G8_B8G8_UNORM, + D3DFCS_R8G8_B8G8, + { 0, 0, 0, 0 }, + 16, + FALSE, + 2, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_G8R8_G8B8_UNORM, + DXGI_FORMAT_G8R8_G8B8_UNORM, + D3DFCS_G8R8_G8B8, + { 0, 0, 0, 0 }, + 16, + FALSE, + 2, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC1_TYPELESS, + DXGI_FORMAT_BC1_TYPELESS, + D3DFCS_BC1, + { 0, 0, 0, 0 }, + 64, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC1_UNORM, + DXGI_FORMAT_BC1_TYPELESS, + D3DFCS_BC1, + { 0, 0, 0, 0 }, + 64, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC1_UNORM_SRGB, + DXGI_FORMAT_BC1_TYPELESS, + D3DFCS_BC1, + { 0, 0, 0, 0 }, + 64, + TRUE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC2_TYPELESS, + DXGI_FORMAT_BC2_TYPELESS, + D3DFCS_BC2, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC2_UNORM, + DXGI_FORMAT_BC2_TYPELESS, + D3DFCS_BC2, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC2_UNORM_SRGB, + DXGI_FORMAT_BC2_TYPELESS, + D3DFCS_BC2, + { 0, 0, 0, 0 }, + 128, + TRUE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC3_TYPELESS, + DXGI_FORMAT_BC3_TYPELESS, + D3DFCS_BC3, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC3_UNORM, + DXGI_FORMAT_BC3_TYPELESS, + D3DFCS_BC3, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC3_UNORM_SRGB, + DXGI_FORMAT_BC3_TYPELESS, + D3DFCS_BC3, + { 0, 0, 0, 0 }, + 128, + TRUE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC4_TYPELESS, + DXGI_FORMAT_BC4_TYPELESS, + D3DFCS_BC4, + { 0, 0, 0, 0 }, + 64, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC4_UNORM, + DXGI_FORMAT_BC4_TYPELESS, + D3DFCS_BC4, + { 0, 0, 0, 0 }, + 64, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC4_SNORM, + DXGI_FORMAT_BC4_TYPELESS, + D3DFCS_BC4, + { 0, 0, 0, 0 }, + 64, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _SNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC5_TYPELESS, + DXGI_FORMAT_BC5_TYPELESS, + D3DFCS_BC5, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + G, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC5_UNORM, + DXGI_FORMAT_BC5_TYPELESS, + D3DFCS_BC5, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _UNORM, + _UNORM, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC5_SNORM, + DXGI_FORMAT_BC5_TYPELESS, + D3DFCS_BC5, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + X, + X, + _SNORM, + _SNORM, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B5G6R5_UNORM, + DXGI_FORMAT_B5G6R5_UNORM, + D3DFCS_B5G6R5, + { 5, 6, 5, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B5G5R5A1_UNORM, + DXGI_FORMAT_B5G5R5A1_UNORM, + D3DFCS_B5G5R5A1, + { 5, 5, 5, 1 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B8G8R8A8_UNORM, + DXGI_FORMAT_B8G8R8A8_TYPELESS, + D3DFCS_B8G8R8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B8G8R8X8_UNORM, + DXGI_FORMAT_B8G8R8X8_TYPELESS, + D3DFCS_B8G8R8X8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM, + DXGI_FORMAT_R10G10B10A2_TYPELESS, + D3DFCS_R10G10B10A2, + { 10, 10, 10, 2 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _FIXED_2_8, + _FIXED_2_8, + _FIXED_2_8, + _UNORM, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B8G8R8A8_TYPELESS, + DXGI_FORMAT_B8G8R8A8_TYPELESS, + D3DFCS_B8G8R8A8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + B, + G, + R, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, + DXGI_FORMAT_B8G8R8A8_TYPELESS, + D3DFCS_B8G8R8A8, + { 8, 8, 8, 8 }, + 32, + TRUE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B8G8R8X8_TYPELESS, + DXGI_FORMAT_B8G8R8X8_TYPELESS, + D3DFCS_B8G8R8X8, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_PARTIAL_TYPE, + B, + G, + R, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B8G8R8X8_UNORM_SRGB, + DXGI_FORMAT_B8G8R8X8_TYPELESS, + D3DFCS_B8G8R8X8, + { 8, 8, 8, 8 }, + 32, + TRUE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + X, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _TYPELESS, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC6H_TYPELESS, + DXGI_FORMAT_BC6H_TYPELESS, + D3DFCS_BC6H, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC6H_UF16, + DXGI_FORMAT_BC6H_TYPELESS, + D3DFCS_BC6H, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _FLOAT, + _FLOAT, + _FLOAT, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC6H_SF16, + DXGI_FORMAT_BC6H_TYPELESS, + D3DFCS_BC6H, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _FLOAT, + _FLOAT, + _FLOAT, + _TYPELESS, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC7_TYPELESS, + DXGI_FORMAT_BC7_TYPELESS, + D3DFCS_BC7, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_PARTIAL_TYPE, + R, + G, + B, + A, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC7_UNORM, + DXGI_FORMAT_BC7_TYPELESS, + D3DFCS_BC7, + { 0, 0, 0, 0 }, + 128, + FALSE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_BC7_UNORM_SRGB, + DXGI_FORMAT_BC7_TYPELESS, + D3DFCS_BC7, + { 0, 0, 0, 0 }, + 128, + TRUE, + 4, + 4, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + A, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM_SRGB, + _UNORM, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + // YUV 4:4:4 formats + { + DXGI_FORMAT_AYUV, + DXGI_FORMAT_AYUV, + D3DFCS_AYUV, + { 8, 8, 8, 8 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_Y410, + DXGI_FORMAT_Y410, + D3DFCS_Y410, + { 10, 10, 10, 2 }, + 32, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_Y416, + DXGI_FORMAT_Y416, + D3DFCS_Y416, + { 16, 16, 16, 16 }, + 64, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + // YUV 4:2:0 formats + { + DXGI_FORMAT_NV12, + DXGI_FORMAT_NV12, + D3DFCS_NV12, + { 0, 0, 0, 0 }, + 8, + FALSE, + 2, + 2, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_P010, + DXGI_FORMAT_P010, + D3DFCS_P010, + { 0, 0, 0, 0 }, + 16, + FALSE, + 2, + 2, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_P016, + DXGI_FORMAT_P016, + D3DFCS_P016, + { 0, 0, 0, 0 }, + 16, + FALSE, + 2, + 2, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_420_OPAQUE, + DXGI_FORMAT_420_OPAQUE, + D3DFCS_420_OPAQUE, + { 0, 0, 0, 0 }, + 8, + FALSE, + 2, + 2, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + // YUV 4:2:2 formats + { + DXGI_FORMAT_YUY2, + DXGI_FORMAT_YUY2, + D3DFCS_YUY2, + { 0, 0, 0, 0 }, + 16, + FALSE, + 2, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_Y210, + DXGI_FORMAT_Y210, + D3DFCS_Y210, + { 0, 0, 0, 0 }, + 32, + FALSE, + 2, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_Y216, + DXGI_FORMAT_Y216, + D3DFCS_Y216, + { 0, 0, 0, 0 }, + 32, + FALSE, + 2, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + G, + B, + X, + _UNORM, + _UNORM, + _UNORM, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + // YUV 4:1:1 formats + { + DXGI_FORMAT_NV11, + DXGI_FORMAT_NV11, + D3DFCS_NV11, + { 0, 0, 0, 0 }, + 8, + FALSE, + 4, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + // Legacy substream formats + { + DXGI_FORMAT_AI44, + DXGI_FORMAT_AI44, + D3DFCS_AI44, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_IA44, + DXGI_FORMAT_IA44, + D3DFCS_IA44, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_P8, + DXGI_FORMAT_P8, + D3DFCS_P8, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_A8P8, + DXGI_FORMAT_A8P8, + D3DFCS_A8P8, + { 0, 0, 0, 0 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_B4G4R4A4_UNORM, + DXGI_FORMAT_B4G4R4A4_UNORM, + D3DFCS_B4G4R4A4, + { 4, 4, 4, 4 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + B, + G, + R, + A, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT(116), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(117), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(118), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(119), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(120), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(121), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(122), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, - { DXGI_FORMAT(123) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, + { + DXGI_FORMAT(123), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, - { DXGI_FORMAT(124) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(125) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(126) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(127) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(128) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(129) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(DXGI_FORMAT_P208) ,DXGI_FORMAT_P208, D3DFCS_P208, {0,0,0,0}, 8, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT(DXGI_FORMAT_V208) ,DXGI_FORMAT_V208, D3DFCS_V208, {0,0,0,0}, 8, FALSE, 1, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, }, - { DXGI_FORMAT(DXGI_FORMAT_V408) ,DXGI_FORMAT_V408, D3DFCS_V408, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, }, + { + DXGI_FORMAT(124), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(125), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(126), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(127), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(128), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(129), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(DXGI_FORMAT_P208), + DXGI_FORMAT_P208, + D3DFCS_P208, + { 0, 0, 0, 0 }, + 8, + FALSE, + 2, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT(DXGI_FORMAT_V208), + DXGI_FORMAT_V208, + D3DFCS_V208, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 2, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT(DXGI_FORMAT_V408), + DXGI_FORMAT_V408, + D3DFCS_V408, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + }, - { DXGI_FORMAT(133) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(134) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(135) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(136) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(137) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(138) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(139) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(140) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(141) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(142) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(143) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(144) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(145) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(146) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(147) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(148) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(149) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(150) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(151) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(152) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(153) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(154) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(155) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(156) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(157) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(158) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(159) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(160) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(161) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(162) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(163) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(164) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(165) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(166) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(167) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(168) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(169) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(170) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(171) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(172) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(173) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(174) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(175) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(176) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(177) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(178) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(179) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(180) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(181) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(182) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(183) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(184) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(185) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(186) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(187) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, - { DXGI_FORMAT(188) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, }, + { + DXGI_FORMAT(133), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(134), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(135), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(136), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(137), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(138), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(139), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(140), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(141), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(142), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(143), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(144), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(145), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(146), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(147), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(148), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(149), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(150), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(151), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(152), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(153), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(154), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(155), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(156), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(157), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(158), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(159), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(160), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(161), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(162), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(163), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(164), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(165), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(166), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(167), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(168), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(169), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(170), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(171), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(172), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(173), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(174), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(175), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(176), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(177), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(178), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(179), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(180), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(181), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(182), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(183), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(184), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(185), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(186), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(187), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, + { + DXGI_FORMAT(188), + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 0, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_NO_TYPE, + X, + X, + X, + X, + _TYPELESS, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + }, - { DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - { DXGI_FORMAT_A4B4G4R4_UNORM ,DXGI_FORMAT_A4B4G4R4_UNORM, D3DFCS_A4B4G4R4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, A,B,G,R, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, }, - //DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal + { + DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE, + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE, + DXGI_FORMAT_UNKNOWN, + D3DFCS_UNKNOWN, + { 0, 0, 0, 0 }, + 8, + FALSE, + 1, + 1, + 1, + D3DFL_CUSTOM, + D3DFTL_FULL_TYPE, + R, + X, + X, + X, + _UNORM, + _TYPELESS, + _TYPELESS, + _TYPELESS, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + { + DXGI_FORMAT_A4B4G4R4_UNORM, + DXGI_FORMAT_A4B4G4R4_UNORM, + D3DFCS_A4B4G4R4, + { 4, 4, 4, 4 }, + 16, + FALSE, + 1, + 1, + 1, + D3DFL_STANDARD, + D3DFTL_FULL_TYPE, + A, + B, + G, + R, + _UNORM, + _UNORM, + _UNORM, + _UNORM, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }, + // DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, + // SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], + // bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal }; -const UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_NumFormats = (sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail) / sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL)); +const UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_NumFormats = + (sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail) / sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL)); //--------------------------------------------------------------------------------------------------------------------------------- // GetHighestDefinedFeatureLevel -D3D_FEATURE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHighestDefinedFeatureLevel() +D3D_FEATURE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHighestDefinedFeatureLevel() { - return D3D_FEATURE_LEVEL_12_2; + return D3D_FEATURE_LEVEL_12_2; } //--------------------------------------------------------------------------------------------------------------------------------- @@ -896,23 +5985,23 @@ const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_F // GetFormatTable BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Opaque(DXGI_FORMAT Format) { - return Format == DXGI_FORMAT_420_OPAQUE; + return Format == DXGI_FORMAT_420_OPAQUE; } //--------------------------------------------------------------------------------------------------------------------------------- // FormatExists bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(DXGI_FORMAT Format) { - return GetFormat( Format) != (DXGI_FORMAT) -1 ? true : false; + return GetFormat(Format) != (DXGI_FORMAT)-1 ? true : false; } //--------------------------------------------------------------------------------------------------------------------------------- // GetDetailTableIndex -UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndex(DXGI_FORMAT Format ) +UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndex(DXGI_FORMAT Format) { - if( (UINT)Format < _countof( s_FormatDetail ) ) + if ((UINT)Format < _countof(s_FormatDetail)) { - assert( s_FormatDetail[(UINT)Format].DXGIFormat == Format ); + assert(s_FormatDetail[(UINT)Format].DXGIFormat == Format); return static_cast(Format); } @@ -920,23 +6009,23 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndex(DXGI_FORMAT Format } //--------------------------------------------------------------------------------------------------------------------------------- -// IsBlockCompressFormat - returns true if format is block compressed. This function is a helper function for GetBitsPerUnit and -// if this function returns true then GetBitsPerUnit returns block size. +// IsBlockCompressFormat - returns true if format is block compressed. This function is a helper function for +// GetBitsPerUnit and if this function returns true then GetBitsPerUnit returns block size. bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsBlockCompressFormat(DXGI_FORMAT Format) { // Returns true if BC1, BC2, BC3, BC4, BC5, BC6, BC7, or ASTC - return (Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC5_SNORM) || + return (Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC5_SNORM) || (Format >= DXGI_FORMAT_BC6H_TYPELESS && Format <= DXGI_FORMAT_BC7_UNORM_SRGB); } //--------------------------------------------------------------------------------------------------------------------------------- -// GetByteAlignment +// GetByteAlignment UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetByteAlignment(DXGI_FORMAT Format) { UINT bits = GetBitsPerUnit(Format); if (!IsBlockCompressFormat(Format)) { - bits *= GetWidthAlignment(Format)*GetHeightAlignment(Format)*GetDepthAlignment(Format); + bits *= GetWidthAlignment(Format) * GetHeightAlignment(Format) * GetDepthAlignment(Format); } assert((bits & 0x7) == 0); // Unit must be byte-aligned @@ -947,15 +6036,15 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetByteAlignment(DXGI_FORMAT Format) // GetBitsPerUnitThrow UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnitThrow(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexThrow( Format )].BitsPerUnit; + return s_FormatDetail[GetDetailTableIndexThrow(Format)].BitsPerUnit; } //--------------------------------------------------------------------------------------------------------------------------------- // FormatExistsInHeader bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExistsInHeader(DXGI_FORMAT Format, bool bExternalHeader) { - const UINT Index = GetDetailTableIndex( Format ); - if (UINT( -1 ) == Index || (bExternalHeader && GetFormatDetail( Format )->bInternal)) + const UINT Index = GetDetailTableIndex(Format); + if (UINT(-1) == Index || (bExternalHeader && GetFormatDetail(Format)->bInternal)) { return false; } @@ -969,14 +6058,14 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExistsInHeader(DXGI_FORMAT Format // GetName LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetName(DXGI_FORMAT Format, bool bHideInternalFormats) { - const UINT Index = GetDetailTableIndex( Format ); - if (UINT( -1 ) == Index || (bHideInternalFormats && GetFormatDetail( Format )->bInternal) || !s_FormatNames[Index]) + const UINT Index = GetDetailTableIndex(Format); + if (UINT(-1) == Index || (bHideInternalFormats && GetFormatDetail(Format)->bInternal) || !s_FormatNames[Index]) { return "Unrecognized"; } else { - return s_FormatNames[ Index ]; + return s_FormatNames[Index]; } } @@ -985,7 +6074,7 @@ LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetName(DXGI_FORMAT Format, bool bHid bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSRGBFormat(DXGI_FORMAT Format) { const UINT Index = GetDetailTableIndex(Format); - if(UINT( -1 ) == Index ) + if (UINT(-1) == Index) { return false; } @@ -1009,11 +6098,7 @@ inline HRESULT DivideAndRoundUp(UINT dividend, UINT divisor, _Out_ UINT& result) //---------------------------------------------------------------------------- // CalculateExtraPlanarRows -HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows( - DXGI_FORMAT format, - UINT plane0Height, - _Out_ UINT& totalHeight - ) +HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows(DXGI_FORMAT format, UINT plane0Height, _Out_ UINT& totalHeight) { if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(format)) { @@ -1021,9 +6106,9 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows( return S_OK; } - // blockWidth, blockHeight, and blockSize only reflect the size of plane 0. Each planar format has additonal planes that must - // be counted. Each format increases size by another 0.5x, 1x, or 2x. Grab the number of "half allocation" increments so integer - // math can be used to calculate the extra size. + // blockWidth, blockHeight, and blockSize only reflect the size of plane 0. Each planar format has additonal planes + // that must be counted. Each format increases size by another 0.5x, 1x, or 2x. Grab the number of "half + // allocation" increments so integer math can be used to calculate the extra size. UINT extraHalfHeight; UINT round; @@ -1034,38 +6119,34 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows( case DXGI_FORMAT_P016: case DXGI_FORMAT_420_OPAQUE: extraHalfHeight = 1; - round = 1; + round = 1; break; case DXGI_FORMAT_NV11: case DXGI_FORMAT_P208: extraHalfHeight = 2; - round = 0; + round = 0; break; case DXGI_FORMAT_V208: extraHalfHeight = 2; - round = 1; + round = 1; break; case DXGI_FORMAT_V408: extraHalfHeight = 4; - round = 0; + round = 0; break; case DXGI_FORMAT_R24G8_TYPELESS: - case DXGI_FORMAT_R32G8X24_TYPELESS: - totalHeight = plane0Height; - return S_OK; + case DXGI_FORMAT_R32G8X24_TYPELESS: totalHeight = plane0Height; return S_OK; - default: - assert(false); - return S_OK; + default: assert(false); return S_OK; } UINT extraPlaneHeight; - if (FAILED(Safe_UIntMult(plane0Height, extraHalfHeight, &extraPlaneHeight)) - || FAILED(Safe_UIntAdd(extraPlaneHeight, round, &extraPlaneHeight)) - || FAILED(Safe_UIntAdd(plane0Height, (extraPlaneHeight >> 1), &totalHeight))) + if (FAILED(Safe_UIntMult(plane0Height, extraHalfHeight, &extraPlaneHeight)) || + FAILED(Safe_UIntAdd(extraPlaneHeight, round, &extraPlaneHeight)) || + FAILED(Safe_UIntAdd(plane0Height, (extraPlaneHeight >> 1), &totalHeight))) { return INTSAFE_E_ARITHMETIC_OVERFLOW; } @@ -1075,32 +6156,28 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows( //---------------------------------------------------------------------------- // CalculateResourceSize -HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize( - UINT width, - UINT height, - UINT depth, - DXGI_FORMAT format, - UINT mipLevels, - UINT subresources, - _Out_ SIZE_T& totalByteSize, - _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST *pDst) +HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize(UINT width, UINT height, UINT depth, DXGI_FORMAT format, + UINT mipLevels, UINT subresources, _Out_ SIZE_T& totalByteSize, + _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST* pDst) { - UINT tableIndex = GetDetailTableIndexNoThrow( format ); + UINT tableIndex = GetDetailTableIndexNoThrow(format); if (tableIndex == UINT(-1)) + { return E_INVALIDARG; + } totalByteSize = 0; const FORMAT_DETAIL& formatDetail = s_FormatDetail[tableIndex]; - bool fIsBlockCompressedFormat = IsBlockCompressFormat(format ); + bool fIsBlockCompressedFormat = IsBlockCompressFormat(format); // No format currently requires depth alignment. assert(formatDetail.DepthAlignment == 1); - UINT subWidth = width; + UINT subWidth = width; UINT subHeight = height; - UINT subDepth = depth; + UINT subDepth = depth; for (UINT s = 0, iM = 0; s < subresources; ++s) { UINT blockWidth; @@ -1122,9 +6199,9 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize( } else { - // The height must *not* be aligned to HeightAlign. As there is no plane pitch/stride, the expectation is that the 2nd plane - // begins immediately after the first. The only formats with HeightAlignment other than 1 are planar or block compressed, and - // block compressed is handled above. + // The height must *not* be aligned to HeightAlign. As there is no plane pitch/stride, the expectation is + // that the 2nd plane begins immediately after the first. The only formats with HeightAlignment other than + // 1 are planar or block compressed, and block compressed is handled above. assert(formatDetail.bPlanar || formatDetail.HeightAlignment == 1); blockHeight = subHeight; @@ -1152,12 +6229,11 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize( // Calculate rowPitch, depthPitch, and total subresource size. UINT rowPitch, depthPitch; - - if ( FAILED(Safe_UIntMult(blockWidth, blockSize, &rowPitch)) - || FAILED(Safe_UIntMult(blockHeight, rowPitch, &depthPitch))) + + if (FAILED(Safe_UIntMult(blockWidth, blockSize, &rowPitch)) || FAILED(Safe_UIntMult(blockHeight, rowPitch, &depthPitch))) { return INTSAFE_E_ARITHMETIC_OVERFLOW; - } + } SIZE_T subresourceByteSize = SIZE_T(UINT64(subDepth) * UINT64(depthPitch)); if (pDst) @@ -1168,26 +6244,26 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize( dst.pData = reinterpret_cast(totalByteSize); assert(s != 0 || dst.pData == nullptr); - dst.RowPitch = rowPitch; + dst.RowPitch = rowPitch; dst.SlicePitch = depthPitch; } // Align the subresource size. - static_assert((MAP_ALIGN_REQUIREMENT & (MAP_ALIGN_REQUIREMENT - 1)) == 0, "This code expects MAP_ALIGN_REQUIREMENT to be a power of 2."); - - SIZE_T subresourceByteSizeAligned = subresourceByteSize + MAP_ALIGN_REQUIREMENT - 1; - subresourceByteSizeAligned = subresourceByteSizeAligned & ~(MAP_ALIGN_REQUIREMENT - 1); - totalByteSize = totalByteSize + subresourceByteSizeAligned; + static_assert((MAP_ALIGN_REQUIREMENT & (MAP_ALIGN_REQUIREMENT - 1)) == 0, + "This code expects MAP_ALIGN_REQUIREMENT to be a power of 2."); + SIZE_T subresourceByteSizeAligned = subresourceByteSize + MAP_ALIGN_REQUIREMENT - 1; + subresourceByteSizeAligned = subresourceByteSizeAligned & ~(MAP_ALIGN_REQUIREMENT - 1); + totalByteSize = totalByteSize + subresourceByteSizeAligned; // Iterate over mip levels and array elements if (++iM >= mipLevels) { iM = 0; - subWidth = width; + subWidth = width; subHeight = height; - subDepth = depth; + subDepth = depth; } else { @@ -1200,17 +6276,17 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize( return S_OK; } -inline bool IsPow2( UINT Val ) +inline bool IsPow2(UINT Val) { return 0 == (Val & (Val - 1)); } // This helper function calculates the Row Pitch for a given format. For Planar formats this function returns -// the row major RowPitch of the resource. The RowPitch is the same for all the planes. For Planar +// the row major RowPitch of the resource. The RowPitch is the same for all the planes. For Planar // also use the CalculateExtraPlanarRows function to calculate the corresonding height or use the CalculateMinimumRowMajorSlicePitch -// function. For Block Compressed Formats, this function returns the RowPitch of a row of blocks. For packed subsampled formats and other formats, +// function. For Block Compressed Formats, this function returns the RowPitch of a row of blocks. For packed subsampled formats and other formats, // this function returns the row pitch of one single row of pixels. -HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXGI_FORMAT Format, UINT Width, _Out_ UINT &RowPitch) +HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXGI_FORMAT Format, UINT Width, _Out_ UINT& RowPitch) { // Early out for DXGI_FORMAT_UNKNOWN special case. if (Format == DXGI_FORMAT_UNKNOWN) @@ -1224,8 +6300,8 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXG UINT NumUnits; if (IsBlockCompressFormat(Format)) { - // This function calculates the minimum stride needed for a block row when the format - // is block compressed.The GetBitsPerUnit value stored in the format table indicates + // This function calculates the minimum stride needed for a block row when the format + // is block compressed.The GetBitsPerUnit value stored in the format table indicates // the size of a compressed block for block compressed formats. assert(WidthAlignment != 0); if (FAILED(DivideAndRoundUp(Width, WidthAlignment, NumUnits))) @@ -1236,10 +6312,10 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXG else { // All other formats must have strides aligned to their width alignment requirements. - // The Width may not be aligned to the WidthAlignment. This is not an error for this + // The Width may not be aligned to the WidthAlignment. This is not an error for this // function as we expect to allow formats like NV12 to have odd dimensions in the future. - // The following alignement code expects only pow2 alignment requirements. Only block + // The following alignement code expects only pow2 alignment requirements. Only block // compressed formats currently have non-pow2 alignment requriements. assert(IsPow2(WidthAlignment)); @@ -1264,9 +6340,10 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXG return S_OK; } -// This helper function calculates the SlicePitch for a given format. For Planar formats the slice pitch includes the extra -// planes. -HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(DXGI_FORMAT Format, UINT TightRowPitch, UINT Height, _Out_ UINT &SlicePitch) +// This helper function calculates the SlicePitch for a given format. For Planar formats the slice pitch includes the +// extra planes. +HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(DXGI_FORMAT Format, UINT TightRowPitch, + UINT Height, _Out_ UINT& SlicePitch) { if (Planar(Format)) { @@ -1285,8 +6362,8 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(D UINT HeightAlignment = GetHeightAlignment(Format); - // Caution assert to make sure that no new format breaks this assumption that all HeightAlignment formats are BC or Planar. - // This is to make sure that Height handled correctly for this calculation. + // Caution assert to make sure that no new format breaks this assumption that all HeightAlignment formats are BC or + // Planar. This is to make sure that Height handled correctly for this calculation. assert(HeightAlignment == 1 || IsBlockCompressFormat(Format)); UINT HeightOfPacked; @@ -1303,36 +6380,34 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(D return S_OK; } - - //--------------------------------------------------------------------------------------------------------------------------------- -// GetBitsPerUnit - returns bits per pixel unless format is a block compress format then it returns bits per block. +// GetBitsPerUnit - returns bits per pixel unless format is a block compress format then it returns bits per block. // use IsBlockCompressFormat() to determine if block size is returned. UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnit(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerUnit; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].BitsPerUnit; } //--------------------------------------------------------------------------------------------------------------------------------- UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].WidthAlignment; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].WidthAlignment; } UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].HeightAlignment; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].HeightAlignment; } UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].DepthAlignment; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].DepthAlignment; } //--------------------------------------------------------------------------------------------------------------------------------- // GetFormat DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormat(SIZE_T Index) { - if( Index < GetNumFormats() ) + if (Index < GetNumFormats()) { return s_FormatDetail[Index].DXGIFormat; } @@ -1343,64 +6418,58 @@ DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormat(SIZE_T Index) // CanBeCastEvenFullyTyped bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CanBeCastEvenFullyTyped(DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl) { - //SRGB can be cast away/back, and XR_BIAS can be cast to/from UNORM - switch(fl) + // SRGB can be cast away/back, and XR_BIAS can be cast to/from UNORM + switch (fl) { case D3D_FEATURE_LEVEL_1_0_GENERIC: - case D3D_FEATURE_LEVEL_1_0_CORE: - return false; - default: - break; + case D3D_FEATURE_LEVEL_1_0_CORE: return false; + default: break; } - switch( Format ) + switch (Format) { case DXGI_FORMAT_R8G8B8A8_UNORM: case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: case DXGI_FORMAT_B8G8R8A8_UNORM: - case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: - return true; + case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: return true; case DXGI_FORMAT_R10G10B10A2_UNORM: - case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: - return fl >= D3D_FEATURE_LEVEL_10_0; - default: - return false; + case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: return fl >= D3D_FEATURE_LEVEL_10_0; + default: return false; } } //--------------------------------------------------------------------------------------------------------------------------------- // GetFormatDetail -const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatDetail( DXGI_FORMAT Format ) +const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatDetail(DXGI_FORMAT Format) { const UINT Index = GetDetailTableIndex(Format); - if(UINT( -1 ) == Index ) + if (UINT(-1) == Index) { return nullptr; } - - return &s_FormatDetail[ Index ]; + + return &s_FormatDetail[Index]; } //--------------------------------------------------------------------------------------------------------------------------------- // GetBitsPerStencil -UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT Format) +UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT Format) { - const UINT Index = GetDetailTableIndexThrow( Format ); - if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) && - (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) ) + const UINT Index = GetDetailTableIndexThrow(Format); + if ((s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) && (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE)) { return 0; } - for( UINT comp = 0; comp < 4; comp++ ) + for (UINT comp = 0; comp < 4; comp++) { D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D; - switch(comp) + switch (comp) { case 0: name = s_FormatDetail[Index].ComponentName0; break; case 1: name = s_FormatDetail[Index].ComponentName1; break; case 2: name = s_FormatDetail[Index].ComponentName2; break; case 3: name = s_FormatDetail[Index].ComponentName3; break; } - if( name == D3DFCN_S ) + if (name == D3DFCN_S) { return s_FormatDetail[Index].BitsPerComponent[comp]; } @@ -1410,25 +6479,24 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT Format) //--------------------------------------------------------------------------------------------------------------------------------- // GetBitsPerDepth -UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT Format) +UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT Format) { - const UINT Index = GetDetailTableIndexThrow( Format ); - if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) && - (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) ) + const UINT Index = GetDetailTableIndexThrow(Format); + if ((s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) && (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE)) { return 0; } - for( UINT comp = 0; comp < 4; comp++ ) + for (UINT comp = 0; comp < 4; comp++) { D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D; - switch(comp) + switch (comp) { case 0: name = s_FormatDetail[Index].ComponentName0; break; case 1: name = s_FormatDetail[Index].ComponentName1; break; case 2: name = s_FormatDetail[Index].ComponentName2; break; case 3: name = s_FormatDetail[Index].ComponentName3; break; } - if( name == D3DFCN_D ) + if (name == D3DFCN_D) { return s_FormatDetail[Index].BitsPerComponent[comp]; } @@ -1438,11 +6506,10 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT Format) //--------------------------------------------------------------------------------------------------------------------------------- // GetFormatReturnTypes -void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes( - DXGI_FORMAT Format, - D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations ) // return array with 4 entries +void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes(DXGI_FORMAT Format, + D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations) // return array with 4 entries { - const UINT Index = GetDetailTableIndexThrow(Format); + const UINT Index = GetDetailTableIndexThrow(Format); pInterpretations[D3D10_SB_4_COMPONENT_R] = s_FormatDetail[Index].ComponentInterpretation0; pInterpretations[D3D10_SB_4_COMPONENT_G] = s_FormatDetail[Index].ComponentInterpretation1; pInterpretations[D3D10_SB_4_COMPONENT_B] = s_FormatDetail[Index].ComponentInterpretation2; @@ -1453,41 +6520,41 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes( // GetAddressingBitsPerAlignedSize UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetAddressingBitsPerAlignedSize(DXGI_FORMAT Format) { - UINT byteAlignment = GetByteAlignment(Format); + UINT byteAlignment = GetByteAlignment(Format); UINT8 addressBitsPerElement = 0; - - switch(byteAlignment) - { - case 1: addressBitsPerElement = 0; break; - case 2: addressBitsPerElement = 1; break; - case 4: addressBitsPerElement = 2; break; - case 8: addressBitsPerElement = 3; break; - case 16: addressBitsPerElement = 4; break; - // The format is not supported - default: return UINT8( -1 ); + switch (byteAlignment) + { + case 1: addressBitsPerElement = 0; break; + case 2: addressBitsPerElement = 1; break; + case 4: addressBitsPerElement = 2; break; + case 8: addressBitsPerElement = 3; break; + case 16: addressBitsPerElement = 4; break; + + // The format is not supported + default: return UINT8(-1); } - + return addressBitsPerElement; } //--------------------------------------------------------------------------------------------------------------------------------- // GetNumComponentsInFormat -UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumComponentsInFormat( DXGI_FORMAT Format ) +UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumComponentsInFormat(DXGI_FORMAT Format) { - UINT n = 0; + UINT n = 0; const UINT Index = GetDetailTableIndexThrow(Format); - for( UINT comp = 0; comp < 4; comp++ ) + for (UINT comp = 0; comp < 4; comp++) { D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D; - switch(comp) + switch (comp) { case 0: name = s_FormatDetail[Index].ComponentName0; break; case 1: name = s_FormatDetail[Index].ComponentName1; break; case 2: name = s_FormatDetail[Index].ComponentName2; break; case 3: name = s_FormatDetail[Index].ComponentName3; break; } - if( name != D3DFCN_X ) + if (name != D3DFCN_X) { n++; } @@ -1507,21 +6574,21 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMinNumComponentsInFormats(DXGI_FORMA //--------------------------------------------------------------------------------------------------------------------------------- // Sequential2AbsoluteComponentIndex -UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI_FORMAT Format, UINT SequentialComponentIndex) +UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex(DXGI_FORMAT Format, UINT SequentialComponentIndex) { - UINT n = 0; + UINT n = 0; const UINT Index = GetDetailTableIndexThrow(Format); - for( UINT comp = 0; comp < 4; comp++ ) + for (UINT comp = 0; comp < 4; comp++) { - D3D_FORMAT_COMPONENT_NAME name = static_cast(0); - switch(comp) + auto name = static_cast(0); + switch (comp) { case 0: name = s_FormatDetail[Index].ComponentName0; break; case 1: name = s_FormatDetail[Index].ComponentName1; break; case 2: name = s_FormatDetail[Index].ComponentName2; break; case 3: name = s_FormatDetail[Index].ComponentName3; break; } - if( name != D3DFCN_X ) + if (name != D3DFCN_X) { if (SequentialComponentIndex == n) { @@ -1530,20 +6597,18 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI n++; } } - return UINT( -1 ); + return UINT(-1); } //--------------------------------------------------------------------------------------------------------------------------------- // Depth Only Format bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DepthOnlyFormat(DXGI_FORMAT Format) { - switch( Format ) + switch (Format) { case DXGI_FORMAT_D32_FLOAT: - case DXGI_FORMAT_D16_UNORM: - return true; - default: - return false; + case DXGI_FORMAT_D16_UNORM: return true; + default: return false; } } @@ -1553,10 +6618,8 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsSamplerFeedback(DXGI_FORMAT For switch (Format) { case DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE: - case DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE: - return true; - default: - return false; + case DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE: return true; + default: return false; } } @@ -1578,14 +6641,14 @@ const DXGI_FORMAT* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatCastSet(DXGI_FOR // GetTypeLevel D3D_FORMAT_TYPE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTypeLevel(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].TypeLevel; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].TypeLevel; } //--------------------------------------------------------------------------------------------------------------------------------- // GetLayout D3D_FORMAT_LAYOUT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetLayout(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].Layout; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].Layout; } //--------------------------------------------------------------------------------------------------------------------------------- @@ -1593,12 +6656,12 @@ D3D_FORMAT_LAYOUT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetLayout(DXGI_FORMAT Form D3D_FORMAT_COMPONENT_NAME D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetComponentName(DXGI_FORMAT Format, UINT AbsoluteComponentIndex) { D3D_FORMAT_COMPONENT_NAME name = {}; - switch( AbsoluteComponentIndex ) + switch (AbsoluteComponentIndex) { - case 0: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName0; break; - case 1: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName1; break; - case 2: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName2; break; - case 3: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName3; break; + case 0: name = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentName0; break; + case 1: name = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentName1; break; + case 2: name = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentName2; break; + case 3: name = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentName3; break; #if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) default: throw std::invalid_argument("AbsoluteComponentIndex"); #else @@ -1611,29 +6674,29 @@ D3D_FORMAT_COMPONENT_NAME D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetComponentName(D // GetBitsPerComponent UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerComponent(DXGI_FORMAT Format, UINT AbsoluteComponentIndex) { - if( AbsoluteComponentIndex > 3 ) + if (AbsoluteComponentIndex > 3) { #if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) throw std::invalid_argument("AbsoluteComponentIndex"); #else - return UINT( -1 ); + return UINT(-1); #endif } - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerComponent[AbsoluteComponentIndex]; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].BitsPerComponent[AbsoluteComponentIndex]; } //--------------------------------------------------------------------------------------------------------------------------------- // GetFormatComponentInterpretation D3D_FORMAT_COMPONENT_INTERPRETATION D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatComponentInterpretation(DXGI_FORMAT Format, UINT AbsoluteComponentIndex) { - D3D_FORMAT_COMPONENT_INTERPRETATION interp {}; + D3D_FORMAT_COMPONENT_INTERPRETATION interp{}; - switch( AbsoluteComponentIndex ) + switch (AbsoluteComponentIndex) { - case 0: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation0; break; - case 1: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation1; break; - case 2: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation2; break; - case 3: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation3; break; + case 0: interp = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentInterpretation0; break; + case 1: interp = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentInterpretation1; break; + case 2: interp = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentInterpretation2; break; + case 3: interp = s_FormatDetail[GetDetailTableIndexNoThrow(Format)].ComponentInterpretation3; break; #if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) default: throw std::invalid_argument("AbsoluteComponentIndex"); #else @@ -1647,7 +6710,7 @@ D3D_FORMAT_COMPONENT_INTERPRETATION D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetForma // Planar BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bPlanar; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].bPlanar; } //--------------------------------------------------------------------------------------------------------------------------------- @@ -1661,20 +6724,18 @@ BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(DXGI_FORMAT Format) // YUV BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::YUV(DXGI_FORMAT Format) { - return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bYUV; + return s_FormatDetail[GetDetailTableIndexNoThrow(Format)].bYUV; } //--------------------------------------------------------------------------------------------------------------------------------- // Format family supports stencil bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FamilySupportsStencil(DXGI_FORMAT Format) { - switch( GetParentFormat(Format) ) + switch (GetParentFormat(Format)) { case DXGI_FORMAT_R32G8X24_TYPELESS: - case DXGI_FORMAT_R24G8_TYPELESS: - return true; - default: - return false; + case DXGI_FORMAT_R24G8_TYPELESS: return true; + default: return false; } } @@ -1682,9 +6743,9 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FamilySupportsStencil(DXGI_FORMAT Forma // GetDetailTableIndexThrow UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT Format) { - UINT Index = GetDetailTableIndex( Format ); + UINT Index = GetDetailTableIndex(Format); #if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) - if(UINT( -1 ) == Index ) + if (UINT(-1) == Index) { throw std::invalid_argument("Format"); } @@ -1694,74 +6755,71 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT Fo //--------------------------------------------------------------------------------------------------------------------------------- // GetDetailTableIndexNoThrow -UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexNoThrow(DXGI_FORMAT Format) +UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexNoThrow(DXGI_FORMAT Format) { - UINT Index = GetDetailTableIndex( Format ); - assert(UINT( -1 ) != Index ); // Needs to be validated externally. + UINT Index = GetDetailTableIndex(Format); + assert(UINT(-1) != Index); // Needs to be validated externally. return Index; } //--------------------------------------------------------------------------------------------------------------------------------- // GetYCbCrChromaSubsampling -void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetYCbCrChromaSubsampling( - DXGI_FORMAT Format, - _Out_ UINT& HorizontalSubsampling, - _Out_ UINT& VerticalSubsampling - ) +void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetYCbCrChromaSubsampling(DXGI_FORMAT Format, _Out_ UINT& HorizontalSubsampling, + _Out_ UINT& VerticalSubsampling) { - switch( Format) + switch (Format) { - // YCbCr 4:2:0 - case DXGI_FORMAT_NV12: - case DXGI_FORMAT_P010: - case DXGI_FORMAT_P016: - case DXGI_FORMAT_420_OPAQUE: - HorizontalSubsampling = 2; - VerticalSubsampling = 2; - break; + // YCbCr 4:2:0 + case DXGI_FORMAT_NV12: + case DXGI_FORMAT_P010: + case DXGI_FORMAT_P016: + case DXGI_FORMAT_420_OPAQUE: + HorizontalSubsampling = 2; + VerticalSubsampling = 2; + break; - // YCbCr 4:2:2 - case DXGI_FORMAT_P208: - case DXGI_FORMAT_YUY2: - case DXGI_FORMAT_Y210: - HorizontalSubsampling = 2; - VerticalSubsampling = 1; - break; + // YCbCr 4:2:2 + case DXGI_FORMAT_P208: + case DXGI_FORMAT_YUY2: + case DXGI_FORMAT_Y210: + HorizontalSubsampling = 2; + VerticalSubsampling = 1; + break; - // YCbCr 4:4:0 - case DXGI_FORMAT_V208: - HorizontalSubsampling = 1; - VerticalSubsampling = 2; - break; + // YCbCr 4:4:0 + case DXGI_FORMAT_V208: + HorizontalSubsampling = 1; + VerticalSubsampling = 2; + break; - // YCbCr 4:4:4 - case DXGI_FORMAT_AYUV: - case DXGI_FORMAT_V408: - case DXGI_FORMAT_Y410: - case DXGI_FORMAT_Y416: - // Fallthrough + // YCbCr 4:4:4 + case DXGI_FORMAT_AYUV: + case DXGI_FORMAT_V408: + case DXGI_FORMAT_Y410: + case DXGI_FORMAT_Y416: + // Fallthrough - // YCbCr palletized 4:4:4: - case DXGI_FORMAT_AI44: - case DXGI_FORMAT_IA44: - case DXGI_FORMAT_P8: - case DXGI_FORMAT_A8P8: - HorizontalSubsampling = 1; - VerticalSubsampling = 1; - break; + // YCbCr palletized 4:4:4: + case DXGI_FORMAT_AI44: + case DXGI_FORMAT_IA44: + case DXGI_FORMAT_P8: + case DXGI_FORMAT_A8P8: + HorizontalSubsampling = 1; + VerticalSubsampling = 1; + break; - // YCbCr 4:1:1 - case DXGI_FORMAT_NV11: - HorizontalSubsampling = 4; - VerticalSubsampling = 1; - break; + // YCbCr 4:1:1 + case DXGI_FORMAT_NV11: + HorizontalSubsampling = 4; + VerticalSubsampling = 1; + break; - default: - // All YCbCr formats should be in this list. - assert( !YUV(Format) ); - HorizontalSubsampling = 1; - VerticalSubsampling = 1; - break; + default: + // All YCbCr formats should be in this list. + assert(!YUV(Format)); + HorizontalSubsampling = 1; + VerticalSubsampling = 1; + break; }; } @@ -1774,7 +6832,7 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlaneCount(DXGI_FORMAT Format) return 1; } - // V208 and V408 are the only 3-plane formats. + // V208 and V408 are the only 3-plane formats. return (Format == DXGI_FORMAT_V208 || Format == DXGI_FORMAT_V408) ? 3 : 2; } @@ -1782,25 +6840,22 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlaneCount(DXGI_FORMAT Format) // GetTileShape // // Retrieve 64K Tiled Resource tile shape -void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( - D3D12_TILE_SHAPE* pTileShape, - DXGI_FORMAT Format, - D3D12_RESOURCE_DIMENSION Dimension, - UINT SampleCount - ) +void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape(D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, + D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount) { UINT BPU = GetBitsPerUnit(Format); - switch(Dimension) + switch (Dimension) { case D3D12_RESOURCE_DIMENSION_UNKNOWN: case D3D12_RESOURCE_DIMENSION_BUFFER: case D3D12_RESOURCE_DIMENSION_TEXTURE1D: { assert(!IsBlockCompressFormat(Format)); - pTileShape->WidthInTexels = (BPU == 0) ? D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES : D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES*8 / BPU; + pTileShape->WidthInTexels = + (BPU == 0) ? D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES : D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES * 8 / BPU; pTileShape->HeightInTexels = 1; - pTileShape->DepthInTexels = 1; + pTileShape->DepthInTexels = 1; } break; case D3D12_RESOURCE_DIMENSION_TEXTURE2D: @@ -1810,9 +6865,9 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( // Currently only supported block sizes are 64 and 128. // These equations calculate the size in texels for a tile. It relies on the fact that 64 * 64 blocks fit in a tile if the block size is 128 bits. assert(BPU == 64 || BPU == 128); - pTileShape->WidthInTexels = 64 * GetWidthAlignment(Format); + pTileShape->WidthInTexels = 64 * GetWidthAlignment(Format); pTileShape->HeightInTexels = 64 * GetHeightAlignment(Format); - pTileShape->DepthInTexels = 1; + pTileShape->DepthInTexels = 1; if (BPU == 64) { // If bits per block are 64 we double width so it takes up the full tile size. @@ -1827,36 +6882,37 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( pTileShape->DepthInTexels = 1; if (BPU <= 8) { - pTileShape->WidthInTexels = 256; + pTileShape->WidthInTexels = 256; pTileShape->HeightInTexels = 256; } else if (BPU <= 16) { - pTileShape->WidthInTexels = 256; + pTileShape->WidthInTexels = 256; pTileShape->HeightInTexels = 128; } else if (BPU <= 32) { - pTileShape->WidthInTexels = 128; + pTileShape->WidthInTexels = 128; pTileShape->HeightInTexels = 128; } else if (BPU <= 64) { - pTileShape->WidthInTexels = 128; + pTileShape->WidthInTexels = 128; pTileShape->HeightInTexels = 64; } else if (BPU <= 128) { - pTileShape->WidthInTexels = 64; + pTileShape->WidthInTexels = 64; pTileShape->HeightInTexels = 64; } else { - ASSUME( FALSE ); + ASSUME(FALSE); } - + if (SampleCount <= 1) - { /* Do nothing */ } + { /* Do nothing */ + } else if (SampleCount <= 2) { pTileShape->WidthInTexels /= 2; @@ -1879,7 +6935,7 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( } else { - ASSUME( FALSE ); + ASSUME(FALSE); } } } @@ -1891,9 +6947,9 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( // Currently only supported block sizes are 64 and 128. // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits. assert(BPU == 64 || BPU == 128); - pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format); + pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format); pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format); - pTileShape->DepthInTexels = 16 * GetDepthAlignment(Format); + pTileShape->DepthInTexels = 16 * GetDepthAlignment(Format); if (BPU == 64) { // If bits per block are 64 we double width so it takes up the full tile size. @@ -1905,41 +6961,41 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( } else if (Format == DXGI_FORMAT_R8G8_B8G8_UNORM || Format == DXGI_FORMAT_G8R8_G8B8_UNORM) { - //RGBG and GRGB are treated as 2x1 block format - pTileShape->WidthInTexels = 64; + // RGBG and GRGB are treated as 2x1 block format + pTileShape->WidthInTexels = 64; pTileShape->HeightInTexels = 32; - pTileShape->DepthInTexels = 16; + pTileShape->DepthInTexels = 16; } else { // Not a block format so BPU is bits per pixel. assert(GetWidthAlignment(Format) == 1 && GetHeightAlignment(Format) == 1 && GetDepthAlignment(Format)); - switch(BPU) + switch (BPU) { case 8: - pTileShape->WidthInTexels = 64; + pTileShape->WidthInTexels = 64; pTileShape->HeightInTexels = 32; - pTileShape->DepthInTexels = 32; + pTileShape->DepthInTexels = 32; break; case 16: - pTileShape->WidthInTexels = 32; + pTileShape->WidthInTexels = 32; pTileShape->HeightInTexels = 32; - pTileShape->DepthInTexels = 32; + pTileShape->DepthInTexels = 32; break; case 32: - pTileShape->WidthInTexels = 32; + pTileShape->WidthInTexels = 32; pTileShape->HeightInTexels = 32; - pTileShape->DepthInTexels = 16; + pTileShape->DepthInTexels = 16; break; case 64: - pTileShape->WidthInTexels = 32; + pTileShape->WidthInTexels = 32; pTileShape->HeightInTexels = 16; - pTileShape->DepthInTexels = 16; + pTileShape->DepthInTexels = 16; break; case 128: - pTileShape->WidthInTexels = 16; + pTileShape->WidthInTexels = 16; pTileShape->HeightInTexels = 16; - pTileShape->DepthInTexels = 16; + pTileShape->DepthInTexels = 16; break; } } @@ -1952,25 +7008,21 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape( // Get4KTileShape // // Retrieve 4K Tiled Resource tile shape -void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( - D3D12_TILE_SHAPE* pTileShape, - DXGI_FORMAT Format, - D3D12_RESOURCE_DIMENSION Dimension, - UINT SampleCount - ) +void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape(D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, + D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount) { UINT BPU = GetBitsPerUnit(Format); - switch(Dimension) + switch (Dimension) { case D3D12_RESOURCE_DIMENSION_UNKNOWN: case D3D12_RESOURCE_DIMENSION_BUFFER: case D3D12_RESOURCE_DIMENSION_TEXTURE1D: { assert(!IsBlockCompressFormat(Format)); - pTileShape->WidthInTexels = (BPU == 0) ? 4096 : 4096*8 / BPU; + pTileShape->WidthInTexels = (BPU == 0) ? 4096 : 4096 * 8 / BPU; pTileShape->HeightInTexels = 1; - pTileShape->DepthInTexels = 1; + pTileShape->DepthInTexels = 1; } break; case D3D12_RESOURCE_DIMENSION_TEXTURE2D: @@ -1981,7 +7033,7 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( // Currently only supported block sizes are 64 and 128. // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits. assert(BPU == 64 || BPU == 128); - pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format); + pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format); pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format); if (BPU == 64) { @@ -1996,36 +7048,37 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( { if (BPU <= 8) { - pTileShape->WidthInTexels = 64; + pTileShape->WidthInTexels = 64; pTileShape->HeightInTexels = 64; } else if (BPU <= 16) { - pTileShape->WidthInTexels = 64; + pTileShape->WidthInTexels = 64; pTileShape->HeightInTexels = 32; } else if (BPU <= 32) { - pTileShape->WidthInTexels = 32; + pTileShape->WidthInTexels = 32; pTileShape->HeightInTexels = 32; } else if (BPU <= 64) { - pTileShape->WidthInTexels = 32; + pTileShape->WidthInTexels = 32; pTileShape->HeightInTexels = 16; } else if (BPU <= 128) { - pTileShape->WidthInTexels = 16; + pTileShape->WidthInTexels = 16; pTileShape->HeightInTexels = 16; } else { - ASSUME( FALSE ); + ASSUME(FALSE); } if (SampleCount <= 1) - { /* Do nothing */ } + { /* Do nothing */ + } else if (SampleCount <= 2) { pTileShape->WidthInTexels /= 2; @@ -2048,9 +7101,9 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( } else { - ASSUME( FALSE ); + ASSUME(FALSE); } - + assert(GetWidthAlignment(Format) == 1); assert(GetHeightAlignment(Format) == 1); assert(GetDepthAlignment(Format) == 1); @@ -2065,9 +7118,9 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( // Currently only supported block sizes are 64 and 128. // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits. assert(BPU == 64 || BPU == 128); - pTileShape->WidthInTexels = 8 * GetWidthAlignment(Format); + pTileShape->WidthInTexels = 8 * GetWidthAlignment(Format); pTileShape->HeightInTexels = 8 * GetHeightAlignment(Format); - pTileShape->DepthInTexels = 4; + pTileShape->DepthInTexels = 4; if (BPU == 64) { // If bits per block are 64 we double width so it takes up the full tile size. @@ -2081,37 +7134,37 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( { if (BPU <= 8) { - pTileShape->WidthInTexels = 16; + pTileShape->WidthInTexels = 16; pTileShape->HeightInTexels = 16; - pTileShape->DepthInTexels = 16; + pTileShape->DepthInTexels = 16; } else if (BPU <= 16) { - pTileShape->WidthInTexels = 16; + pTileShape->WidthInTexels = 16; pTileShape->HeightInTexels = 16; - pTileShape->DepthInTexels = 8; + pTileShape->DepthInTexels = 8; } else if (BPU <= 32) { - pTileShape->WidthInTexels = 16; + pTileShape->WidthInTexels = 16; pTileShape->HeightInTexels = 8; - pTileShape->DepthInTexels = 8; + pTileShape->DepthInTexels = 8; } else if (BPU <= 64) { - pTileShape->WidthInTexels = 8; + pTileShape->WidthInTexels = 8; pTileShape->HeightInTexels = 8; - pTileShape->DepthInTexels = 8; + pTileShape->DepthInTexels = 8; } else if (BPU <= 128) { - pTileShape->WidthInTexels = 8; + pTileShape->WidthInTexels = 8; pTileShape->HeightInTexels = 8; - pTileShape->DepthInTexels = 4; + pTileShape->DepthInTexels = 4; } else { - ASSUME( FALSE ); + ASSUME(FALSE); } assert(GetWidthAlignment(Format) == 1); @@ -2125,84 +7178,62 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape( //---------------------------------------------------------------------------------------------------------------------------------- // GetPlaneSliceFromViewFormat -// Maps resource format + view format to a plane index for resource formats where the plane index can be inferred from this information. -// For planar formats where the plane index is ambiguous given this information (examples: V208, V408), this function returns 0. -// This function returns 0 for non-planar formats. -UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSliceFromViewFormat( - DXGI_FORMAT ResourceFormat, - DXGI_FORMAT ViewFormat - ) +// Maps resource format + view format to a plane index for resource formats where the plane index can be inferred from +// this information. For planar formats where the plane index is ambiguous given this information (examples: V208, +// V408), this function returns 0. This function returns 0 for non-planar formats. +UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSliceFromViewFormat(DXGI_FORMAT ResourceFormat, DXGI_FORMAT ViewFormat) { - switch(GetParentFormat(ResourceFormat)) + switch (GetParentFormat(ResourceFormat)) { case DXGI_FORMAT_R24G8_TYPELESS: - switch(ViewFormat) + switch (ViewFormat) { - case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: - return 0; - case DXGI_FORMAT_X24_TYPELESS_G8_UINT: - return 1; - default: - ASSUME( false ); + case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: return 0; + case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return 1; + default: ASSUME(false); } break; case DXGI_FORMAT_R32G8X24_TYPELESS: - switch(ViewFormat) + switch (ViewFormat) { - case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: - return 0; - case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: - return 1; - default: - ASSUME( false ); + case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: return 0; + case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: return 1; + default: ASSUME(false); } break; case DXGI_FORMAT_NV12: case DXGI_FORMAT_NV11: case DXGI_FORMAT_P208: - switch(ViewFormat) + switch (ViewFormat) { case DXGI_FORMAT_R8_UNORM: - case DXGI_FORMAT_R8_UINT: - return 0; + case DXGI_FORMAT_R8_UINT: return 0; case DXGI_FORMAT_R8G8_UNORM: - case DXGI_FORMAT_R8G8_UINT: - return 1; - default: - ASSUME( false ); + case DXGI_FORMAT_R8G8_UINT: return 1; + default: ASSUME(false); } break; case DXGI_FORMAT_P016: case DXGI_FORMAT_P010: - switch(ViewFormat) + switch (ViewFormat) { case DXGI_FORMAT_R16_UNORM: - case DXGI_FORMAT_R16_UINT: - return 0; + case DXGI_FORMAT_R16_UINT: return 0; case DXGI_FORMAT_R16G16_UNORM: case DXGI_FORMAT_R16G16_UINT: - case DXGI_FORMAT_R32_UINT: - return 1; - default: - ASSUME( false ); + case DXGI_FORMAT_R32_UINT: return 1; + default: ASSUME(false); } break; - default: - break; + default: break; } return 0; } //---------------------------------------------------------------------------------------------------------------------------------- void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout( - UINT PlaneSlice, - DXGI_FORMAT Format, - UINT Width, - UINT Height, - _Out_ DXGI_FORMAT& PlaneFormat, - _Out_ UINT& MinPlanePitchWidth, - _Out_ UINT& PlaneWidth, - _Out_ UINT& PlaneHeight) + UINT PlaneSlice, DXGI_FORMAT Format, UINT Width, UINT Height, _Out_ DXGI_FORMAT& PlaneFormat, + _Out_ UINT& MinPlanePitchWidth, _Out_ UINT& PlaneWidth, _Out_ UINT& PlaneHeight) { DXGI_FORMAT ParentFormat = GetParentFormat(Format); @@ -2210,22 +7241,21 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopya { switch (ParentFormat) { - // YCbCr 4:2:0 + // YCbCr 4:2:0 case DXGI_FORMAT_NV12: - switch(PlaneSlice) + switch (PlaneSlice) { case 0: PlaneFormat = DXGI_FORMAT_R8_TYPELESS; - PlaneWidth = Width; + PlaneWidth = Width; PlaneHeight = Height; break; case 1: PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS; - PlaneWidth = (Width + 1) >> 1; + PlaneWidth = (Width + 1) >> 1; PlaneHeight = (Height + 1) >> 1; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; MinPlanePitchWidth = PlaneWidth; @@ -2233,20 +7263,19 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopya case DXGI_FORMAT_P010: case DXGI_FORMAT_P016: - switch(PlaneSlice) + switch (PlaneSlice) { case 0: PlaneFormat = DXGI_FORMAT_R16_TYPELESS; - PlaneWidth = Width; + PlaneWidth = Width; PlaneHeight = Height; break; case 1: PlaneFormat = DXGI_FORMAT_R16G16_TYPELESS; - PlaneWidth = (Width + 1) >> 1; + PlaneWidth = (Width + 1) >> 1; PlaneHeight = (Height + 1) >> 1; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; MinPlanePitchWidth = PlaneWidth; @@ -2254,20 +7283,19 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopya // YCbCr 4:2:2 case DXGI_FORMAT_P208: - switch(PlaneSlice) + switch (PlaneSlice) { case 0: PlaneFormat = DXGI_FORMAT_R8_TYPELESS; - PlaneWidth = Width; + PlaneWidth = Width; PlaneHeight = Height; break; case 1: PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS; - PlaneWidth = (Width + 1) >> 1; + PlaneWidth = (Width + 1) >> 1; PlaneHeight = Height; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; MinPlanePitchWidth = PlaneWidth; @@ -2276,19 +7304,18 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopya // YCbCr 4:4:0 case DXGI_FORMAT_V208: PlaneFormat = DXGI_FORMAT_R8_TYPELESS; - switch(PlaneSlice) + switch (PlaneSlice) { case 0: - PlaneWidth = Width; + PlaneWidth = Width; PlaneHeight = Height; break; case 1: case 2: - PlaneWidth = Width; + PlaneWidth = Width; PlaneHeight = (Height + 1) >> 1; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; MinPlanePitchWidth = PlaneWidth; @@ -2296,77 +7323,73 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopya // YCbCr 4:4:4 case DXGI_FORMAT_V408: - - switch(PlaneSlice) + + switch (PlaneSlice) { case 0: case 1: case 2: - PlaneFormat = DXGI_FORMAT_R8_TYPELESS; - PlaneWidth = Width; - PlaneHeight = Height; + PlaneFormat = DXGI_FORMAT_R8_TYPELESS; + PlaneWidth = Width; + PlaneHeight = Height; MinPlanePitchWidth = PlaneWidth; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; break; // YCbCr 4:1:1 case DXGI_FORMAT_NV11: - switch(PlaneSlice) + switch (PlaneSlice) { case 0: - PlaneFormat = DXGI_FORMAT_R8_TYPELESS; - PlaneWidth = Width; - PlaneHeight = Height; + PlaneFormat = DXGI_FORMAT_R8_TYPELESS; + PlaneWidth = Width; + PlaneHeight = Height; MinPlanePitchWidth = Width; break; case 1: PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS; - PlaneWidth = (Width + 3) >> 2; + PlaneWidth = (Width + 3) >> 2; PlaneHeight = Height; - + // NV11 has unused padding to the right of the chroma plane in the RowMajor (linear) copyable layout. MinPlanePitchWidth = (Width + 1) >> 1; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; - + break; case DXGI_FORMAT_R32G8X24_TYPELESS: case DXGI_FORMAT_R24G8_TYPELESS: - switch(PlaneSlice) + switch (PlaneSlice) { case 0: - PlaneFormat = DXGI_FORMAT_R32_TYPELESS; - PlaneWidth = Width; - PlaneHeight = Height; + PlaneFormat = DXGI_FORMAT_R32_TYPELESS; + PlaneWidth = Width; + PlaneHeight = Height; MinPlanePitchWidth = Width; break; case 1: - PlaneFormat = DXGI_FORMAT_R8_TYPELESS; - PlaneWidth = Width; - PlaneHeight = Height; + PlaneFormat = DXGI_FORMAT_R8_TYPELESS; + PlaneWidth = Width; + PlaneHeight = Height; MinPlanePitchWidth = Width; break; - default: - ASSUME(FALSE); + default: ASSUME(FALSE); }; break; - default: - ASSUME( FALSE ); + default: ASSUME(FALSE); }; } else { assert(PlaneSlice == 0); - PlaneFormat = Format; - PlaneWidth = Width; - PlaneHeight = Height; + PlaneFormat = Format; + PlaneWidth = Width; + PlaneHeight = Height; MinPlanePitchWidth = PlaneWidth; } } @@ -2375,63 +7398,73 @@ void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopya // GetPlaneCount UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(DXGI_FORMAT Format) { - switch( GetParentFormat(Format) ) + switch (GetParentFormat(Format)) { - case DXGI_FORMAT_NV12: - case DXGI_FORMAT_NV11: - case DXGI_FORMAT_P208: - case DXGI_FORMAT_P016: - case DXGI_FORMAT_P010: - case DXGI_FORMAT_R24G8_TYPELESS: - case DXGI_FORMAT_R32G8X24_TYPELESS: - return 2; - case DXGI_FORMAT_V208: - case DXGI_FORMAT_V408: - return 3; - default: - return 1; + case DXGI_FORMAT_NV12: + case DXGI_FORMAT_NV11: + case DXGI_FORMAT_P208: + case DXGI_FORMAT_P016: + case DXGI_FORMAT_P010: + case DXGI_FORMAT_R24G8_TYPELESS: + case DXGI_FORMAT_R32G8X24_TYPELESS: return 2; + case DXGI_FORMAT_V208: + case DXGI_FORMAT_V408: return 3; + default: return 1; } } //--------------------------------------------------------------------------------------------------------------------------------- -void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMipDimensions(UINT8 mipSlice, _Inout_ UINT64 *pWidth, _Inout_opt_ UINT64 *pHeight, _Inout_opt_ UINT64 *pDepth) +void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMipDimensions(UINT8 mipSlice, _Inout_ UINT64* pWidth, + _Inout_opt_ UINT64* pHeight, _Inout_opt_ UINT64* pDepth) { - UINT denominator = (1 << mipSlice); // 2 ^ subresource - UINT64 mipWidth = *pWidth / denominator; - UINT64 mipHeight = pHeight ? *pHeight / denominator : 1; - UINT64 mipDepth = pDepth ? *pDepth / denominator : 1; + UINT denominator = (1U << mipSlice); // 2 ^ subresource + UINT64 mipWidth = *pWidth / denominator; + UINT64 mipHeight = pHeight ? *pHeight / denominator : 1; + UINT64 mipDepth = pDepth ? *pDepth / denominator : 1; // Adjust dimensions for degenerate mips - if(mipHeight == 0 ) + if (mipHeight == 0) + { mipHeight = 1; - if(mipWidth == 0 ) + } + if (mipWidth == 0) + { mipWidth = 1; - if(mipDepth == 0) + } + if (mipDepth == 0) + { mipDepth = 1; + } *pWidth = mipWidth; - if(pHeight) *pHeight = mipHeight; - if(pDepth) *pDepth = mipDepth; + if (pHeight) + { + *pHeight = mipHeight; + } + if (pDepth) + { + *pDepth = mipDepth; + } } //--------------------------------------------------------------------------------------------------------------------------------- // DX9VertexOrIndexFormat BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9VertexOrIndexFormat(DXGI_FORMAT Format) { - return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9VertexOrIndexFormat; + return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(Format)].bDX9VertexOrIndexFormat; } //--------------------------------------------------------------------------------------------------------------------------------- // DX9TextureFormat BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9TextureFormat(DXGI_FORMAT Format) { - return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9TextureFormat; + return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(Format)].bDX9TextureFormat; } //--------------------------------------------------------------------------------------------------------------------------------- // FloatNormTextureFormat BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatNormTextureFormat(DXGI_FORMAT Format) { - return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bFloatNormFormat; + return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(Format)].bFloatNormFormat; } //--------------------------------------------------------------------------------------------------------------------------------- @@ -2444,30 +7477,22 @@ BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatNormTextureFormat(DXGI_FORMAT Form // We were able to allow resources (Texture1D/2D/3D), created with a format from a small set of families that have 32 bits per element // (such as R8G8B8A8_TYPELESS), to be cast to R32_* when creating a UAV. This means the Compute Shader or Pixel Shader can // do simultaneous read+write on the resource when bound as an R32_* UAV, with the caveat that the shader code has to do manual -// type conversion manually, but later on the resource can be used as an SRV or RT as the desired type (e.g. R8G8B8A8_UNORM), and -// thus have access to filtering/blending where the hardware knows what the format is. +// type conversion manually, but later on the resource can be used as an SRV or RT as the desired type (e.g. R8G8B8A8_UNORM), and +// thus have access to filtering/blending where the hardware knows what the format is. // -// If we didn't have this ability to cast some formats to R32_* UAVs, applications would have to keep an extra allocation around -// and do a rendering pass that copies from the R32_* UAV to whatever typed resource they really wanted. For formats not included -// in this list, such as any format that doesn't have 32-bits per component, as well as some 32-bit per component formats like -// R24G8 or R11G11B10_FLOAT there is no alternative for an application but to do the extra copy as mentioned, or avoid in-place +// If we didn't have this ability to cast some formats to R32_* UAVs, applications would have to keep an extra allocation around +// and do a rendering pass that copies from the R32_* UAV to whatever typed resource they really wanted. For formats not included +// in this list, such as any format that doesn't have 32-bits per component, as well as some 32-bit per component formats like +// R24G8 or R11G11B10_FLOAT there is no alternative for an application but to do the extra copy as mentioned, or avoid in-place // image editing in favor of ping-ponging between buffers with multiple passes. -// +// bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::ValidCastToR32UAV(DXGI_FORMAT from, DXGI_FORMAT to) { // Allow casting of 32 bit formats to R32_* - if( - ((to == DXGI_FORMAT_R32_UINT)||(to == DXGI_FORMAT_R32_SINT)||(to == DXGI_FORMAT_R32_FLOAT)) - && - ( - (from == DXGI_FORMAT_R10G10B10A2_TYPELESS) || - (from == DXGI_FORMAT_R8G8B8A8_TYPELESS) || - (from == DXGI_FORMAT_B8G8R8A8_TYPELESS) || - (from == DXGI_FORMAT_B8G8R8X8_TYPELESS) || - (from == DXGI_FORMAT_R16G16_TYPELESS) || - (from == DXGI_FORMAT_R32_TYPELESS) - ) - ) + if (((to == DXGI_FORMAT_R32_UINT) || (to == DXGI_FORMAT_R32_SINT) || (to == DXGI_FORMAT_R32_FLOAT)) && + ((from == DXGI_FORMAT_R10G10B10A2_TYPELESS) || (from == DXGI_FORMAT_R8G8B8A8_TYPELESS) || + (from == DXGI_FORMAT_B8G8R8A8_TYPELESS) || (from == DXGI_FORMAT_B8G8R8X8_TYPELESS) || + (from == DXGI_FORMAT_R16G16_TYPELESS) || (from == DXGI_FORMAT_R32_TYPELESS))) { return true; } @@ -2478,35 +7503,22 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::ValidCastToR32UAV(DXGI_FORMAT from, DXG // IsSupportedTextureDisplayableFormat // // List of formats associated with Feature_D3D1XDisplayable -bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSupportedTextureDisplayableFormat - ( DXGI_FORMAT Format - , bool bMediaFormatOnly - ) +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSupportedTextureDisplayableFormat(DXGI_FORMAT Format, bool bMediaFormatOnly) { if (bMediaFormatOnly) { - return (false - || ( Format == DXGI_FORMAT_NV12 - || Format == DXGI_FORMAT_YUY2 - ) - ); + return (false || (Format == DXGI_FORMAT_NV12 || Format == DXGI_FORMAT_YUY2)); } else { return (false // eases evolution - || ( Format == DXGI_FORMAT_B8G8R8A8_UNORM - || Format == DXGI_FORMAT_R8G8B8A8_UNORM - || Format == DXGI_FORMAT_R16G16B16A16_FLOAT - || Format == DXGI_FORMAT_R10G10B10A2_UNORM - || Format == DXGI_FORMAT_NV12 - || Format == DXGI_FORMAT_YUY2 - ) - ); + || (Format == DXGI_FORMAT_B8G8R8A8_UNORM || Format == DXGI_FORMAT_R8G8B8A8_UNORM || Format == DXGI_FORMAT_R16G16B16A16_FLOAT || + Format == DXGI_FORMAT_R10G10B10A2_UNORM || Format == DXGI_FORMAT_NV12 || Format == DXGI_FORMAT_YUY2)); } } //--------------------------------------------------------------------------------------------------------------------------------- -bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB) +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB) { UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB); for (UINT c = 0; c < NumComponents; c++) @@ -2522,15 +7534,14 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT Fo } //--------------------------------------------------------------------------------------------------------------------------------- -bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB) +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB) { UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB); for (UINT c = 0; c < NumComponents; c++) { D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c); D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c); - if (((fciA == D3DFCI_SNORM) && (fciB == D3DFCI_UNORM)) || - ((fciB == D3DFCI_SNORM) && (fciA == D3DFCI_UNORM))) + if (((fciA == D3DFCI_SNORM) && (fciB == D3DFCI_UNORM)) || ((fciB == D3DFCI_SNORM) && (fciA == D3DFCI_UNORM))) { return true; } @@ -2540,61 +7551,59 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT Forma //--------------------------------------------------------------------------------------------------------------------------------- // Formats allowed by runtime for decode histogram. - bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format) - { - return ( - /* YUV 4:2:0 */ - Format == DXGI_FORMAT_NV12 - || Format == DXGI_FORMAT_P010 - || Format == DXGI_FORMAT_P016 - /* YUV 4:2:2 */ - || Format == DXGI_FORMAT_YUY2 - || Format == DXGI_FORMAT_Y210 - || Format == DXGI_FORMAT_Y216 - /* YUV 4:4:4 */ - || Format == DXGI_FORMAT_AYUV - || Format == DXGI_FORMAT_Y410 - || Format == DXGI_FORMAT_Y416 - ); - } +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format) +{ + return ( + /* YUV 4:2:0 */ + Format == DXGI_FORMAT_NV12 || Format == DXGI_FORMAT_P010 || + Format == DXGI_FORMAT_P016 + /* YUV 4:2:2 */ + || Format == DXGI_FORMAT_YUY2 || Format == DXGI_FORMAT_Y210 || + Format == DXGI_FORMAT_Y216 + /* YUV 4:4:4 */ + || Format == DXGI_FORMAT_AYUV || Format == DXGI_FORMAT_Y410 || Format == DXGI_FORMAT_Y416); +} //--------------------------------------------------------------------------------------------------------------------------------- // Formats allowed by runtime for decode histogram. Scopes to tested formats. - bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::MotionEstimatorAllowedInputFormat(DXGI_FORMAT Format) - { - return Format == DXGI_FORMAT_NV12; - } +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::MotionEstimatorAllowedInputFormat(DXGI_FORMAT Format) +{ + return Format == DXGI_FORMAT_NV12; +} //--------------------------------------------------------------------------------------------------------------------------------- - bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsDepth(DXGI_FORMAT Format) - { +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsDepth(DXGI_FORMAT Format) +{ // If the number of bits associated with depth in the format is greater then 0, then the format supports depth return (GetComponentName(Format, 0) == D3DFCN_D); - } +} - //--------------------------------------------------------------------------------------------------------------------------------- - bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsStencil(DXGI_FORMAT Format) - { +//--------------------------------------------------------------------------------------------------------------------------------- +bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsStencil(DXGI_FORMAT Format) +{ // If the number of bits associated with stencil in the format is greater then 0, then the format supports stencil return GetBitsPerStencil(Format) > 0; - } +} -#undef R -#undef G -#undef B -#undef A -#undef D -#undef S -#undef X +#undef R +#undef G +#undef B +#undef A +#undef D +#undef S +#undef X -#undef _TYPELESS -#undef _FLOAT -#undef _SNORM -#undef _UNORM -#undef _SINT -#undef _UINT -#undef _UNORM_SRGB -#undef _FIXED_2_8 +#undef _TYPELESS +#undef _FLOAT +#undef _SNORM +#undef _UNORM +#undef _SINT +#undef _UINT +#undef _UNORM_SRGB +#undef _FIXED_2_8 #endif // D3D12_SDK_VERSION >= 606 +#ifdef __clang__ +#pragma clang diagnostic pop +#endif diff --git a/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.h b/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.h index 66c7600..b268abe 100644 --- a/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.h +++ b/Juliet/src/Graphics/D3D12/AgilitySDK/d3dx12/d3dx12_property_format_table.h @@ -4,8 +4,8 @@ // Licensed under the MIT License (MIT). // //********************************************************* -#ifndef __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__ -#define __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__ +#pragma once + #include "d3d12.h" #define MAP_ALIGN_REQUIREMENT 16 // Map is required to return 16-byte aligned addresses @@ -124,5 +124,3 @@ private: static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format); }; - -#endif \ No newline at end of file diff --git a/Juliet/src/Graphics/D3D12/D3D12Buffer.cpp b/Juliet/src/Graphics/D3D12/D3D12Buffer.cpp new file mode 100644 index 0000000..d5901f9 --- /dev/null +++ b/Juliet/src/Graphics/D3D12/D3D12Buffer.cpp @@ -0,0 +1,166 @@ +#include +#include +#include +#include +#include + +namespace Juliet::D3D12 +{ + namespace + { + struct D3D12Buffer + { + ID3D12Resource* Handle; + int32 ReferenceCount; + + Internal::D3D12DescriptorHeap CBVDescriptorHeap; + Internal::D3D12DescriptorHeap SRVDescriptorHeap; + Internal::D3D12DescriptorHeap UAVDescriptorHeap; + }; + + enum class D3D12BufferType : uint8 + { + Base, + TransferDownload, + TransferUpload, + }; + + void DestroyBuffer(NonNullPtr /*d3d12Driver*/, D3D12Buffer* buffer) + { + if (!buffer) + { + return; + } + + if (buffer->Handle) + { + ID3D12Resource_Release(buffer->Handle); + } + Free(buffer); + } + + D3D12Buffer* CreateBuffer(NonNullPtr d3d12Driver, size_t size, BufferUsage usage, D3D12BufferType type) + { + auto buffer = static_cast(Calloc(1, sizeof(D3D12Buffer))); + if (!buffer) + { + return nullptr; + } + + D3D12_RESOURCE_STATES initialState = D3D12_RESOURCE_STATE_COMMON; + D3D12_HEAP_PROPERTIES heapProperties = {}; + D3D12_HEAP_FLAGS heapFlags = D3D12_HEAP_FLAG_NONE; + + switch (type) + { + case D3D12BufferType::Base: + { + switch (usage) + { + case BufferUsage::None: + { + Assert(false , "Creating buffer with invalid usage"); + DestroyBuffer(d3d12Driver, buffer); + return nullptr; + } + + case BufferUsage::IndexBuffer: + case BufferUsage::StructuredBuffer: + { + heapProperties.Type = D3D12_HEAP_TYPE_DEFAULT; + heapProperties.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heapProperties.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + heapFlags = D3D12_HEAP_FLAG_NONE; + break; + } + case BufferUsage::ConstantBuffer: + { + if (d3d12Driver->GPUUploadHeapSupported) + { + heapProperties.Type = D3D12_HEAP_TYPE_GPU_UPLOAD; + heapProperties.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heapProperties.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + } + else + { + heapProperties.Type = D3D12_HEAP_TYPE_UPLOAD; + heapProperties.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heapProperties.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + initialState = D3D12_RESOURCE_STATE_GENERIC_READ; + } + heapFlags = D3D12_HEAP_FLAG_NONE; + break; + } + } + break; + } + case D3D12BufferType::TransferDownload: + { + heapProperties.Type = D3D12_HEAP_TYPE_READBACK; + heapProperties.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heapProperties.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + heapFlags = D3D12_HEAP_FLAG_NONE; + initialState = D3D12_RESOURCE_STATE_COPY_DEST; + break; + } + case D3D12BufferType::TransferUpload: + { + heapProperties.Type = D3D12_HEAP_TYPE_UPLOAD; + heapProperties.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heapProperties.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + heapFlags = D3D12_HEAP_FLAG_NONE; + initialState = D3D12_RESOURCE_STATE_GENERIC_READ; + break; + } + } + + // D3D12_UNORDERED_ACCESS_VIEW_DESC uavDesc; + // D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc; + // D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc; + + D3D12_RESOURCE_DESC desc = {}; + desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; + desc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT; + desc.Width = size; + desc.Height = 1; + desc.DepthOrArraySize = 1; + desc.MipLevels = 1; + desc.Format = DXGI_FORMAT_UNKNOWN; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR; + desc.Flags = D3D12_RESOURCE_FLAG_NONE; + + ID3D12Resource* handle = nullptr; + HRESULT result = ID3D12Device_CreateCommittedResource(d3d12Driver->D3D12Device, &heapProperties, heapFlags, + &desc, initialState, NULL, IID_ID3D12Resource, + reinterpret_cast(&handle)); + if (FAILED(result)) + { + LogError(d3d12Driver->D3D12Device, "Could not create buffer!", result); + DestroyBuffer(d3d12Driver, buffer); + return nullptr; + } + + buffer->ReferenceCount = 0; + buffer->Handle = handle; + + return nullptr; + } + } // namespace + + GraphicsBuffer* CreateGraphicsBuffer(NonNullPtr driver, size_t size, BufferUsage usage) + { + auto d3d12Driver = static_cast(driver.Get()); + return reinterpret_cast(CreateBuffer(d3d12Driver, size, usage, D3D12BufferType::Base)); + } + + GraphicsTransferBuffer* CreateGraphicsTransferBuffer(NonNullPtr driver, size_t size, TransferBufferUsage usage) + { + auto d3d12Driver = static_cast(driver.Get()); + return reinterpret_cast( + CreateBuffer(d3d12Driver, size, BufferUsage::None, + usage == TransferBufferUsage::Upload ? D3D12BufferType::TransferUpload : D3D12BufferType::TransferDownload)); + } + +} // namespace Juliet::D3D12 diff --git a/Juliet/src/Graphics/D3D12/D3D12Buffer.h b/Juliet/src/Graphics/D3D12/D3D12Buffer.h new file mode 100644 index 0000000..41466ae --- /dev/null +++ b/Juliet/src/Graphics/D3D12/D3D12Buffer.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include + +namespace Juliet +{ + struct GPUDriver; +} +namespace Juliet::D3D12 +{ + extern GraphicsBuffer* CreateGraphicsBuffer(NonNullPtr driver, size_t size, BufferUsage usage); + extern GraphicsTransferBuffer* CreateGraphicsTransferBuffer(NonNullPtr driver, size_t size, TransferBufferUsage usage); +} diff --git a/Juliet/src/Graphics/D3D12/D3D12CommandList.cpp b/Juliet/src/Graphics/D3D12/D3D12CommandList.cpp index c48ed5f..8980958 100644 --- a/Juliet/src/Graphics/D3D12/D3D12CommandList.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12CommandList.cpp @@ -1,12 +1,13 @@ -#include -#include - #include #include #include #include #include +#include +#include +#include + namespace Juliet::D3D12 { namespace @@ -29,7 +30,7 @@ namespace Juliet::D3D12 reinterpret_cast(&baseData->Allocator)); if (FAILED(result)) { - Assert(false && "Error not implemented: cannot create ID3D12CommandAllocator"); + Assert(false, "Error not implemented: cannot create ID3D12CommandAllocator"); return false; } @@ -58,8 +59,8 @@ namespace Juliet::D3D12 reinterpret_cast(&d3d12GraphicsCommandList)); if (FAILED(result)) { - Assert(false && "Error not implemented: cannot create ID3D12GraphicsCommandList6 (graphics or " - "compute command list"); + Assert(false, "Error not implemented: cannot create ID3D12GraphicsCommandList6 (graphics or " + "compute command list"); return false; } @@ -79,8 +80,8 @@ namespace Juliet::D3D12 reinterpret_cast(&d3d12GraphicsCommandList)); if (FAILED(result)) { - Assert(false && "Error not implemented: cannot create ID3D12GraphicsCommandList6 (graphics or " - "compute command list"); + Assert(false, "Error not implemented: cannot create ID3D12GraphicsCommandList6 (graphics or " + "compute command list"); return false; } @@ -267,9 +268,11 @@ namespace Juliet::D3D12 } // Mark the command list as submitted - if (d3d12Driver->SubmittedCommandListCount + 1 >= d3d12Driver->SubmittedCommandListCapacity) + const uint32 newValue = static_cast(d3d12Driver->SubmittedCommandListCount) + 1U; + Assert(newValue <= 0xFF && "Command List count exceeded uint8 capacity!"); + if (newValue >= d3d12Driver->SubmittedCommandListCapacity) { - d3d12Driver->SubmittedCommandListCapacity = d3d12Driver->SubmittedCommandListCount + 1; + d3d12Driver->SubmittedCommandListCapacity = static_cast(newValue); d3d12Driver->SubmittedCommandLists = static_cast( Realloc(d3d12Driver->SubmittedCommandLists, sizeof(D3D12CommandList*) * d3d12Driver->SubmittedCommandListCapacity)); @@ -299,7 +302,7 @@ namespace Juliet::D3D12 result = IDXGISwapChain_Present(windowData->SwapChain, syncInterval, presentFlags); if (FAILED(result)) { - result = false; + success = false; } ID3D12Resource_Release( @@ -317,7 +320,7 @@ namespace Juliet::D3D12 uint64 fenceValue = ID3D12Fence_GetCompletedValue(d3d12Driver->SubmittedCommandLists[i]->InFlightFence->Handle); if (fenceValue == D3D12_FENCE_SIGNAL_VALUE) { - result &= Internal::CleanCommandList(d3d12Driver, d3d12Driver->SubmittedCommandLists[i], false); + success &= Internal::CleanCommandList(d3d12Driver, d3d12Driver->SubmittedCommandLists[i], false); } } @@ -426,7 +429,7 @@ namespace Juliet::D3D12 ReturnDescriptorHeapToPool(driver, commandList->CRB_SRV_UAV_Heap); ReturnDescriptorHeapToPool(driver, commandList->RTV_Heap); commandList->CRB_SRV_UAV_Heap = nullptr; - commandList->RTV_Heap = nullptr; + commandList->RTV_Heap = nullptr; // Clean up resource tracking for (uint32 idx = 0; idx < commandList->UsedTextureCount; ++idx) diff --git a/Juliet/src/Graphics/D3D12/D3D12CommandList.h b/Juliet/src/Graphics/D3D12/D3D12CommandList.h index a4d665b..08b278c 100644 --- a/Juliet/src/Graphics/D3D12/D3D12CommandList.h +++ b/Juliet/src/Graphics/D3D12/D3D12CommandList.h @@ -2,8 +2,8 @@ #include #include -#include -#include +#include +#include #include #include diff --git a/Juliet/src/Graphics/D3D12/D3D12Common.cpp b/Juliet/src/Graphics/D3D12/D3D12Common.cpp index 2500ec6..b5ccea6 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Common.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12Common.cpp @@ -1,6 +1,4 @@ -#include - #include #include #include @@ -95,7 +93,7 @@ namespace Juliet::D3D12::Internal return true; } - void ReleaseStagingDescriptor(NonNullPtr driver, D3D12StagingDescriptor& cpuDescriptor) + void ReleaseStagingDescriptor(NonNullPtr /*driver*/, D3D12StagingDescriptor& cpuDescriptor) { D3D12StagingDescriptorPool* pool = cpuDescriptor.Pool; diff --git a/Juliet/src/Graphics/D3D12/D3D12DescriptorHeap.cpp b/Juliet/src/Graphics/D3D12/D3D12DescriptorHeap.cpp index a2cdadd..fcf1414 100644 --- a/Juliet/src/Graphics/D3D12/D3D12DescriptorHeap.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12DescriptorHeap.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp b/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp index 3f47ea6..2efc1af 100644 --- a/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.cpp @@ -1,8 +1,9 @@ -#include - #include #include +#include +#include #include +#include #include #include #include @@ -19,9 +20,6 @@ #define D3D12_DLL "d3d12.dll" #define D3D12_CREATEDEVICE_FUNC "D3D12CreateDevice" #define D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE_FUNC "D3D12SerializeVersionedRootSignature" -#define DXGIDEBUG_DLL "dxgidebug.dll" -#define DXGI_GET_DEBUG_INTERFACE_FUNC "DXGIGetDebugInterface" -#define D3D12_GET_DEBUG_INTERFACE_FUNC "D3D12GetDebugInterface" extern "C" { // Used to enable the "Agility SDK" components @@ -122,7 +120,7 @@ namespace Juliet::D3D12 } auto* D3D12CreateDeviceFuncPtr = - reinterpret_cast(LoadFunction(d3d12_dll, D3D12_CREATEDEVICE_FUNC)); + TOD3D12FuncPtr(PFN_D3D12_CREATE_DEVICE, LoadFunction(d3d12_dll, D3D12_CREATEDEVICE_FUNC)); if (D3D12CreateDeviceFuncPtr == nullptr) { Log(LogLevel::Warning, LogCategory::Graphics, "DX12: Couldn't find function " D3D12_CREATEDEVICE_FUNC " in " D3D12_DLL); @@ -304,6 +302,10 @@ namespace Juliet::D3D12 } #ifdef IDXGIINFOQUEUE_SUPPORTED + +#define DXGIDEBUG_DLL "dxgidebug.dll" +#define DXGI_GET_DEBUG_INTERFACE_FUNC "DXGIGetDebugInterface" + void InitializeDXGIDebug(NonNullPtr driver) { // See https://github.com/microsoft/DirectX-Graphics-Samples/blob/7aa24663f26e547a5bc437db028dfcfdb4b3c8f3/TechniqueDemos/D3D12MemoryManagement/src/Framework.cpp#L957 @@ -314,7 +316,8 @@ namespace Juliet::D3D12 if (driver->DXGIDebugDLL) { auto dxgiGetDebugInterface = - reinterpret_cast(LoadFunction(driver->DXGIDebugDLL, DXGI_GET_DEBUG_INTERFACE_FUNC)); + TOD3D12FuncPtr(LPDXGIGETDEBUGINTERFACE, LoadFunction(driver->DXGIDebugDLL, DXGI_GET_DEBUG_INTERFACE_FUNC)); + HRESULT result = dxgiGetDebugInterface(IID_IDXGIDebug, (void**)&driver->DXGIDebug); if (FAILED(result)) { @@ -356,11 +359,15 @@ namespace Juliet::D3D12 } #endif -#ifdef JULIET_DEBUG +#if JULIET_DEBUG + +#define D3D12_GET_DEBUG_INTERFACE_FUNC "D3D12GetDebugInterface" + void InitializeD3D12DebugLayer(NonNullPtr driver) { auto D3D12GetDebugInterfaceFunc = - reinterpret_cast(LoadFunction(driver->D3D12DLL, D3D12_GET_DEBUG_INTERFACE_FUNC)); + TOD3D12FuncPtr(PFN_D3D12_GET_DEBUG_INTERFACE, LoadFunction(driver->D3D12DLL, D3D12_GET_DEBUG_INTERFACE_FUNC)); + if (D3D12GetDebugInterfaceFunc == nullptr) { LogWarning(LogCategory::Graphics, "Could not load function: " D3D12_GET_DEBUG_INTERFACE_FUNC); @@ -402,7 +409,7 @@ namespace Juliet::D3D12 #ifdef ID3D12InfoQueue1_SUPPORTED void WINAPI OnD3D12DebugInfoMsg(D3D12_MESSAGE_CATEGORY category, D3D12_MESSAGE_SEVERITY severity, - D3D12_MESSAGE_ID id, LPCSTR description, void* context) + D3D12_MESSAGE_ID id, LPCSTR description, void* /*context*/) { String catStr; switch (category) @@ -579,7 +586,7 @@ namespace Juliet::D3D12 // TODO : Support more than one window if (d3d12Driver->WindowData) { - Assert(false && "D3D12 renderer already attached to the window. Right now we handle only one Window."); + Assert(false, "D3D12 renderer already attached to the window. Right now we handle only one Window."); return false; } @@ -605,7 +612,7 @@ namespace Juliet::D3D12 return true; } - void DetachFromWindow(NonNullPtr driver, NonNullPtr window) + void DetachFromWindow(NonNullPtr driver, NonNullPtr /*window*/) { auto* d3d12Driver = static_cast(driver.Get()); auto* windowData = d3d12Driver->WindowData; @@ -652,7 +659,7 @@ namespace Juliet::D3D12 if (FAILED(result)) { DestroyDriver_Internal(driver); - Assert(false && "DX12: Cannot create DXGIFactory1"); + Assert(false, "DX12: Cannot create DXGIFactory1"); return nullptr; } @@ -660,8 +667,8 @@ namespace Juliet::D3D12 if (FAILED(result)) { DestroyDriver_Internal(driver); - Assert(false && "DX12: Cannot create DXGIFactory4. Need DXGI1.4 support. Weird because it has been " - "checked in CheckDriver"); + Assert(false, "DX12: Cannot create DXGIFactory4. Need DXGI1.4 support. Weird because it has been " + "checked in CheckDriver"); return nullptr; } IDXGIFactory1_Release(factory1); @@ -706,7 +713,7 @@ namespace Juliet::D3D12 if (FAILED(result)) { DestroyDriver_Internal(driver); - Assert(false && "Could not find adapter for D3D12Device"); + Assert(false, "Could not find adapter for D3D12Device"); return nullptr; } @@ -716,7 +723,7 @@ namespace Juliet::D3D12 if (FAILED(result)) { DestroyDriver_Internal(driver); - Assert(false && "Could not get DXGIAdapter description"); + Assert(false, "Could not get DXGIAdapter description"); return nullptr; } @@ -726,7 +733,7 @@ namespace Juliet::D3D12 if (FAILED(result)) { DestroyDriver_Internal(driver); - Assert(false && "Could not get DXGIAdapter driver version"); + Assert(false, "Could not get DXGIAdapter driver version"); return nullptr; } @@ -743,7 +750,7 @@ namespace Juliet::D3D12 } auto* D3D12CreateDeviceFuncPtr = - reinterpret_cast(LoadFunction(driver->D3D12DLL, D3D12_CREATEDEVICE_FUNC)); + TOD3D12FuncPtr(PFN_D3D12_CREATE_DEVICE, LoadFunction(driver->D3D12DLL, D3D12_CREATEDEVICE_FUNC)); if (D3D12CreateDeviceFuncPtr == nullptr) { Log(LogLevel::Error, LogCategory::Graphics, "DX12: Couldn't Load function " D3D12_CREATEDEVICE_FUNC " in " D3D12_DLL); @@ -751,8 +758,9 @@ namespace Juliet::D3D12 return nullptr; } - driver->D3D12SerializeVersionedRootSignatureFct = reinterpret_cast( - LoadFunction(driver->D3D12DLL, D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE_FUNC)); + driver->D3D12SerializeVersionedRootSignatureFct = + TOD3D12FuncPtr(PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE, + LoadFunction(driver->D3D12DLL, D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE_FUNC)); if (driver->D3D12SerializeVersionedRootSignatureFct == nullptr) { Log(LogLevel::Error, LogCategory::Graphics, @@ -761,7 +769,7 @@ namespace Juliet::D3D12 return nullptr; } -#ifdef JULIET_DEBUG +#if JULIET_DEBUG if (enableDebug) { InitializeD3D12DebugLayer(driver); @@ -777,7 +785,7 @@ namespace Juliet::D3D12 return nullptr; } -#ifdef JULIET_DEBUG +#if JULIET_DEBUG if (enableDebug) { if (!InitializeD3D12DebugInfoQueue(driver)) @@ -920,7 +928,8 @@ namespace Juliet::D3D12 { heapPool.Capacity = 4; heapPool.Count = 4; - heapPool.Heaps = static_cast(Calloc(heapPool.Capacity, sizeof(Internal::D3D12DescriptorHeap*))); + heapPool.Heaps = static_cast( + Calloc(heapPool.Capacity, sizeof(Internal::D3D12DescriptorHeap*))); for (uint32 i = 0; i < heapPool.Capacity; ++i) { @@ -992,7 +1001,12 @@ namespace Juliet::D3D12 device->DestroyShader = DestroyShader; device->CreateGraphicsPipeline = CreateGraphicsPipeline; device->DestroyGraphicsPipeline = DestroyGraphicsPipeline; - device->UpdateGraphicsPipelineShaders = UpdateGraphicsPipelineShaders; + device->CreateGraphicsBuffer = CreateGraphicsBuffer; + device->CreateGraphicsTransferBuffer = CreateGraphicsTransferBuffer; + +#if ALLOW_SHADER_HOT_RELOAD + device->UpdateGraphicsPipelineShaders = UpdateGraphicsPipelineShaders; +#endif device->Driver = driver; device->DebugEnabled = enableDebug; @@ -1008,7 +1022,8 @@ namespace Juliet::D3D12 void DisposePendingResourcces(NonNullPtr driver) { // TODO Destroy anything (buffer, texture, etc...) - for (int32 idx = driver->GraphicsPipelinesToDisposeCount - 1; idx >= 0; --idx) + uint32 idx = 0; + while (idx < driver->GraphicsPipelinesToDisposeCount) { if (driver->GraphicsPipelinesToDispose[idx]->ReferenceCount == 0) { @@ -1018,6 +1033,10 @@ namespace Juliet::D3D12 driver->GraphicsPipelinesToDispose[driver->GraphicsPipelinesToDisposeCount - 1]; driver->GraphicsPipelinesToDisposeCount -= 1; } + else + { + idx++; + } } } } // namespace Internal diff --git a/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.h b/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.h index 124542d..f8067f9 100644 --- a/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.h +++ b/Juliet/src/Graphics/D3D12/D3D12GraphicsDevice.h @@ -54,7 +54,7 @@ namespace Juliet::D3D12 PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE D3D12SerializeVersionedRootSignatureFct; ID3D12CommandQueue* GraphicsQueue; D3D12_COMMAND_QUEUE_DESC QueueDesc[ToUnderlying(QueueType::Copy)]; -#ifdef JULIET_DEBUG +#if JULIET_DEBUG ID3D12Debug1* D3D12Debug; #endif diff --git a/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.cpp b/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.cpp index 4403380..4d688e1 100644 --- a/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.h b/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.h index 23993ba..7ef7c43 100644 --- a/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.h +++ b/Juliet/src/Graphics/D3D12/D3D12GraphicsPipeline.h @@ -1,8 +1,8 @@ #pragma once #include -#include #include +#include #include #include @@ -15,6 +15,8 @@ namespace Juliet namespace Juliet::D3D12 { + struct D3D12Shader; + struct D3D12GraphicsRootSignature { ID3D12RootSignature* Handle; @@ -29,8 +31,8 @@ namespace Juliet::D3D12 // Keeping shaders byte code to make it easier to recreate the ID3D12PipelineState // Those will be freed when the pipeline is destroyed or updated - D3D12Shader * VertexShaderCache; - D3D12Shader * FragmentShaderCache; + D3D12Shader* VertexShaderCache; + D3D12Shader* FragmentShaderCache; #endif ID3D12PipelineState* PipelineState; diff --git a/Juliet/src/Graphics/D3D12/D3D12Includes.h b/Juliet/src/Graphics/D3D12/D3D12Includes.h index c60639e..4c1fc85 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Includes.h +++ b/Juliet/src/Graphics/D3D12/D3D12Includes.h @@ -5,17 +5,26 @@ // #include // namespace wrl = Microsoft::WRL; +// Because Microsoft respects nothing +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wreserved-macro-identifier" + #pragma clang diagnostic ignored "-Wreserved-identifier" + #pragma clang diagnostic ignored "-Wnonportable-system-include-path" + #pragma clang diagnostic ignored "-Wmicrosoft-enum-value" + #pragma clang diagnostic ignored "-Wnested-anon-types" +#endif + // We will use the C interface of DX12. // Those define disable the C++ API. // It also prevents using d3dx12 because it only supports C++ :( #define COBJMACROS -#define CINTERFACE ; +#define CINTERFACE #include -//#include #include -#ifdef _DEBUG +#if JULIET_DEBUG #include #endif @@ -31,3 +40,7 @@ #undef min #undef max + +#ifdef __clang__ + #pragma clang diagnostic pop +#endif diff --git a/Juliet/src/Graphics/D3D12/D3D12RenderPass.cpp b/Juliet/src/Graphics/D3D12/D3D12RenderPass.cpp index 1b1f14b..b415176 100644 --- a/Juliet/src/Graphics/D3D12/D3D12RenderPass.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12RenderPass.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include diff --git a/Juliet/src/Graphics/D3D12/D3D12RenderPass.h b/Juliet/src/Graphics/D3D12/D3D12RenderPass.h index fcf448f..d3ae3b2 100644 --- a/Juliet/src/Graphics/D3D12/D3D12RenderPass.h +++ b/Juliet/src/Graphics/D3D12/D3D12RenderPass.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include diff --git a/Juliet/src/Graphics/D3D12/D3D12Shader.cpp b/Juliet/src/Graphics/D3D12/D3D12Shader.cpp index 62db753..eeedb5d 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Shader.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12Shader.cpp @@ -1,11 +1,11 @@ -#include - +#include +#include #include #include namespace Juliet::D3D12 { - Shader* CreateShader(NonNullPtr driver, ByteBuffer shaderByteCode, ShaderCreateInfo& shaderCreateInfo) + Shader* CreateShader(NonNullPtr /*driver*/, ByteBuffer shaderByteCode, ShaderCreateInfo& /*shaderCreateInfo*/) { if (!IsValid(shaderByteCode)) { @@ -38,7 +38,7 @@ namespace Juliet::D3D12 return reinterpret_cast(shader); } - void DestroyShader(NonNullPtr driver, NonNullPtr shader) + void DestroyShader(NonNullPtr /*driver*/, NonNullPtr shader) { auto d3d12shader = reinterpret_cast(shader.Get()); Free(d3d12shader); diff --git a/Juliet/src/Graphics/D3D12/D3D12SwapChain.cpp b/Juliet/src/Graphics/D3D12/D3D12SwapChain.cpp index d06db3f..dab8b58 100644 --- a/Juliet/src/Graphics/D3D12/D3D12SwapChain.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12SwapChain.cpp @@ -1,16 +1,16 @@ -#include - #include +#include +#include #include #include #include #include #include +#include #include #include #include -#include namespace Juliet::D3D12 { @@ -208,7 +208,7 @@ namespace Juliet::D3D12 return AcquireSwapChainTexture(true, commandList, window, swapChainTexture); } - bool WaitForSwapchain(NonNullPtr driver, NonNullPtr window) + bool WaitForSwapchain(NonNullPtr driver, NonNullPtr /*window*/) { auto* d3d12Driver = static_cast(driver.Get()); auto* windowData = d3d12Driver->WindowData; @@ -253,7 +253,7 @@ namespace Juliet::D3D12 HWND windowHandle = windowWin32State->Handle; if (!IsWindow(windowHandle)) { - Assert(false && "windowWin32State->Handle is not a window handle ???"); + Assert(false, "windowWin32State->Handle is not a window handle ???"); return false; } diff --git a/Juliet/src/Graphics/D3D12/D3D12Synchronization.cpp b/Juliet/src/Graphics/D3D12/D3D12Synchronization.cpp index 7380464..5c2a5d6 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Synchronization.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12Synchronization.cpp @@ -1,5 +1,5 @@ -#include - +#include +#include #include #include #include @@ -116,7 +116,7 @@ namespace Juliet::D3D12 return result; } - bool QueryFence(NonNullPtr driver, NonNullPtr fence) + bool QueryFence(NonNullPtr /*driver*/, NonNullPtr /*fence*/) { Unimplemented(); return true; diff --git a/Juliet/src/Graphics/D3D12/D3D12Texture.cpp b/Juliet/src/Graphics/D3D12/D3D12Texture.cpp index 1f228ff..e6bc28c 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Texture.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12Texture.cpp @@ -1,6 +1,6 @@ -#include - #include +#include +#include #include #include #include diff --git a/Juliet/src/Graphics/D3D12/D3D12Utils.cpp b/Juliet/src/Graphics/D3D12/D3D12Utils.cpp index 4d39440..8b4aae2 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Utils.cpp +++ b/Juliet/src/Graphics/D3D12/D3D12Utils.cpp @@ -1,11 +1,9 @@ -#include - #include -#include +#include +#include +#include #include -#include - namespace Juliet::D3D12 { // From SDLGPU @@ -15,17 +13,17 @@ namespace Juliet::D3D12 #define MAX_ERROR_LEN 1024 // FIXME: Arbitrary! // Buffer for text, ensure space for \0 terminator after buffer - char wszMsgBuff[MAX_ERROR_LEN + 1]; - DWORD dwChars; // Number of chars returned. + char wszMsgBuff[MAX_ERROR_LEN + 1]; + // Number of chars returned. if (result == DXGI_ERROR_DEVICE_REMOVED) { - result = ID3D12Device_GetDeviceRemovedReason(D3D12Device); + result = ID3D12Device_GetDeviceRemovedReason(D3D12Device); } // Try to get the message from the system errors. - dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, result, 0, - wszMsgBuff, MAX_ERROR_LEN, NULL); + DWORD dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, + static_cast(result), 0, wszMsgBuff, MAX_ERROR_LEN, nullptr); // No message? Screw it, just post the code. if (dwChars == 0) diff --git a/Juliet/src/Graphics/D3D12/D3D12Utils.h b/Juliet/src/Graphics/D3D12/D3D12Utils.h index 6a3898c..5f71d18 100644 --- a/Juliet/src/Graphics/D3D12/D3D12Utils.h +++ b/Juliet/src/Graphics/D3D12/D3D12Utils.h @@ -8,6 +8,8 @@ #define HRESULT_FMT "(0x%08X)" #endif +#define TOD3D12FuncPtr(type, ptr) reinterpret_cast(reinterpret_cast(ptr)) + namespace Juliet::D3D12 { struct D3D12Driver; @@ -21,7 +23,7 @@ namespace Juliet::D3D12 { switch (hr) { - case E_POINTER: Assert(false && "Invalid Pointer"); + case E_POINTER: Assert(false, "Invalid Pointer"); } } diff --git a/Juliet/src/Graphics/Graphics.cpp b/Juliet/src/Graphics/Graphics.cpp index bc69272..2447402 100644 --- a/Juliet/src/Graphics/Graphics.cpp +++ b/Juliet/src/Graphics/Graphics.cpp @@ -1,7 +1,7 @@ -#include - #include #include +#include +#include #include #include @@ -91,13 +91,13 @@ namespace Juliet if (header->Submitted) { error = true; - Assert(false && "Cannot submit command list twice"); + Assert(false , "Cannot submit command list twice"); } if (header->RenderPass.IsInProgress) { error = true; - Assert(false && "Cannot submit command list twice"); + Assert(false , "Cannot submit command list twice"); } if (error) @@ -125,13 +125,13 @@ namespace Juliet if (header->Submitted) { error = true; - Assert(false && "Cannot submit command list twice"); + Assert(false , "Cannot submit command list twice"); } if (header->RenderPass.IsInProgress) { error = true; - Assert(false && "Cannot submit command list twice"); + Assert(false , "Cannot submit command list twice"); } if (error) @@ -324,4 +324,26 @@ namespace Juliet return device->UpdateGraphicsPipelineShaders(device->Driver, graphicsPipeline, optional_vertexShader, optional_fragmentShader); } #endif + + GraphicsBuffer* CreateGraphicsBuffer(NonNullPtr device, const BufferCreateInfo& createInfo) + { + return device->CreateGraphicsBuffer(device->Driver, createInfo.Size, createInfo.Usage); + } + + GraphicsTransferBuffer* CreateGraphicsTransferBuffer(NonNullPtr device, const TransferBufferCreateInfo& createInfo) + { + return device->CreateGraphicsTransferBuffer(device->Driver, createInfo.Size, createInfo.Usage); + } + + void ReleaseGraphicsBuffer(NonNullPtr device, NonNullPtr buffer) + { + (void)device; + (void)buffer; + } + + void ReleaseGraphicsTransferBuffer(NonNullPtr device, NonNullPtr buffer) + { + (void)device; + (void)buffer; + } } // namespace Juliet diff --git a/Juliet/src/Graphics/GraphicsDevice.h b/Juliet/src/Graphics/GraphicsDevice.h index 91bbca3..32af354 100644 --- a/Juliet/src/Graphics/GraphicsDevice.h +++ b/Juliet/src/Graphics/GraphicsDevice.h @@ -86,6 +86,10 @@ namespace Juliet bool (*UpdateGraphicsPipelineShaders)(NonNullPtr driver, NonNullPtr graphicsPipeline, Shader* optional_vertexShader, Shader* optional_fragmentShader); + // Buffers + GraphicsBuffer* (*CreateGraphicsBuffer)(NonNullPtr driver, size_t size, BufferUsage usage); + GraphicsTransferBuffer* (*CreateGraphicsTransferBuffer)(NonNullPtr driver, size_t size, TransferBufferUsage usage); + const char* Name = "Unknown"; GPUDriver* Driver = nullptr; bool DebugEnabled : 1; diff --git a/Juliet/src/pch.cpp b/Juliet/src/pch.cpp deleted file mode 100644 index 4625b1b..0000000 --- a/Juliet/src/pch.cpp +++ /dev/null @@ -1,5 +0,0 @@ -// pch.cpp: source file corresponding to the pre-compiled header - -#include - -// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/JulietShaderCompiler/ShaderCompiler.cpp b/JulietShaderCompiler/ShaderCompiler.cpp index b7e11cf..57af9be 100644 --- a/JulietShaderCompiler/ShaderCompiler.cpp +++ b/JulietShaderCompiler/ShaderCompiler.cpp @@ -113,7 +113,7 @@ namespace } case ShaderStage::Invalid: { - Assert(false && "Invalid shader stage"); + Assert(false , "Invalid shader stage"); return {}; } } diff --git a/JulietShaderCompiler/main.cpp b/JulietShaderCompiler/main.cpp index ab53576..060410e 100644 --- a/JulietShaderCompiler/main.cpp +++ b/JulietShaderCompiler/main.cpp @@ -213,12 +213,12 @@ int main(int argc, char* argv[]) } break; } - case ShaderFormat::Invalid: Assert(false && "Shader format is invalid"); return 1; + case ShaderFormat::Invalid: Assert(false , "Shader format is invalid"); return 1; } break; } - case SourceLanguage::Invalid: Assert(false && "Source Language is invalid"); return 1; + case SourceLanguage::Invalid: Assert(false , "Source Language is invalid"); return 1; } return 0;