summaryrefslogtreecommitdiffstats
path: root/tools/render-test/render-test-main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
-rw-r--r--tools/render-test/render-test-main.cpp105
1 files changed, 55 insertions, 50 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index 533932eab..4c05422ee 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -74,7 +74,7 @@ struct ShaderOutputPlan
struct Item
{
Index inputLayoutEntryIndex;
- RefPtr<Resource> resource;
+ ComPtr<IResource> resource;
};
List<Item> items;
@@ -118,10 +118,10 @@ protected:
ComPtr<IRenderer> m_renderer;
- RefPtr<InputLayout> m_inputLayout;
- RefPtr<BufferResource> m_vertexBuffer;
- RefPtr<ShaderProgram> m_shaderProgram;
- RefPtr<PipelineState> m_pipelineState;
+ ComPtr<IInputLayout> m_inputLayout;
+ ComPtr<IBufferResource> m_vertexBuffer;
+ ComPtr<IShaderProgram> m_shaderProgram;
+ ComPtr<IPipelineState> m_pipelineState;
ShaderCompilerUtil::OutputAndLayout m_compilationOutput;
@@ -147,7 +147,7 @@ public:
protected:
uintptr_t m_constantBufferSize;
- RefPtr<BufferResource> m_constantBuffer;
+ ComPtr<IBufferResource> m_constantBuffer;
RefPtr<BindingStateImpl> m_bindingState;
int m_numAddedConstantBuffers; ///< Constant buffers can be added to the binding directly. Will be added at the end.
};
@@ -165,20 +165,20 @@ public:
virtual Result writeBindingOutput(BindRoot* bindRoot, const char* fileName) override;
protected:
- RefPtr<ShaderObject> m_programVars;
+ ComPtr<IShaderObject> m_programVars;
ShaderOutputPlan m_outputPlan;
};
SlangResult _assignVarsFromLayout(
IRenderer* renderer,
- ShaderObject* shaderObject,
+ IShaderObject* shaderObject,
ShaderInputLayout const& layout,
ShaderOutputPlan& ioOutputPlan,
slang::ProgramLayout* slangReflection)
{
ShaderCursor rootCursor = ShaderCursor(shaderObject);
- const int textureBindFlags = Resource::BindFlag::NonPixelShaderResource | Resource::BindFlag::PixelShaderResource;
+ const int textureBindFlags = IResource::BindFlag::NonPixelShaderResource | IResource::BindFlag::PixelShaderResource;
Index entryCount = layout.entries.getCount();
for(Index entryIndex = 0; entryIndex < entryCount; ++entryIndex)
@@ -194,7 +194,7 @@ SlangResult _assignVarsFromLayout(
if(!entryCursor.isValid())
{
- for(Index i = 0; i < shaderObject->getEntryPointCount(); i++)
+ for(gfx::UInt i = 0; i < shaderObject->getEntryPointCount(); i++)
{
entryCursor = ShaderCursor(shaderObject->getEntryPoint(i)).getPath(entry.name);
if(entryCursor.isValid())
@@ -209,7 +209,7 @@ SlangResult _assignVarsFromLayout(
return SLANG_E_INVALID_ARG;
}
- RefPtr<Resource> resource;
+ ComPtr<IResource> resource;
switch(entry.type)
{
case ShaderInputType::Uniform:
@@ -267,12 +267,12 @@ SlangResult _assignVarsFromLayout(
default:
{
- RefPtr<BufferResource> bufferResource;
+ ComPtr<IBufferResource> bufferResource;
SLANG_RETURN_ON_FAIL(ShaderRendererUtil::createBufferResource(entry.bufferDesc, entry.isOutput, bufferSize, entry.bufferData.getBuffer(), renderer, bufferResource));
resource = bufferResource;
- ResourceView::Desc viewDesc;
- viewDesc.type = ResourceView::Type::UnorderedAccess;
+ IResourceView::Desc viewDesc;
+ viewDesc.type = IResourceView::Type::UnorderedAccess;
viewDesc.format = srcBuffer.format;
auto bufferView = renderer->createBufferView(
bufferResource,
@@ -315,14 +315,14 @@ SlangResult _assignVarsFromLayout(
case ShaderInputType::CombinedTextureSampler:
{
- RefPtr<TextureResource> texture;
+ ComPtr<ITextureResource> texture;
SLANG_RETURN_ON_FAIL(ShaderRendererUtil::generateTextureResource(entry.textureDesc, textureBindFlags, renderer, texture));
resource = texture;
auto sampler = _createSamplerState(renderer, entry.samplerDesc);
- ResourceView::Desc viewDesc;
- viewDesc.type = ResourceView::Type::ShaderResource;
+ IResourceView::Desc viewDesc;
+ viewDesc.type = IResourceView::Type::ShaderResource;
auto textureView = renderer->createTextureView(
texture,
viewDesc);
@@ -345,14 +345,14 @@ SlangResult _assignVarsFromLayout(
case ShaderInputType::Texture:
{
- RefPtr<TextureResource> texture;
+ ComPtr<ITextureResource> texture;
SLANG_RETURN_ON_FAIL(ShaderRendererUtil::generateTextureResource(entry.textureDesc, textureBindFlags, renderer, texture));
resource = texture;
// TODO: support UAV textures...
- ResourceView::Desc viewDesc;
- viewDesc.type = ResourceView::Type::ShaderResource;
+ IResourceView::Desc viewDesc;
+ viewDesc.type = IResourceView::Type::ShaderResource;
auto textureView = renderer->createTextureView(
texture,
viewDesc);
@@ -395,8 +395,9 @@ SlangResult _assignVarsFromLayout(
auto slangType = slangReflection->findTypeByName(typeName.getBuffer());
auto slangTypeLayout = slangReflection->getTypeLayout(slangType);
- RefPtr<ShaderObjectLayout> shaderObjectLayout = renderer->createShaderObjectLayout(slangTypeLayout);
- RefPtr<ShaderObject> shaderObject = renderer->createShaderObject(shaderObjectLayout);
+ ComPtr<IShaderObjectLayout> shaderObjectLayout = renderer->createShaderObjectLayout(slangTypeLayout);
+ ComPtr<IShaderObject> shaderObject =
+ renderer->createShaderObject(shaderObjectLayout);
entryCursor.setObject(shaderObject);
}
@@ -445,12 +446,12 @@ SlangResult LegacyRenderTestApp::initialize(
// TODO(tfoley): use each API's reflection interface to query the constant-buffer size needed
m_constantBufferSize = 16 * sizeof(float);
- BufferResource::Desc constantBufferDesc;
+ IBufferResource::Desc constantBufferDesc;
constantBufferDesc.init(m_constantBufferSize);
- constantBufferDesc.cpuAccessFlags = Resource::AccessFlag::Write;
+ constantBufferDesc.cpuAccessFlags = IResource::AccessFlag::Write;
m_constantBuffer =
- renderer->createBufferResource(Resource::Usage::ConstantBuffer, constantBufferDesc);
+ renderer->createBufferResource(IResource::Usage::ConstantBuffer, constantBufferDesc);
if (!m_constantBuffer)
return SLANG_FAIL;
@@ -458,7 +459,7 @@ SlangResult LegacyRenderTestApp::initialize(
//
// TODO: Should probably be more sophisticated than this - with 'dynamic' constant buffer/s
// binding always being specified in the test file
- RefPtr<BufferResource> addedConstantBuffer;
+ ComPtr<IBufferResource> addedConstantBuffer;
switch (m_options.shaderType)
{
default:
@@ -490,11 +491,11 @@ SlangResult LegacyRenderTestApp::initialize(
if (!m_inputLayout)
return SLANG_FAIL;
- BufferResource::Desc vertexBufferDesc;
+ IBufferResource::Desc vertexBufferDesc;
vertexBufferDesc.init(kVertexCount * sizeof(Vertex));
m_vertexBuffer = renderer->createBufferResource(
- Resource::Usage::VertexBuffer, vertexBufferDesc, kVertexData);
+ IResource::Usage::VertexBuffer, vertexBufferDesc, kVertexData);
if (!m_vertexBuffer)
return SLANG_FAIL;
@@ -555,7 +556,7 @@ SlangResult ShaderObjectRenderTestApp::initialize(
// Slang's reflection API to tell us what the parameters of the program are.
//
auto slangReflection = (slang::ProgramLayout*) spGetReflection(m_compilationOutput.output.getRequestForReflection());
- RefPtr<ShaderObjectLayout> programLayout = renderer->createRootShaderObjectLayout(slangReflection);
+ ComPtr<IShaderObjectLayout> programLayout = renderer->createRootShaderObjectLayout(slangReflection);
// Once we have determined the layout of all the parameters we need to bind,
// we will create a shader object to use for storing and binding those parameters.
@@ -583,7 +584,7 @@ SlangResult ShaderObjectRenderTestApp::initialize(
case Options::ShaderProgramType::Compute:
{
ComputePipelineStateDesc desc;
- desc.rootShaderObjectLayout = programLayout.Ptr();
+ desc.rootShaderObjectLayout = programLayout.get();
desc.program = m_shaderProgram;
m_pipelineState = renderer->createComputePipelineState(desc);
@@ -608,16 +609,16 @@ SlangResult ShaderObjectRenderTestApp::initialize(
{ "A", 2, Format::RG_Float32, offsetof(Vertex, uv) },
};
- RefPtr<InputLayout> inputLayout;
+ ComPtr<IInputLayout> inputLayout;
SLANG_RETURN_ON_FAIL(renderer->createInputLayout(inputElements, SLANG_COUNT_OF(inputElements), inputLayout.writeRef()));
- BufferResource::Desc vertexBufferDesc;
+ IBufferResource::Desc vertexBufferDesc;
vertexBufferDesc.init(kVertexCount * sizeof(Vertex));
- SLANG_RETURN_ON_FAIL(renderer->createBufferResource(Resource::Usage::VertexBuffer, vertexBufferDesc, kVertexData, m_vertexBuffer.writeRef()));
+ SLANG_RETURN_ON_FAIL(renderer->createBufferResource(IResource::Usage::VertexBuffer, vertexBufferDesc, kVertexData, m_vertexBuffer.writeRef()));
GraphicsPipelineStateDesc desc;
- desc.rootShaderObjectLayout = programLayout.Ptr();
+ desc.rootShaderObjectLayout = programLayout.get();
desc.program = m_shaderProgram;
desc.inputLayout = inputLayout;
@@ -650,8 +651,8 @@ void LegacyRenderTestApp::setProjectionMatrix()
if (mappedData)
{
const ProjectionStyle projectionStyle =
- RendererUtil::getProjectionStyle(m_renderer->getRendererType());
- RendererUtil::getIdentityProjection(projectionStyle, (float*)mappedData);
+ gfxGetProjectionStyle(m_renderer->getRendererType());
+ gfxGetIdentityProjection(projectionStyle, (float*)mappedData);
m_renderer->unmap(m_constantBuffer);
}
@@ -660,10 +661,10 @@ void LegacyRenderTestApp::setProjectionMatrix()
void ShaderObjectRenderTestApp::setProjectionMatrix()
{
const ProjectionStyle projectionStyle =
- RendererUtil::getProjectionStyle(m_renderer->getRendererType());
+ gfxGetProjectionStyle(m_renderer->getRendererType());
float projectionMatrix[16];
- RendererUtil::getIdentityProjection(projectionStyle, projectionMatrix);
+ gfxGetIdentityProjection(projectionStyle, projectionMatrix);
ShaderCursor(m_programVars)
.getField("Uniforms")
.getDereferenced()
@@ -722,10 +723,10 @@ Result LegacyRenderTestApp::writeBindingOutput(BindRoot* bindRoot, const char* f
assert(layoutBinding.isOutput);
- if (binding.resource && binding.resource->isBuffer())
+ if (binding.resource && binding.resource->getType() == IResource::Type::Buffer)
{
- BufferResource* bufferResource = static_cast<BufferResource*>(binding.resource.Ptr());
- const size_t bufferSize = bufferResource->getDesc().sizeInBytes;
+ IBufferResource* bufferResource = static_cast<IBufferResource*>(binding.resource.get());
+ const size_t bufferSize = bufferResource->getDesc()->sizeInBytes;
unsigned int* ptr = (unsigned int*)m_renderer->map(bufferResource, MapFlavor::HostRead);
if (!ptr)
@@ -768,10 +769,10 @@ Result ShaderObjectRenderTestApp::writeBindingOutput(BindRoot* bindRoot, const c
assert(inputEntry.isOutput);
auto resource = outputItem.resource;
- if (resource && resource->isBuffer())
+ if (resource && resource->getType() == IResource::Type::Buffer)
{
- BufferResource* bufferResource = static_cast<BufferResource*>(resource.Ptr());
- const size_t bufferSize = bufferResource->getDesc().sizeInBytes;
+ IBufferResource* bufferResource = static_cast<IBufferResource*>(resource.get());
+ const size_t bufferSize = bufferResource->getDesc()->sizeInBytes;
unsigned int* ptr = (unsigned int*)m_renderer->map(bufferResource, MapFlavor::HostRead);
if (!ptr)
@@ -1054,7 +1055,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
input.profile = options.profileName ? options.profileName : input.profile;
StringBuilder rendererName;
- rendererName << "[" << RendererUtil::toText(options.rendererType) << "] ";
+ rendererName << "[" << gfxGetRendererName(options.rendererType) << "] ";
if (options.adapter.getLength())
{
rendererName << "'" << options.adapter << "'";
@@ -1217,7 +1218,7 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
Slang::ComPtr<IRenderer> renderer;
{
- RendererUtil::CreateFunc createFunc = RendererUtil::getCreateFunc(options.rendererType);
+ SGRendererCreateFunc createFunc = gfxGetCreateFunc(options.rendererType);
if (createFunc)
{
createFunc(renderer.writeRef());
@@ -1235,8 +1236,12 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
IRenderer::Desc desc;
desc.width = gWindowWidth;
desc.height = gWindowHeight;
- desc.adapter = options.adapter;
- desc.requiredFeatures = options.renderFeatures;
+ desc.adapter = options.adapter.getBuffer();
+ List<const char*> requiredFeatureList;
+ for (auto & name : options.renderFeatures)
+ requiredFeatureList.add(name.getBuffer());
+ desc.requiredFeatures = requiredFeatureList.getBuffer();
+ desc.requiredFeatureCount = requiredFeatureList.getCount();
desc.nvapiExtnSlot = int(nvapiExtnSlot);
window = renderer_test::Window::create();
@@ -1254,10 +1259,10 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi
return res;
}
- for (const auto& feature : options.renderFeatures)
+ for (const auto& feature : requiredFeatureList)
{
// If doesn't have required feature... we have to give up
- if (!renderer->hasFeature(feature.getUnownedSlice()))
+ if (!renderer->hasFeature(feature))
{
return SLANG_E_NOT_AVAILABLE;
}