From 43d0c2100ef1a5df4b54525e50eb29fe7c39ec16 Mon Sep 17 00:00:00 2001 From: Gangzheng Tong Date: Tue, 8 Jul 2025 23:44:56 -0700 Subject: 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 Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --- tools/platform/model.cpp | 56 ++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) (limited to 'tools/platform/model.cpp') diff --git a/tools/platform/model.cpp b/tools/platform/model.cpp index 8453363c3..ed19a5a83 100644 --- a/tools/platform/model.cpp +++ b/tools/platform/model.cpp @@ -22,7 +22,7 @@ namespace platform { -using namespace gfx; +using namespace rhi; using namespace Slang; // TinyObj provides a tuple type that bundles up indices, but doesn't @@ -101,7 +101,7 @@ struct hash namespace platform { -ComPtr loadTextureImage(IDevice* device, char const* path) +ComPtr loadTextureImage(IDevice* device, char const* path) { int extentX = 0; int extentY = 0; @@ -121,20 +121,20 @@ ComPtr loadTextureImage(IDevice* device, char const* path) return nullptr; case 4: - format = Format::R8G8B8A8_UNORM; + format = Format::RGBA8Unorm; // TODO: handle other cases here if/when we stop forcing 4-component // results when loading the image with stb_image. } - std::vector subresourceInitData; + std::vector subresourceInitData; ptrdiff_t stride = extentX * channelCount * sizeof(stbi_uc); - ITextureResource::SubresourceData baseInitData; + SubresourceData baseInitData; baseInitData.data = data; - baseInitData.strideY = stride; - baseInitData.strideZ = 0; + baseInitData.rowPitch = stride; + baseInitData.slicePitch = 0; subresourceInitData.push_back(baseInitData); @@ -178,10 +178,10 @@ ComPtr loadTextureImage(IDevice* device, char const* path) STBIR_FLAG_ALPHA_PREMULTIPLIED); - ITextureResource::SubresourceData mipInitData; + SubresourceData mipInitData; mipInitData.data = newData; - mipInitData.strideY = newStride; - mipInitData.strideZ = 0; + mipInitData.rowPitch = newStride; + mipInitData.slicePitch = 0; subresourceInitData.push_back(mipInitData); @@ -194,16 +194,15 @@ ComPtr loadTextureImage(IDevice* device, char const* path) int mipCount = (int)subresourceInitData.size(); - ITextureResource::Desc desc = {}; - desc.type = IResource::Type::Texture2D; - desc.defaultState = ResourceState::ShaderResource; - desc.allowedStates = ResourceStateSet(ResourceState::ShaderResource); + TextureDesc desc = {}; + desc.type = TextureType::Texture2D; + desc.usage = TextureUsage::ShaderResource; desc.format = format; desc.size.width = extentX; desc.size.height = extentY; desc.size.depth = 1; - desc.numMipLevels = mipCount; - auto texture = device->createTextureResource(desc, subresourceInitData.data()); + desc.mipCount = mipCount; + auto texture = device->createTexture(desc, subresourceInitData.data()); free(data); return texture; @@ -541,29 +540,26 @@ SlangResult ModelLoader::load(char const* inputPath, void** outModel) modelData.vertexCount = (int)flatVertices.size(); modelData.indexCount = (int)flatIndices.size(); + modelData.primitiveTopology = PrimitiveTopology::TriangleList; modelData.meshCount = int(meshes.size()); modelData.meshes = meshes.data(); - IBufferResource::Desc vertexBufferDesc; - vertexBufferDesc.type = IResource::Type::Buffer; - vertexBufferDesc.sizeInBytes = modelData.vertexCount * sizeof(Vertex); - vertexBufferDesc.allowedStates = - ResourceStateSet(ResourceState::VertexBuffer, ResourceState::CopyDestination); - vertexBufferDesc.defaultState = ResourceState::VertexBuffer; + BufferDesc vertexBufferDesc; + vertexBufferDesc.size = modelData.vertexCount * sizeof(Vertex); + vertexBufferDesc.usage = BufferUsage::VertexBuffer; + vertexBufferDesc.elementSize = sizeof(Vertex); - modelData.vertexBuffer = device->createBufferResource(vertexBufferDesc, flatVertices.data()); + modelData.vertexBuffer = device->createBuffer(vertexBufferDesc, flatVertices.data()); if (!modelData.vertexBuffer) return SLANG_FAIL; - IBufferResource::Desc indexBufferDesc; - indexBufferDesc.type = IResource::Type::Buffer; - indexBufferDesc.sizeInBytes = modelData.indexCount * sizeof(Index); - indexBufferDesc.allowedStates = - ResourceStateSet(ResourceState::IndexBuffer, ResourceState::CopyDestination); - indexBufferDesc.defaultState = ResourceState::IndexBuffer; + BufferDesc indexBufferDesc; + indexBufferDesc.size = modelData.indexCount * sizeof(Index); + indexBufferDesc.usage = BufferUsage::IndexBuffer; + indexBufferDesc.elementSize = sizeof(Index); - modelData.indexBuffer = device->createBufferResource(indexBufferDesc, flatIndices.data()); + modelData.indexBuffer = device->createBuffer(indexBufferDesc, flatIndices.data()); if (!modelData.indexBuffer) return SLANG_FAIL; -- cgit v1.2.3