Swapchain creation and destruction
This commit is contained in:
@@ -45,6 +45,25 @@ namespace Juliet
|
||||
Count
|
||||
};
|
||||
|
||||
enum struct SwapChainComposition : uint8
|
||||
{
|
||||
SDR,
|
||||
SDR_LINEAR,
|
||||
HDR_EXTENDED_LINEAR,
|
||||
HDR10_ST2084
|
||||
};
|
||||
|
||||
// PresentMode from highest to lowest latency
|
||||
// Vsync prevents tearing. Enqueue ready images.
|
||||
// Mailbox prevents tearing. When image is ready, replace any pending image
|
||||
// Immediate replace current image as soon as possible. Can cause tearing
|
||||
enum struct PresentMode : uint8
|
||||
{
|
||||
VSync,
|
||||
Mailbox,
|
||||
Immediate
|
||||
};
|
||||
|
||||
// Opaque types
|
||||
struct CommandList;
|
||||
|
||||
|
||||
180
Juliet/include/Graphics/Texture.h
Normal file
180
Juliet/include/Graphics/Texture.h
Normal file
@@ -0,0 +1,180 @@
|
||||
#pragma once
|
||||
#include <D3D12Common.h>
|
||||
|
||||
namespace Juliet
|
||||
{
|
||||
enum struct TextureFormat : uint8
|
||||
{
|
||||
Invalid,
|
||||
|
||||
/* Unsigned Normalized Float Color Formats */
|
||||
A8_UNORM,
|
||||
R8_UNORM,
|
||||
R8G8_UNORM,
|
||||
R8G8B8A8_UNORM,
|
||||
R16_UNORM,
|
||||
R16G16_UNORM,
|
||||
R16G16B16A16_UNORM,
|
||||
R10G10B10A2_UNORM,
|
||||
B5G6R5_UNORM,
|
||||
B5G5R5A1_UNORM,
|
||||
B4G4R4A4_UNORM,
|
||||
B8G8R8A8_UNORM,
|
||||
/* Compressed Unsigned Normalized Float Color Formats */
|
||||
BC1_RGBA_UNORM,
|
||||
BC2_RGBA_UNORM,
|
||||
BC3_RGBA_UNORM,
|
||||
BC4_R_UNORM,
|
||||
BC5_RG_UNORM,
|
||||
BC7_RGBA_UNORM,
|
||||
/* Compressed Signed Float Color Formats */
|
||||
BC6H_RGB_FLOAT,
|
||||
/* Compressed Unsigned Float Color Formats */
|
||||
BC6H_RGB_UFLOAT,
|
||||
/* Signed Normalized Float Color Formats */
|
||||
R8_SNORM,
|
||||
R8G8_SNORM,
|
||||
R8G8B8A8_SNORM,
|
||||
R16_SNORM,
|
||||
R16G16_SNORM,
|
||||
R16G16B16A16_SNORM,
|
||||
/* Signed Float Color Formats */
|
||||
R16_FLOAT,
|
||||
R16G16_FLOAT,
|
||||
R16G16B16A16_FLOAT,
|
||||
R32_FLOAT,
|
||||
R32G32_FLOAT,
|
||||
R32G32B32A32_FLOAT,
|
||||
/* Unsigned Float Color Formats */
|
||||
R11G11B10_UFLOAT,
|
||||
/* Unsigned Integer Color Formats */
|
||||
R8_UINT,
|
||||
R8G8_UINT,
|
||||
R8G8B8A8_UINT,
|
||||
R16_UINT,
|
||||
R16G16_UINT,
|
||||
R16G16B16A16_UINT,
|
||||
R32_UINT,
|
||||
R32G32_UINT,
|
||||
R32G32B32A32_UINT,
|
||||
/* Signed Integer Color Formats */
|
||||
R8_INT,
|
||||
R8G8_INT,
|
||||
R8G8B8A8_INT,
|
||||
R16_INT,
|
||||
R16G16_INT,
|
||||
R16G16B16A16_INT,
|
||||
R32_INT,
|
||||
R32G32_INT,
|
||||
R32G32B32A32_INT,
|
||||
/* SRGB Unsigned Normalized Color Formats */
|
||||
R8G8B8A8_UNORM_SRGB,
|
||||
B8G8R8A8_UNORM_SRGB,
|
||||
/* Compressed SRGB Unsigned Normalized Color Formats */
|
||||
BC1_RGBA_UNORM_SRGB,
|
||||
BC2_RGBA_UNORM_SRGB,
|
||||
BC3_RGBA_UNORM_SRGB,
|
||||
BC7_RGBA_UNORM_SRGB,
|
||||
/* Depth Formats */
|
||||
D16_UNORM,
|
||||
D24_UNORM,
|
||||
D32_FLOAT,
|
||||
D24_UNORM_S8_UINT,
|
||||
D32_FLOAT_S8_UINT,
|
||||
/* Compressed ASTC Normalized Float Color Formats*/
|
||||
ASTC_4x4_UNORM,
|
||||
ASTC_5x4_UNORM,
|
||||
ASTC_5x5_UNORM,
|
||||
ASTC_6x5_UNORM,
|
||||
ASTC_6x6_UNORM,
|
||||
ASTC_8x5_UNORM,
|
||||
ASTC_8x6_UNORM,
|
||||
ASTC_8x8_UNORM,
|
||||
ASTC_10x5_UNORM,
|
||||
ASTC_10x6_UNORM,
|
||||
ASTC_10x8_UNORM,
|
||||
ASTC_10x10_UNORM,
|
||||
ASTC_12x10_UNORM,
|
||||
ASTC_12x12_UNORM,
|
||||
/* Compressed SRGB ASTC Normalized Float Color Formats*/
|
||||
ASTC_4x4_UNORM_SRGB,
|
||||
ASTC_5x4_UNORM_SRGB,
|
||||
ASTC_5x5_UNORM_SRGB,
|
||||
ASTC_6x5_UNORM_SRGB,
|
||||
ASTC_6x6_UNORM_SRGB,
|
||||
ASTC_8x5_UNORM_SRGB,
|
||||
ASTC_8x6_UNORM_SRGB,
|
||||
ASTC_8x8_UNORM_SRGB,
|
||||
ASTC_10x5_UNORM_SRGB,
|
||||
ASTC_10x6_UNORM_SRGB,
|
||||
ASTC_10x8_UNORM_SRGB,
|
||||
ASTC_10x10_UNORM_SRGB,
|
||||
ASTC_12x10_UNORM_SRGB,
|
||||
ASTC_12x12_UNORM_SRGB,
|
||||
/* Compressed ASTC Signed Float Color Formats*/
|
||||
ASTC_4x4_FLOAT,
|
||||
ASTC_5x4_FLOAT,
|
||||
ASTC_5x5_FLOAT,
|
||||
ASTC_6x5_FLOAT,
|
||||
ASTC_6x6_FLOAT,
|
||||
ASTC_8x5_FLOAT,
|
||||
ASTC_8x6_FLOAT,
|
||||
ASTC_8x8_FLOAT,
|
||||
ASTC_10x5_FLOAT,
|
||||
ASTC_10x6_FLOAT,
|
||||
ASTC_10x8_FLOAT,
|
||||
ASTC_10x10_FLOAT,
|
||||
ASTC_12x10_FLOAT,
|
||||
ASTC_12x12_FLOAT
|
||||
};
|
||||
|
||||
enum struct TextureUsageFlag : uint8
|
||||
{
|
||||
None = 0,
|
||||
Sampler = 1 << 0, // Textures supports sampling
|
||||
ColorTarget = 1 << 1, // Texture is color render target
|
||||
DepthStencilTarget = 1 << 2, // Texture is depth stencil target
|
||||
GraphicsStorageRead = 1 << 3, // Support Storage read at graphics stage
|
||||
ComputeStorageRead = 1 << 4, // Support Storage read at compute stage
|
||||
ComputeStorageWrite = 1 << 5, // Support Storage Write at compute stage
|
||||
ComputeStorageSimultaneousReadWrite =
|
||||
1 << 6, // Supports reads and writes in the same compute shader. Not equivalent to ComputeStorageRead | ComputeStorageWrite
|
||||
};
|
||||
|
||||
enum struct TextureType : uint8
|
||||
{
|
||||
Texture_2D,
|
||||
Texture_2DArray,
|
||||
Texture_3D,
|
||||
Texture_3DArray,
|
||||
Texture_Cube,
|
||||
Texture_CubeArray,
|
||||
};
|
||||
|
||||
enum struct TextureSampleCount : uint8
|
||||
{
|
||||
One,
|
||||
Two,
|
||||
Four,
|
||||
Eight,
|
||||
};
|
||||
|
||||
// Create Information structs
|
||||
struct TextureCreateInfo
|
||||
{
|
||||
TextureType Type;
|
||||
TextureFormat Format;
|
||||
TextureUsageFlag Flags;
|
||||
TextureSampleCount SampleCount;
|
||||
|
||||
uint32 Width;
|
||||
uint32 Height;
|
||||
union
|
||||
{
|
||||
uint32 LayerCount;
|
||||
uint32 Depth;
|
||||
}; // LayerCount is used in 2d array textures and Depth for 3d textures
|
||||
uint32 MipLevelCount;
|
||||
};
|
||||
|
||||
} // namespace Juliet
|
||||
Reference in New Issue
Block a user