summaryrefslogtreecommitdiffstats
path: root/examples/platform-test/main.cpp
diff options
context:
space:
mode:
authorGangzheng Tong <tonggangzheng@gmail.com>2025-07-08 23:44:56 -0700
committerGitHub <noreply@github.com>2025-07-09 06:44:56 +0000
commit43d0c2100ef1a5df4b54525e50eb29fe7c39ec16 (patch)
tree25ec4fb9c726115f90bdaa9878f2f4ca372ad0a6 /examples/platform-test/main.cpp
parent00746bf09047cdf01c19dac513a532bcf3ed3ea3 (diff)
Convert gfx unit tests and examples to use slang-rhi (#7577)
* Port first gfx unit test to slang-rhi * port triangle example to use slang-rhi * port platform-test to slang-rhi * Update platform-test to throttle mouse move events * port gpu-printing example to use slang-rhi * port model-viewer example to use slang-rhi * port ray-tracing example to use slang-rhi * port ray-tracing pipeline example to use slang-rhi * port reflection parameter blocks example to use slang-rhi * port shader-object example to use slang-rhi * port shader-toy example to use slang-rhi * Port most of tests to slang-rhi * port link-time-constant-array-size to use slang-rhi * Fix tests and find matching tests in slang-rhi * port autodiff-texture * remove gfx target; port nv-aftermath-example * update include path for shader-cursor.h * Disabled 2 more ported tests * fix build error * remove gfx test * put slang-rhi (static-lib) before slang (shared) * format code (#7621) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> * add debug callback * format code (#7649) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> * Address review comments; revert back to use SLANG_CHECK_MSG --------- Co-authored-by: slangbot <ellieh+slangbot@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'examples/platform-test/main.cpp')
-rw-r--r--examples/platform-test/main.cpp115
1 files changed, 81 insertions, 34 deletions
diff --git a/examples/platform-test/main.cpp b/examples/platform-test/main.cpp
index 865e4eab7..7949d90c1 100644
--- a/examples/platform-test/main.cpp
+++ b/examples/platform-test/main.cpp
@@ -1,62 +1,91 @@
+#include "core/slang-basic.h"
#include "examples/example-base/example-base.h"
#include "platform/window.h"
+#include "slang-com-ptr.h"
+#include "slang-rhi.h"
#include "slang.h"
-using namespace gfx;
+#include <cstdio>
+
+using namespace rhi;
using namespace Slang;
struct PlatformTest : public WindowedAppBase
{
- void onSizeChanged() { printf("onSizeChanged\n"); }
+ void onSizeChanged()
+ {
+ printf("onSizeChanged\n");
+ fflush(stdout);
+ }
- void onFocus() { printf("onFocus\n"); }
+ void onFocus()
+ {
+ printf("onFocus\n");
+ fflush(stdout);
+ }
- void onLostFocus() { printf("onLostFocus\n"); }
+ void onLostFocus()
+ {
+ printf("onLostFocus\n");
+ fflush(stdout);
+ }
void onKeyDown(platform::KeyEventArgs args)
{
printf("onKeyDown(key=0x%02x, buttons=0x%02x)\n", (uint32_t)args.key, args.buttons);
+ fflush(stdout);
}
void onKeyUp(platform::KeyEventArgs args)
{
- printf("okKeyUp(key=0x%02x, buttons=0x%02x)\n", (uint32_t)args.key, args.buttons);
+ printf("onKeyUp(key=0x%02x, buttons=0x%02x)\n", (uint32_t)args.key, args.buttons);
+ fflush(stdout);
}
void onKeyPress(platform::KeyEventArgs args)
{
printf("onKeyPress(keyChar=0x%02x)\n", args.keyChar);
+ fflush(stdout);
}
void onMouseMove(platform::MouseEventArgs args)
{
- printf(
- "onMouseMove(x=%d, y=%d, delta=%d, buttons=0x%02x\n",
- args.x,
- args.y,
- args.delta,
- args.buttons);
+ // Throttle mouse move events using a simple counter
+ static int mouseMoveCounter = 0;
+ mouseMoveCounter++;
+ if (mouseMoveCounter % 50 == 0) // Only print every 50th mouse move event
+ {
+ printf(
+ "onMouseMove(x=%d, y=%d, delta=%d, buttons=0x%02x)\n",
+ args.x,
+ args.y,
+ args.delta,
+ args.buttons);
+ fflush(stdout);
+ }
}
void onMouseDown(platform::MouseEventArgs args)
{
printf(
- "onMouseDown(x=%d, y=%d, delta=%d, buttons=0x%02x\n",
+ "onMouseDown(x=%d, y=%d, delta=%d, buttons=0x%02x)\n",
args.x,
args.y,
args.delta,
args.buttons);
+ fflush(stdout);
}
void onMouseUp(platform::MouseEventArgs args)
{
printf(
- "onMouseUp(x=%d, y=%d, delta=%d, buttons=0x%02x\n",
+ "onMouseUp(x=%d, y=%d, delta=%d, buttons=0x%02x)\n",
args.x,
args.y,
args.delta,
args.buttons);
+ fflush(stdout);
}
void onMouseWheel(platform::MouseEventArgs args)
@@ -67,6 +96,7 @@ struct PlatformTest : public WindowedAppBase
args.y,
args.delta,
args.buttons);
+ fflush(stdout);
}
Slang::Result initialize()
@@ -77,6 +107,9 @@ struct PlatformTest : public WindowedAppBase
SLANG_ASSERT(isTestMode() || gWindow);
if (gWindow)
{
+ printf("Setting up event handlers...\n");
+ fflush(stdout);
+
gWindow->events.sizeChanged = [this]() { onSizeChanged(); };
gWindow->events.focus = [this]() { onFocus(); };
gWindow->events.lostFocus = [this]() { onLostFocus(); };
@@ -90,33 +123,47 @@ struct PlatformTest : public WindowedAppBase
gWindow->events.mouseUp = [this](const platform::MouseEventArgs& e) { onMouseUp(e); };
gWindow->events.mouseWheel = [this](const platform::MouseEventArgs& e)
{ onMouseWheel(e); };
+ printf("Event handlers set up successfully.\n");
+ }
+ else
+ {
+ printf("No window available for event setup.\n");
+ fflush(stdout);
}
return SLANG_OK;
}
- virtual void renderFrame(int frameBufferIndex) override
+ virtual void renderFrame(ITexture* texture) override
{
- ComPtr<ICommandBuffer> commandBuffer =
- gTransientHeaps[frameBufferIndex]->createCommandBuffer();
-
- auto renderEncoder =
- commandBuffer->encodeRenderCommands(gRenderPass, gFramebuffers[frameBufferIndex]);
-
- gfx::Viewport viewport = {};
- viewport.maxZ = 1.0f;
- viewport.extentX = (float)windowWidth;
- viewport.extentY = (float)windowHeight;
- renderEncoder->setViewportAndScissor(viewport);
-
- renderEncoder->endEncoding();
- commandBuffer->close();
- gQueue->executeCommandBuffer(commandBuffer);
-
- // We may not have a swapchain if we're running in test mode
- SLANG_ASSERT(isTestMode() || gSwapchain);
- if (gSwapchain)
- gSwapchain->present();
+ auto commandEncoder = gQueue->createCommandEncoder();
+
+ ComPtr<ITextureView> textureView = gDevice->createTextureView(texture, {});
+ RenderPassColorAttachment colorAttachment = {};
+ colorAttachment.view = textureView;
+ colorAttachment.loadOp = LoadOp::Clear;
+
+ RenderPassDesc renderPass = {};
+ renderPass.colorAttachments = &colorAttachment;
+ renderPass.colorAttachmentCount = 1;
+
+ auto renderEncoder = commandEncoder->beginRenderPass(renderPass);
+
+ RenderState renderState = {};
+ renderState.viewports[0] = Viewport::fromSize(windowWidth, windowHeight);
+ renderState.viewportCount = 1;
+ renderState.scissorRects[0] = ScissorRect::fromSize(windowWidth, windowHeight);
+ renderState.scissorRectCount = 1;
+
+ renderEncoder->setRenderState(renderState);
+
+ renderEncoder->end();
+ gQueue->submit(commandEncoder->finish());
+
+ if (!isTestMode())
+ {
+ gSurface->present();
+ }
}
};