Files
WickedEngine/WickedEngine/wiGraphicsDevice.cpp
Turánszki János f1ced24f05 Multi swapchain support (#257)
* multi swapchain draft

* uwp fix

* swapchain resize handling

* swapchain buffercount

* vsync toggle

* tests fix

* update

* everything removed from graphicsdevice regarding global screen params, engine refactor

* added GetSwapChainTexture() function to graphics device; screenshot() now requires swapChain

* linux fix: vulkan device needs window handle for instance creation

* refactor

* removed unused includes

* shader refactor and lensflare fix

* swapchain clearcolor and other refactors

* vulkan: no vector allocation in submit

* tests fix

* refactors

* lens flare canvas size fix

* gui refactor for canvas support

* refactors

* removed global canvas state

* msaa fix

* fixes

* refactor to minimize interface changes

* gui changes

* checkbox fix

* gui fixes

* fixes

* input system will accept window handle

* editor fixes

* refactor and removed resolution related system events

* small editor update

* refactor: renderpath inherits from canvas

* fixed tests duh

* image refactor

* image fix

* removed every using namespace std

* pushconstant fix

* editor: object picking only when necessary

* removed include

* dx12: copy fence waiting performed on CPU

* dx12 copyallocator update

* vulkan: copy allocator with timeline semaphores

* missing include

* dx12 copy allocator update

* refactor

* editor update

* vulkan copy allocator fix

* dx12 update

* vulkan, dx12 fixes

* version bump

* vsync event helper

* documentation update

* updated vulkan, dx12, dxc
2021-04-22 11:36:22 +02:00

160 lines
3.3 KiB
C++

#include "wiGraphicsDevice.h"
#include "wiEvent.h"
using namespace wiGraphics;
uint32_t GraphicsDevice::GetFormatStride(FORMAT value) const
{
switch (value)
{
case FORMAT_R32G32B32A32_FLOAT:
case FORMAT_R32G32B32A32_UINT:
case FORMAT_R32G32B32A32_SINT:
case FORMAT_BC1_UNORM:
case FORMAT_BC1_UNORM_SRGB:
case FORMAT_BC2_UNORM:
case FORMAT_BC2_UNORM_SRGB:
case FORMAT_BC3_UNORM:
case FORMAT_BC3_UNORM_SRGB:
case FORMAT_BC4_SNORM:
case FORMAT_BC4_UNORM:
case FORMAT_BC5_SNORM:
case FORMAT_BC5_UNORM:
case FORMAT_BC6H_UF16:
case FORMAT_BC6H_SF16:
case FORMAT_BC7_UNORM:
case FORMAT_BC7_UNORM_SRGB:
return 16;
case FORMAT_R32G32B32_FLOAT:
case FORMAT_R32G32B32_UINT:
case FORMAT_R32G32B32_SINT:
return 12;
case FORMAT_R16G16B16A16_FLOAT:
case FORMAT_R16G16B16A16_UNORM:
case FORMAT_R16G16B16A16_UINT:
case FORMAT_R16G16B16A16_SNORM:
case FORMAT_R16G16B16A16_SINT:
return 8;
case FORMAT_R32G32_FLOAT:
case FORMAT_R32G32_UINT:
case FORMAT_R32G32_SINT:
case FORMAT_R32G8X24_TYPELESS:
case FORMAT_D32_FLOAT_S8X24_UINT:
return 8;
case FORMAT_R10G10B10A2_UNORM:
case FORMAT_R10G10B10A2_UINT:
case FORMAT_R11G11B10_FLOAT:
case FORMAT_R8G8B8A8_UNORM:
case FORMAT_R8G8B8A8_UNORM_SRGB:
case FORMAT_R8G8B8A8_UINT:
case FORMAT_R8G8B8A8_SNORM:
case FORMAT_R8G8B8A8_SINT:
case FORMAT_B8G8R8A8_UNORM:
case FORMAT_B8G8R8A8_UNORM_SRGB:
case FORMAT_R16G16_FLOAT:
case FORMAT_R16G16_UNORM:
case FORMAT_R16G16_UINT:
case FORMAT_R16G16_SNORM:
case FORMAT_R16G16_SINT:
case FORMAT_R32_TYPELESS:
case FORMAT_D32_FLOAT:
case FORMAT_R32_FLOAT:
case FORMAT_R32_UINT:
case FORMAT_R32_SINT:
case FORMAT_R24G8_TYPELESS:
case FORMAT_D24_UNORM_S8_UINT:
return 4;
case FORMAT_R8G8_UNORM:
case FORMAT_R8G8_UINT:
case FORMAT_R8G8_SNORM:
case FORMAT_R8G8_SINT:
case FORMAT_R16_TYPELESS:
case FORMAT_R16_FLOAT:
case FORMAT_D16_UNORM:
case FORMAT_R16_UNORM:
case FORMAT_R16_UINT:
case FORMAT_R16_SNORM:
case FORMAT_R16_SINT:
return 2;
case FORMAT_R8_UNORM:
case FORMAT_R8_UINT:
case FORMAT_R8_SNORM:
case FORMAT_R8_SINT:
return 1;
default:
assert(0); // didn't catch format!
break;
}
return 16;
}
bool GraphicsDevice::IsFormatUnorm(FORMAT value) const
{
switch (value)
{
case FORMAT_R16G16B16A16_UNORM:
case FORMAT_R10G10B10A2_UNORM:
case FORMAT_R8G8B8A8_UNORM:
case FORMAT_R8G8B8A8_UNORM_SRGB:
case FORMAT_B8G8R8A8_UNORM:
case FORMAT_B8G8R8A8_UNORM_SRGB:
case FORMAT_R16G16_UNORM:
case FORMAT_D24_UNORM_S8_UINT:
case FORMAT_R8G8_UNORM:
case FORMAT_D16_UNORM:
case FORMAT_R16_UNORM:
case FORMAT_R8_UNORM:
return true;
}
return false;
}
bool GraphicsDevice::IsFormatBlockCompressed(FORMAT value) const
{
switch (value)
{
case FORMAT_BC1_UNORM:
case FORMAT_BC1_UNORM_SRGB:
case FORMAT_BC2_UNORM:
case FORMAT_BC2_UNORM_SRGB:
case FORMAT_BC3_UNORM:
case FORMAT_BC3_UNORM_SRGB:
case FORMAT_BC4_UNORM:
case FORMAT_BC4_SNORM:
case FORMAT_BC5_UNORM:
case FORMAT_BC5_SNORM:
case FORMAT_BC6H_UF16:
case FORMAT_BC6H_SF16:
case FORMAT_BC7_UNORM:
case FORMAT_BC7_UNORM_SRGB:
return true;
}
return false;
}
bool GraphicsDevice::IsFormatStencilSupport(FORMAT value) const
{
switch (value)
{
case FORMAT_R32G8X24_TYPELESS:
case FORMAT_D32_FLOAT_S8X24_UINT:
case FORMAT_R24G8_TYPELESS:
case FORMAT_D24_UNORM_S8_UINT:
return true;
}
return false;
}