summaryrefslogtreecommitdiffstats
path: root/tools/gfx/render.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-03-10 10:58:15 -0800
committerGitHub <noreply@github.com>2021-03-10 10:58:15 -0800
commit6ef4054f8a8aea4ec61481057fa7e16aaecde6d7 (patch)
tree66edcae112faff7276c2595865463698bde277fd /tools/gfx/render.cpp
parent2765861cdc104e6104a31cf9e20800b8d1dfae26 (diff)
Swapchain resize and rename to `IDevice` (#1741)
* Swapchain resize * Fix.
Diffstat (limited to 'tools/gfx/render.cpp')
-rw-r--r--tools/gfx/render.cpp118
1 files changed, 50 insertions, 68 deletions
diff --git a/tools/gfx/render.cpp b/tools/gfx/render.cpp
index 3a886aaa4..5ef2a454e 100644
--- a/tools/gfx/render.cpp
+++ b/tools/gfx/render.cpp
@@ -34,21 +34,9 @@ static const uint8_t s_formatSize[] = {
uint8_t(sizeof(uint32_t)), // D_Unorm24_S8,
};
-static const BindingStyle s_rendererTypeToBindingStyle[] = {
- BindingStyle::Unknown, // Unknown,
- BindingStyle::DirectX, // DirectX11,
- BindingStyle::DirectX, // DirectX12,
- BindingStyle::OpenGl, // OpenGl,
- BindingStyle::Vulkan, // Vulkan
- BindingStyle::CPU, // CPU
- BindingStyle::CUDA, // CUDA
-};
-
static void _compileTimeAsserts()
{
SLANG_COMPILE_TIME_ASSERT(SLANG_COUNT_OF(s_formatSize) == int(Format::CountOf));
- SLANG_COMPILE_TIME_ASSERT(
- SLANG_COUNT_OF(s_rendererTypeToBindingStyle) == int(RendererType::CountOf));
}
extern "C"
@@ -58,59 +46,50 @@ extern "C"
return s_formatSize[int(format)];
}
- BindingStyle SLANG_MCALL gfxGetBindingStyle(RendererType type)
- {
- return s_rendererTypeToBindingStyle[int(type)];
- }
-
- const char* SLANG_MCALL gfxGetRendererName(RendererType type)
+ SLANG_GFX_API SlangResult SLANG_MCALL
+ gfxCreateDevice(const IDevice::Desc* desc, IDevice** outDevice)
{
- switch (type)
- {
- case RendererType::DirectX11:
- return "DirectX11";
- case RendererType::DirectX12:
- return "DirectX12";
- case RendererType::OpenGl:
- return "OpenGL";
- case RendererType::Vulkan:
- return "Vulkan";
- case RendererType::Unknown:
- return "Unknown";
- case RendererType::CPU:
- return "CPU";
- case RendererType::CUDA:
- return "CUDA";
- default:
- return "?!?";
- }
- }
-
- SLANG_GFX_API SlangResult SLANG_MCALL gfxCreateRenderer(const IRenderer::Desc* desc, IRenderer** outRenderer)
- {
- switch (desc->rendererType)
+ switch (desc->deviceType)
{
#if SLANG_WINDOWS_FAMILY
- case RendererType::DirectX11:
+ case DeviceType::DirectX11:
+ {
+ return createD3D11Device(desc, outDevice);
+ }
+ case DeviceType::DirectX12:
{
- return createD3D11Renderer(desc, outRenderer);
+ return createD3D12Device(desc, outDevice);
}
- case RendererType::DirectX12:
+ case DeviceType::OpenGl:
{
- return createD3D12Renderer(desc, outRenderer);
+ return createGLDevice(desc, outDevice);
}
- case RendererType::OpenGl:
+ case DeviceType::Vulkan:
{
- return createGLRenderer(desc, outRenderer);
+ return createVKDevice(desc, outDevice);
}
- case RendererType::Vulkan:
+ case DeviceType::CUDA:
{
- return createVKRenderer(desc, outRenderer);
+ return createCUDADevice(desc, outDevice);
}
- case RendererType::CUDA:
+ case DeviceType::Default:
{
- return createCUDARenderer(desc, outRenderer);
+ IDevice::Desc newDesc = *desc;
+ newDesc.deviceType = DeviceType::DirectX12;
+ if (gfxCreateDevice(&newDesc, outDevice) == SLANG_OK)
+ return SLANG_OK;
+ newDesc.deviceType = DeviceType::Vulkan;
+ if (gfxCreateDevice(&newDesc, outDevice) == SLANG_OK)
+ return SLANG_OK;
+ newDesc.deviceType = DeviceType::DirectX11;
+ if (gfxCreateDevice(&newDesc, outDevice) == SLANG_OK)
+ return SLANG_OK;
+ newDesc.deviceType = DeviceType::OpenGl;
+ if (gfxCreateDevice(&newDesc, outDevice) == SLANG_OK)
+ return SLANG_OK;
+ return SLANG_FAIL;
}
+ break;
#endif
default:
@@ -118,29 +97,32 @@ extern "C"
}
}
- ProjectionStyle SLANG_MCALL gfxGetProjectionStyle(RendererType type)
+ const char* SLANG_MCALL gfxGetDeviceTypeName(DeviceType type)
{
switch (type)
{
- case RendererType::DirectX11:
- case RendererType::DirectX12:
- {
- return ProjectionStyle::DirectX;
- }
- case RendererType::OpenGl:
- return ProjectionStyle::OpenGl;
- case RendererType::Vulkan:
- return ProjectionStyle::Vulkan;
- case RendererType::Unknown:
- return ProjectionStyle::Unknown;
+ case gfx::DeviceType::Unknown:
+ return "Unknown";
+ case gfx::DeviceType::Default:
+ return "Default";
+ case gfx::DeviceType::DirectX11:
+ return "DirectX11";
+ case gfx::DeviceType::DirectX12:
+ return "DirectX12";
+ case gfx::DeviceType::OpenGl:
+ return "OpenGL";
+ case gfx::DeviceType::Vulkan:
+ return "Vulkan";
+ case gfx::DeviceType::CPU:
+ return "CPU";
+ case gfx::DeviceType::CUDA:
+ return "CUDA";
default:
- {
- assert(!"Unhandled type");
- return ProjectionStyle::Unknown;
- }
+ return "?";
}
}
+
void SLANG_MCALL gfxGetIdentityProjection(ProjectionStyle style, float projMatrix[16])
{
switch (style)