summaryrefslogtreecommitdiffstats
path: root/tools/render-test/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/render-test/main.cpp')
-rw-r--r--tools/render-test/main.cpp49
1 files changed, 15 insertions, 34 deletions
diff --git a/tools/render-test/main.cpp b/tools/render-test/main.cpp
index 6907ba40f..d3247e55f 100644
--- a/tools/render-test/main.cpp
+++ b/tools/render-test/main.cpp
@@ -5,7 +5,7 @@
#include "render-d3d11.h"
#include "render-gl.h"
#include "slang-support.h"
-
+#include "shader-input-layout.h"
#include <stdio.h>
#include <stdlib.h>
@@ -54,8 +54,9 @@ uintptr_t gConstantBufferSize, gComputeResultBufferSize;
Buffer* gConstantBuffer;
InputLayout* gInputLayout;
Buffer* gVertexBuffer;
-Buffer* gComputeResultBuffer;
-ShaderProgram* gShaderProgram;
+ShaderProgram* gShaderProgram;
+BindingState* gBindingState;
+ShaderInputLayout gShaderInputLayout;
// Entry point name to use for vertex/fragment shader
static char const* vertexEntryPointName = "vertexMain";
@@ -92,6 +93,8 @@ Error initializeShaders(
fclose(sourceFile);
sourceText[sourceSize] = 0;
+ gShaderInputLayout.Parse(sourceText);
+
ShaderCompileRequest::SourceInfo sourceInfo;
sourceInfo.path = sourcePath;
sourceInfo.text = sourceText;
@@ -121,16 +124,6 @@ Error initializeShaders(
return Error::None;
}
-
-void outputComputeResult(Renderer* renderer, const char * fileName)
-{
- float* data = (float*)renderer->map(gComputeResultBuffer, MapFlavor::HostRead);
- FILE* f = fopen(fileName, "wt");
- for (auto i = 0u; i < gComputeResultBufferSize / sizeof(UInt); i++)
- fprintf(f, "%.9g\n", data[i]);
- fclose(f);
-}
-
//
// At initialization time, we are going to load and compile our Slang shader
// code, and then create the D3D11 API objects we need for rendering.
@@ -144,6 +137,7 @@ Error initializeInner(
err = initializeShaders(shaderCompiler);
if(err != Error::None) return err;
+ gBindingState = renderer->createBindingState(gShaderInputLayout);
// Do other initialization that doesn't depend on the source language.
@@ -157,20 +151,7 @@ Error initializeInner(
gConstantBuffer = renderer->createBuffer(constantBufferDesc);
if(!gConstantBuffer)
return Error::Unexpected;
-
- gComputeResultBufferSize = 512 * sizeof(float);
- BufferDesc computeResultBufferDesc;
- computeResultBufferDesc.size = gComputeResultBufferSize;
- computeResultBufferDesc.flavor = BufferFlavor::Storage;
- gComputeResultBuffer = renderer->createBuffer(computeResultBufferDesc);
- if (!gComputeResultBufferSize)
- return Error::Unexpected;
- // initialize buffer to 0
- char * ptr = (char*)renderer->map(gComputeResultBuffer, MapFlavor::HostWrite);
- for (auto i = 0u; i < gComputeResultBufferSize; i++)
- ptr[i] = 0;
- renderer->unmap(gComputeResultBuffer);
-
+
// Input Assembler (IA)
InputElementDesc inputElements[] = {
@@ -222,7 +203,7 @@ void renderFrameInner(
renderer->setShaderProgram(gShaderProgram);
renderer->setConstantBuffer(0, gConstantBuffer);
-
+ renderer->setBindingState(gBindingState);
//
renderer->draw(3);
@@ -231,7 +212,7 @@ void renderFrameInner(
void runCompute(Renderer * renderer)
{
renderer->setShaderProgram(gShaderProgram);
- renderer->setStorageBuffer(0, gComputeResultBuffer);
+ renderer->setBindingState(gBindingState);
renderer->dispatchCompute(1, 1, 1);
}
@@ -403,7 +384,7 @@ int main(
{
if (message.message == WM_QUIT)
{
- return (int)message.wParam;
+ return (int)message.wParam;
}
TranslateMessage(&message);
@@ -428,10 +409,10 @@ int main(
// If we are in a mode where output is requested, we need to snapshot the back buffer here
if (gOptions.outputPath)
{
- if (gOptions.shaderType == ShaderProgramType::Compute)
- outputComputeResult(renderer, gOptions.outputPath);
- else
- renderer->captureScreenShot(gOptions.outputPath);
+ if (gOptions.shaderType == ShaderProgramType::Compute)
+ renderer->serializeOutput(gBindingState, gOptions.outputPath);
+ else
+ renderer->captureScreenShot(gOptions.outputPath);
return 0;
}