summaryrefslogtreecommitdiffstats
path: root/tools/render-test/render-test-main.cpp
diff options
context:
space:
mode:
authorSimon Kallweit <64953474+skallweitNV@users.noreply.github.com>2024-08-30 18:50:19 +0200
committerGitHub <noreply@github.com>2024-08-30 09:50:19 -0700
commitf428a058ea48535a323c32d206ebc7e551c3c3e9 (patch)
tree2b004d07b630196f902b88679b4a08d8faaa97bc /tools/render-test/render-test-main.cpp
parent12137e9b00436eee3bf27f7a2fc5106513af8981 (diff)
Draft: integrate slang-rhi (#4970)
* add slang-rhi submodule * refactor render-test to use slang-rhi and remove OpenGL support * remove -vk -glsl tests * remove gl test * disable failing test * allow recursive submodules in github actions * update slang-rhi * update slang-rhi --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
-rw-r--r--tools/render-test/render-test-main.cpp73
1 files changed, 35 insertions, 38 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index 6f67dfd1e..5712485cc 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -3,8 +3,8 @@
#define _CRT_SECURE_NO_WARNINGS 1
#include "options.h"
-#include "slang-gfx.h"
-#include "tools/gfx-util/shader-cursor.h"
+#include <slang-rhi.h>
+#include <slang-rhi/shader-cursor.h>
#include "slang-support.h"
#include "png-serialize-util.h"
@@ -670,7 +670,7 @@ void RenderTestApp::_initializeRenderPass()
m_queue = m_device->createCommandQueue(queueDesc);
SLANG_ASSERT(m_queue);
- gfx::ITextureResource::Desc depthBufferDesc;
+ rhi::ITextureResource::Desc depthBufferDesc;
depthBufferDesc.type = IResource::Type::Texture2D;
depthBufferDesc.size.width = gWindowWidth;
depthBufferDesc.size.height = gWindowHeight;
@@ -680,11 +680,11 @@ void RenderTestApp::_initializeRenderPass()
depthBufferDesc.defaultState = ResourceState::DepthWrite;
depthBufferDesc.allowedStates = ResourceState::DepthWrite;
- ComPtr<gfx::ITextureResource> depthBufferResource =
+ ComPtr<rhi::ITextureResource> depthBufferResource =
m_device->createTextureResource(depthBufferDesc, nullptr);
SLANG_ASSERT(depthBufferResource);
- gfx::ITextureResource::Desc colorBufferDesc;
+ rhi::ITextureResource::Desc colorBufferDesc;
colorBufferDesc.type = IResource::Type::Texture2D;
colorBufferDesc.size.width = gWindowWidth;
colorBufferDesc.size.height = gWindowHeight;
@@ -696,33 +696,33 @@ void RenderTestApp::_initializeRenderPass()
m_colorBuffer = m_device->createTextureResource(colorBufferDesc, nullptr);
SLANG_ASSERT(m_colorBuffer);
- gfx::IResourceView::Desc colorBufferViewDesc = {};
+ rhi::IResourceView::Desc colorBufferViewDesc = {};
memset(&colorBufferViewDesc, 0, sizeof(colorBufferViewDesc));
- colorBufferViewDesc.format = gfx::Format::R8G8B8A8_UNORM;
- colorBufferViewDesc.renderTarget.shape = gfx::IResource::Type::Texture2D;
- colorBufferViewDesc.type = gfx::IResourceView::Type::RenderTarget;
- ComPtr<gfx::IResourceView> rtv =
+ colorBufferViewDesc.format = rhi::Format::R8G8B8A8_UNORM;
+ colorBufferViewDesc.renderTarget.shape = rhi::IResource::Type::Texture2D;
+ colorBufferViewDesc.type = rhi::IResourceView::Type::RenderTarget;
+ ComPtr<rhi::IResourceView> rtv =
m_device->createTextureView(m_colorBuffer.get(), colorBufferViewDesc);
SLANG_ASSERT(rtv);
- gfx::IResourceView::Desc depthBufferViewDesc = {};
+ rhi::IResourceView::Desc depthBufferViewDesc = {};
memset(&depthBufferViewDesc, 0, sizeof(depthBufferViewDesc));
- depthBufferViewDesc.format = gfx::Format::D32_FLOAT;
- depthBufferViewDesc.renderTarget.shape = gfx::IResource::Type::Texture2D;
- depthBufferViewDesc.type = gfx::IResourceView::Type::DepthStencil;
- ComPtr<gfx::IResourceView> dsv =
+ depthBufferViewDesc.format = rhi::Format::D32_FLOAT;
+ depthBufferViewDesc.renderTarget.shape = rhi::IResource::Type::Texture2D;
+ depthBufferViewDesc.type = rhi::IResourceView::Type::DepthStencil;
+ ComPtr<rhi::IResourceView> dsv =
m_device->createTextureView(depthBufferResource.get(), depthBufferViewDesc);
SLANG_ASSERT(dsv);
- IFramebufferLayout::TargetLayout colorTarget = {gfx::Format::R8G8B8A8_UNORM, 1};
- IFramebufferLayout::TargetLayout depthTarget = {gfx::Format::D32_FLOAT, 1};
- gfx::IFramebufferLayout::Desc framebufferLayoutDesc;
+ IFramebufferLayout::TargetLayout colorTarget = {rhi::Format::R8G8B8A8_UNORM, 1};
+ IFramebufferLayout::TargetLayout depthTarget = {rhi::Format::D32_FLOAT, 1};
+ rhi::IFramebufferLayout::Desc framebufferLayoutDesc;
framebufferLayoutDesc.renderTargetCount = 1;
framebufferLayoutDesc.renderTargets = &colorTarget;
framebufferLayoutDesc.depthStencil = &depthTarget;
m_device->createFramebufferLayout(framebufferLayoutDesc, m_framebufferLayout.writeRef());
- gfx::IFramebuffer::Desc framebufferDesc;
+ rhi::IFramebuffer::Desc framebufferDesc;
framebufferDesc.renderTargetCount = 1;
framebufferDesc.depthStencilView = dsv.get();
framebufferDesc.renderTargetViews = rtv.readRef();
@@ -1074,7 +1074,7 @@ Result RenderTestApp::update()
else
{
auto encoder = commandBuffer->encodeRenderCommands(m_renderPass, m_framebuffer);
- gfx::Viewport viewport = {};
+ rhi::Viewport viewport = {};
viewport.maxZ = 1.0f;
viewport.extentX = (float)gWindowWidth;
viewport.extentY = (float)gWindowHeight;
@@ -1222,17 +1222,17 @@ static void renderDocBeginFrame(){}
static void renderDocEndFrame(){}
#endif
-class StdWritersDebugCallback : public gfx::IDebugCallback
+class StdWritersDebugCallback : public rhi::IDebugCallback
{
public:
Slang::StdWriters* writers;
virtual SLANG_NO_THROW void SLANG_MCALL handleMessage(
- gfx::DebugMessageType type,
- gfx::DebugMessageSource source,
+ rhi::DebugMessageType type,
+ rhi::DebugMessageSource source,
const char* message) override
{
SLANG_UNUSED(source);
- if (type == gfx::DebugMessageType::Error)
+ if (type == rhi::DebugMessageType::Error)
{
writers->getOut().print("%s\n", message);
}
@@ -1252,6 +1252,10 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
// Parse command-line options
SLANG_RETURN_ON_FAIL(Options::parse(argcIn, argvIn, StdWriters::getError(), options));
+ if (options.deviceType == DeviceType::Unknown)
+ {
+ return SLANG_OK;
+ }
ShaderCompilerUtil::Input input;
@@ -1263,7 +1267,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
char const* profileName = "";
switch (options.deviceType)
{
- case DeviceType::DirectX11:
+ case DeviceType::D3D11:
input.target = SLANG_DXBC;
input.profile = "sm_5_0";
nativeLanguage = SLANG_SOURCE_LANGUAGE_HLSL;
@@ -1271,7 +1275,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
break;
- case DeviceType::DirectX12:
+ case DeviceType::D3D12:
input.target = SLANG_DXBC;
input.profile = "sm_5_0";
nativeLanguage = SLANG_SOURCE_LANGUAGE_HLSL;
@@ -1285,13 +1289,6 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
}
break;
- case DeviceType::OpenGl:
- input.target = SLANG_GLSL;
- input.profile = "";
- nativeLanguage = SLANG_SOURCE_LANGUAGE_GLSL;
- slangPassThrough = SLANG_PASS_THROUGH_GLSLANG;
- break;
-
case DeviceType::Vulkan:
input.target = SLANG_SPIRV;
input.profile = "";
@@ -1349,16 +1346,16 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
}
#ifdef _DEBUG
- gfxEnableDebugLayer();
+ rhiEnableDebugLayer();
#endif
StdWritersDebugCallback debugCallback;
debugCallback.writers = stdWriters;
- gfxSetDebugCallback(&debugCallback);
+ rhiSetDebugCallback(&debugCallback);
struct ResetDebugCallbackRAII
{
~ResetDebugCallbackRAII()
{
- gfxSetDebugCallback(nullptr);
+ rhiSetDebugCallback(nullptr);
}
} resetDebugCallbackRAII;
@@ -1367,7 +1364,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
StringBuilder rendererName;
auto info =
- rendererName << "[" << gfxGetDeviceTypeName(options.deviceType) << "] ";
+ rendererName << "[" << rhiGetDeviceTypeName(options.deviceType) << "] ";
if (options.onlyStartup)
{
@@ -1447,7 +1444,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
desc.slang.slangGlobalSession = session;
desc.slang.targetProfile = options.profileName.getBuffer();
{
- SlangResult res = gfxCreateDevice(&desc, device.writeRef());
+ SlangResult res = rhiCreateDevice(&desc, device.writeRef());
if (SLANG_FAILED(res))
{
// We need to be careful here about SLANG_E_NOT_AVAILABLE. This return value means that the renderer couldn't