diff options
| author | lucy96chen <47800040+lucy96chen@users.noreply.github.com> | 2022-04-14 10:00:35 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-14 10:00:35 -0700 |
| commit | ac81614974700806e8257b8483a0ba97b925971a (patch) | |
| tree | 129a0aa5120bbc523389e667d2ae5ab65ae5f693 | |
| parent | 5ffd3048df2d7faf30ca8192c117d73e908212cd (diff) | |
GFX renaming work part 1 (#2183)
* Added new typedefs for Size, Offset, Count, and Index; Replaced numerous instances of size_t in slang-gfx.h, render-d3d12, render-vk, and renderer-shared with either Size or Offset; Fixed compiler warnings for mismatched numerical types
* Renamed Index and Count to GfxIndex and GfxCount, changed to 32 bit from 64 bit
| -rw-r--r-- | build/visual-studio/gfx-unit-test-tool/gfx-unit-test-tool.vcxproj.filters | 20 | ||||
| -rw-r--r-- | slang-gfx.h | 77 | ||||
| -rw-r--r-- | tools/gfx-unit-test/copy-texture-tests.cpp | 2 | ||||
| -rw-r--r-- | tools/gfx-unit-test/texture-types-tests.cpp | 55 | ||||
| -rw-r--r-- | tools/gfx/d3d12/render-d3d12.cpp | 81 | ||||
| -rw-r--r-- | tools/gfx/d3d12/render-d3d12.h | 49 | ||||
| -rw-r--r-- | tools/gfx/renderer-shared.cpp | 10 | ||||
| -rw-r--r-- | tools/gfx/renderer-shared.h | 8 | ||||
| -rw-r--r-- | tools/gfx/vulkan/render-vk.cpp | 92 | ||||
| -rw-r--r-- | tools/gfx/vulkan/render-vk.h | 56 |
10 files changed, 228 insertions, 222 deletions
diff --git a/build/visual-studio/gfx-unit-test-tool/gfx-unit-test-tool.vcxproj.filters b/build/visual-studio/gfx-unit-test-tool/gfx-unit-test-tool.vcxproj.filters index 6eae5a524..d49f305fe 100644 --- a/build/visual-studio/gfx-unit-test-tool/gfx-unit-test-tool.vcxproj.filters +++ b/build/visual-studio/gfx-unit-test-tool/gfx-unit-test-tool.vcxproj.filters @@ -9,15 +9,15 @@ </Filter>
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\tools\gfx-unit-test\gfx-test-texture-util.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
<ClInclude Include="..\..\..\tools\gfx-unit-test\gfx-test-util.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\tools\unit-test\slang-unit-test.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\tools\gfx-unit-test\gfx-test-texture-util.h">
- <Filter>Source Files</Filter>
- </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\tools\gfx-unit-test\buffer-barrier-test.cpp">
@@ -56,6 +56,9 @@ <ClCompile Include="..\..\..\tools\gfx-unit-test\get-texture-resource-handle-test.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\tools\gfx-unit-test\gfx-test-texture-util.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
<ClCompile Include="..\..\..\tools\gfx-unit-test\gfx-test-util.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -86,13 +89,10 @@ <ClCompile Include="..\..\..\tools\gfx-unit-test\shared-textures-tests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\unit-test\slang-unit-test.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\tools\gfx-unit-test\gfx-test-texture-util.cpp">
+ <ClCompile Include="..\..\..\tools\gfx-unit-test\texture-types-tests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\tools\gfx-unit-test\texture-types-tests.cpp">
+ <ClCompile Include="..\..\..\tools\unit-test\slang-unit-test.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
@@ -127,10 +127,10 @@ <None Include="..\..\..\tools\gfx-unit-test\sampler-array.slang">
<Filter>Source Files</Filter>
</None>
- <None Include="..\..\..\tools\gfx-unit-test\trivial-copy.slang">
+ <None Include="..\..\..\tools\gfx-unit-test\trivial-copy-textures.slang">
<Filter>Source Files</Filter>
</None>
- <None Include="..\..\..\tools\gfx-unit-test\trivial-copy-textures.slang">
+ <None Include="..\..\..\tools\gfx-unit-test\trivial-copy.slang">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
diff --git a/slang-gfx.h b/slang-gfx.h index 5b7a2c807..91fe7d5e5 100644 --- a/slang-gfx.h +++ b/slang-gfx.h @@ -31,6 +31,11 @@ #undef Always #undef None +// GLOBAL TODO: doc comments +// GLOBAL TODO: Rationalize integer types (not a smush of uint/int/Uint/Int/etc) +// - need typedefs in gfx namespace for Count, Index, Size, Offset (ex. DeviceAddress) +// - Index and Count are for arrays, and indexing into array - like things(XY coordinates of pixels, etc.) +// - Offset and Size are almost always for bytes and things measured in bytes. namespace gfx { using Slang::ComPtr; @@ -41,6 +46,10 @@ typedef SlangResult Result; typedef SlangInt Int; typedef SlangUInt UInt; typedef uint64_t DeviceAddress; +typedef int32_t GfxIndex; +typedef int32_t GfxCount; +typedef size_t Size; +typedef size_t Offset; const uint64_t kTimeoutInfinite = 0xFFFFFFFFFFFFFFFF; @@ -49,6 +58,7 @@ enum class StructType D3D12ExtendedDesc, }; +// TODO: Rename to Stage enum class StageType { Unknown, @@ -69,6 +79,7 @@ enum class StageType CountOf, }; +// TODO: Implementation or backend or something else? enum class DeviceType { Unknown, @@ -82,6 +93,7 @@ enum class DeviceType CountOf, }; +// TODO: Why does this exist it should go poof enum class ProjectionStyle { Unknown, @@ -91,6 +103,7 @@ enum class ProjectionStyle CountOf, }; +// TODO: This should also go poof /// The style of the binding enum class BindingStyle { @@ -103,6 +116,7 @@ enum class BindingStyle CountOf, }; +// TODO: Is this actually a flag when there are no bit fields? enum class AccessFlag { None, @@ -110,6 +124,7 @@ enum class AccessFlag Write, }; +// TODO: Needed? Shouldn't be hard-coded if so const uint32_t kMaxRenderTargetCount = 8; class ITransientResourceHeap; @@ -130,9 +145,11 @@ public: struct Desc { + // TODO: Tess doesn't like this but doesn't know what to do about it // The linking style of this program. LinkingStyle linkingStyle = LinkingStyle::SingleProgram; + // TODO: Remove slang prefix? // The global scope or a Slang composite component that represents the entire program. slang::IComponentType* slangGlobalScope; @@ -141,6 +158,7 @@ public: // If not 0, then `slangGlobalScope` must not contain any EntryPoint components. uint32_t entryPointCount = 0; + // TODO: Remove slang prefix? // An array of Slang entry points. The size of the array must be `entryPointCount`. // Each element must define only 1 Slang EntryPoint. slang::IComponentType** slangEntryPoints = nullptr; @@ -151,6 +169,8 @@ public: 0x9d32d0ad, 0x915c, 0x4ffd, { 0x91, 0xe2, 0x50, 0x85, 0x54, 0xa0, 0x4a, 0x76 } \ } +// TODO: Confirm with Yong that we really want this naming convention +// TODO: Rename to what? // Dont' change without keeping in sync with Format #define GFX_FORMAT(x) \ x( Unknown, 0, 0) \ @@ -253,6 +273,8 @@ public: x(BC7_UNORM, 16, 16) \ x(BC7_UNORM_SRGB, 16, 16) +// TODO: This should be generated from above +// TODO: enum class should be explicitly uint32_t or whatever's appropriate /// Different formats of things like pixels or elements of vertices /// NOTE! Any change to this type (adding, removing, changing order) - must also be reflected in changes GFX_FORMAT enum class Format @@ -360,11 +382,17 @@ enum class Format BC7_UNORM, BC7_UNORM_SRGB, - CountOf, + CountOf, // TODO: Rename to Count }; +// TODO: Aspect = Color, Depth, Stencil, etc. +// TODO: Channel = R, G, B, A, D, S, etc. +// TODO: Pick : pixel or texel +// TODO: Block is a good term for what it is +// TODO: Width/Height/Depth/whatever should not be used. We should use extentX, extentY, etc. struct FormatInfo { + // TODO: Change to uint32_t uint8_t channelCount; ///< The amount of channels in the format. Only set if the channelType is set uint8_t channelType; ///< One of SlangScalarType None if type isn't made up of elements of type. @@ -557,7 +585,7 @@ class IBufferResource: public IResource public: struct Desc: public DescBase { - size_t sizeInBytes = 0; ///< Total size in bytes + Size sizeInBytes = 0; ///< Total size in bytes int elementSize = 0; ///< Get the element stride. If > 0, this is a structured buffer Format format = Format::Unknown; }; @@ -1008,7 +1036,7 @@ public: struct ShaderOffset { - SlangInt uniformOffset = 0; + SlangInt uniformOffset = 0; // TODO: Change to Offset? SlangInt bindingRangeIndex = 0; SlangInt bindingArrayIndex = 0; uint32_t getHashCode() const @@ -1070,7 +1098,7 @@ public: virtual SLANG_NO_THROW Result SLANG_MCALL getEntryPoint(UInt index, IShaderObject** entryPoint) = 0; virtual SLANG_NO_THROW Result SLANG_MCALL - setData(ShaderOffset const& offset, void const* data, size_t size) = 0; + setData(ShaderOffset const& offset, void const* data, Size size) = 0; virtual SLANG_NO_THROW Result SLANG_MCALL getObject(ShaderOffset const& offset, IShaderObject** object) = 0; virtual SLANG_NO_THROW Result SLANG_MCALL @@ -1096,7 +1124,7 @@ public: virtual SLANG_NO_THROW const void* SLANG_MCALL getRawData() = 0; - virtual SLANG_NO_THROW size_t SLANG_MCALL getSize() = 0; + virtual SLANG_NO_THROW Size SLANG_MCALL getSize() = 0; /// Use the provided constant buffer instead of the internally created one. virtual SLANG_NO_THROW Result SLANG_MCALL setConstantBufferOverride(IBufferResource* constantBuffer) = 0; @@ -1540,10 +1568,10 @@ class IResourceCommandEncoder : public ICommandEncoder public: virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer( IBufferResource* dst, - size_t dstOffset, + Size dstOffset, IBufferResource* src, - size_t srcOffset, - size_t size) = 0; + Size srcOffset, + Size size) = 0; /// Copies texture from src to dst. If dstSubresource and srcSubresource has mipLevelCount = 0 /// and layerCount = 0, the entire resource is being copied and dstOffset, srcOffset and extent @@ -1562,9 +1590,9 @@ public: /// Copies texture to a buffer. Each row is aligned to kTexturePitchAlignment. virtual SLANG_NO_THROW void SLANG_MCALL copyTextureToBuffer( IBufferResource* dst, - size_t dstOffset, - size_t dstSize, - size_t dstRowStride, + Size dstOffset, + Size dstSize, + Size dstRowStride, ITextureResource* src, ResourceState srcState, SubresourceRange srcSubresource, @@ -1576,12 +1604,11 @@ public: ITextureResource::Offset3D offset, ITextureResource::Size extent, ITextureResource::SubresourceData* subResourceData, - size_t subResourceDataCount) = 0; + size_t subResourceDataCount) = 0; // TODO: Change size_t to Count? virtual SLANG_NO_THROW void SLANG_MCALL - uploadBufferData(IBufferResource* dst, size_t offset, size_t size, void* data) = 0; - + uploadBufferData(IBufferResource* dst, Offset offset, Size size, void* data) = 0; virtual SLANG_NO_THROW void SLANG_MCALL textureBarrier( - size_t count, ITextureResource* const* textures, ResourceState src, ResourceState dst) = 0; + size_t count, ITextureResource* const* textures, ResourceState src, ResourceState dst) = 0; // TODO: Change size_t to Count? void textureBarrier(ITextureResource* texture, ResourceState src, ResourceState dst) { textureBarrier(1, &texture, src, dst); @@ -1592,7 +1619,7 @@ public: ResourceState src, ResourceState dst) = 0; virtual SLANG_NO_THROW void SLANG_MCALL bufferBarrier( - size_t count, IBufferResource* const* buffers, ResourceState src, ResourceState dst) = 0; + size_t count, IBufferResource* const* buffers, ResourceState src, ResourceState dst) = 0; // TODO: Change size_t to Count? void bufferBarrier(IBufferResource* buffer, ResourceState src, ResourceState dst) { bufferBarrier(1, &buffer, src, dst); @@ -1887,7 +1914,7 @@ public: struct Desc { Flags::Enum flags; - size_t constantBufferSize; + Size constantBufferSize; uint32_t samplerDescriptorCount; uint32_t uavDescriptorCount; uint32_t srvDescriptorCount; @@ -2139,7 +2166,7 @@ public: virtual SLANG_NO_THROW Result SLANG_MCALL createTextureFromSharedHandle( InteropHandle handle, const ITextureResource::Desc& srcDesc, - const size_t size, + const Size size, ITextureResource** outResource) = 0; /// Create a buffer resource @@ -2248,7 +2275,7 @@ public: return layout; } - inline Result createInputLayout(size_t vertexSize, InputElementDesc const* inputElements, Int inputElementCount, IInputLayout** outLayout) + inline Result createInputLayout(Size vertexSize, InputElementDesc const* inputElements, Int inputElementCount, IInputLayout** outLayout) { VertexStreamDesc streamDesc = { (uint32_t)vertexSize, InputSlotClass::PerVertex, 0 }; @@ -2260,7 +2287,7 @@ public: return createInputLayout(inputLayoutDesc, outLayout); } - inline ComPtr<IInputLayout> createInputLayout(size_t vertexSize, InputElementDesc const* inputElements, Int inputElementCount) + inline ComPtr<IInputLayout> createInputLayout(Size vertexSize, InputElementDesc const* inputElements, Int inputElementCount) { ComPtr<IInputLayout> layout; SLANG_RETURN_NULL_ON_FAIL(createInputLayout(vertexSize, inputElements, inputElementCount, layout.writeRef())); @@ -2350,13 +2377,13 @@ public: ITextureResource* resource, ResourceState state, ISlangBlob** outBlob, - size_t* outRowPitch, - size_t* outPixelSize) = 0; + Size* outRowPitch, + Size* outPixelSize) = 0; virtual SLANG_NO_THROW SlangResult SLANG_MCALL readBufferResource( IBufferResource* buffer, - size_t offset, - size_t size, + Offset offset, + Size size, ISlangBlob** outBlob) = 0; /// Get the type of this renderer @@ -2387,7 +2414,7 @@ public: uint64_t timeout) = 0; virtual SLANG_NO_THROW Result SLANG_MCALL getTextureAllocationInfo( - const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment) = 0; + const ITextureResource::Desc& desc, Size* outSize, size_t* outAlignment) = 0; virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(size_t* outAlignment) = 0; }; diff --git a/tools/gfx-unit-test/copy-texture-tests.cpp b/tools/gfx-unit-test/copy-texture-tests.cpp index f332198b4..3461a8cdf 100644 --- a/tools/gfx-unit-test/copy-texture-tests.cpp +++ b/tools/gfx-unit-test/copy-texture-tests.cpp @@ -185,7 +185,7 @@ namespace gfx_test queue->waitOnHost(); } - bool isWithinCopyBounds(int x, int y, int z) + bool isWithinCopyBounds(Int x, Int y, Int z) { auto copyExtents = texCopyInfo.extent; auto copyOffset = texCopyInfo.dstOffset; diff --git a/tools/gfx-unit-test/texture-types-tests.cpp b/tools/gfx-unit-test/texture-types-tests.cpp index 5fdeb2622..94f7a764f 100644 --- a/tools/gfx-unit-test/texture-types-tests.cpp +++ b/tools/gfx-unit-test/texture-types-tests.cpp @@ -10,50 +10,11 @@ #include <d3d12.h> #endif -#include <stdlib.h> -#include <stdio.h> - -#define STB_IMAGE_WRITE_IMPLEMENTATION -#include "external/stb/stb_image_write.h" - using namespace Slang; using namespace gfx; namespace gfx_test { - Slang::Result writeImage( - const char* filename, - ISlangBlob* pixels, - uint32_t width, - uint32_t height, - size_t rowPitch = 0) - { - int stbResult = 0; - if (rowPitch == 0) - { - stbResult = stbi_write_hdr(filename, width, height, 4, (float*)pixels->getBufferPointer()); - } - else - { - List<float> data; - for (Int y = 0; y < height; ++y) - { - for (Int x = 0; x < width; ++x) - { - for (Int c = 0; c < 4; ++c) - { - auto rowPtr = (char*)pixels->getBufferPointer() + y * rowPitch; - auto channelPtr = (float*)rowPtr + x * 4 + c; - data.add(*channelPtr); - } - } - } - stbResult = stbi_write_hdr(filename, width, height, 4, data.getBuffer()); - } - - return stbResult ? SLANG_OK : SLANG_FAIL; - } - struct BaseTextureViewTest { IDevice* device; @@ -303,14 +264,14 @@ namespace gfx_test ValidationTextureData textureResults; textureResults.extents = textureInfo->extents; textureResults.textureData = textureValues; - textureResults.strides.x = pixelSize; - textureResults.strides.y = rowPitch; + textureResults.strides.x = (uint32_t)pixelSize; + textureResults.strides.y = (uint32_t)rowPitch; textureResults.strides.z = textureResults.extents.height * textureResults.strides.y; ValidationTextureData originalData; originalData.extents = textureInfo->extents; originalData.textureData = textureInfo->subresourceDatas.getBuffer(); - originalData.strides.x = pixelSize; + originalData.strides.x = (uint32_t)pixelSize; originalData.strides.y = textureInfo->extents.width * originalData.strides.x; originalData.strides.z = textureInfo->extents.height * originalData.strides.y; @@ -530,9 +491,9 @@ namespace gfx_test auto rootObject = renderEncoder->bindPipeline(pipelineState); gfx::Viewport viewport = {}; - viewport.maxZ = textureInfo->extents.depth; - viewport.extentX = textureInfo->extents.width; - viewport.extentY = textureInfo->extents.height; + viewport.maxZ = (float)textureInfo->extents.depth; + viewport.extentX = (float)textureInfo->extents.width; + viewport.extentY = (float)textureInfo->extents.height; renderEncoder->setViewportAndScissor(viewport); renderEncoder->setVertexBuffer(0, vertexBuffer); @@ -617,8 +578,8 @@ namespace gfx_test ValidationTextureData textureResults; textureResults.extents = textureInfo->extents; textureResults.textureData = textureValues; - textureResults.strides.x = pixelSize; - textureResults.strides.y = rowPitch; + textureResults.strides.x = (uint32_t)pixelSize; + textureResults.strides.y = (uint32_t)rowPitch; textureResults.strides.z = textureResults.extents.height * textureResults.strides.y; validateTextureValues(textureResults); diff --git a/tools/gfx/d3d12/render-d3d12.cpp b/tools/gfx/d3d12/render-d3d12.cpp index b98229d7b..f964c73df 100644 --- a/tools/gfx/d3d12/render-d3d12.cpp +++ b/tools/gfx/d3d12/render-d3d12.cpp @@ -377,7 +377,7 @@ Result initTextureResourceDesc( return SLANG_OK; } -void initBufferResourceDesc(size_t bufferSize, D3D12_RESOURCE_DESC& out) +void initBufferResourceDesc(Size bufferSize, D3D12_RESOURCE_DESC& out) { out = {}; @@ -399,12 +399,12 @@ Result uploadBufferDataImpl( ID3D12GraphicsCommandList* cmdList, TransientResourceHeapImpl* transientHeap, BufferResourceImpl* buffer, - size_t offset, - size_t size, + Offset offset, + Size size, void* data) { IBufferResource* uploadResource; - size_t uploadResourceOffset = 0; + Offset uploadResourceOffset = 0; if (buffer->getDesc()->memoryType != MemoryType::Upload) { SLANG_RETURN_ON_FAIL(transientHeap->allocateStagingBuffer( @@ -542,13 +542,13 @@ Result createNullDescriptor( Result DeviceImpl::createBuffer( const D3D12_RESOURCE_DESC& resourceDesc, const void* srcData, - size_t srcDataSize, + Size srcDataSize, D3D12_RESOURCE_STATES finalState, D3D12Resource& resourceOut, bool isShared, MemoryType memoryType) { - const size_t bufferSize = size_t(resourceDesc.Width); + const Size bufferSize = Size(resourceDesc.Width); D3D12_HEAP_PROPERTIES heapProps; heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; @@ -645,8 +645,8 @@ Result DeviceImpl::captureTextureToSurface( TextureResourceImpl* resourceImpl, ResourceState state, ISlangBlob** outBlob, - size_t* outRowPitch, - size_t* outPixelSize) + Size* outRowPitch, + Size* outPixelSize) { auto& resource = resourceImpl->m_resource; @@ -664,11 +664,11 @@ Result DeviceImpl::captureTextureToSurface( FormatInfo formatInfo; gfxGetFormatInfo(gfxDesc.format, &formatInfo); - size_t bytesPerPixel = formatInfo.blockSizeInBytes / formatInfo.pixelsPerBlock; - size_t rowPitch = int(desc.Width) * bytesPerPixel; - static const size_t align = 256; // D3D requires minimum 256 byte alignment for texture data. + Size bytesPerPixel = formatInfo.blockSizeInBytes / formatInfo.pixelsPerBlock; + Size rowPitch = int(desc.Width) * bytesPerPixel; + static const Size align = 256; // D3D requires minimum 256 byte alignment for texture data. rowPitch = (rowPitch + align - 1) & ~(align - 1); // Bit trick for rounding up - size_t bufferSize = rowPitch * int(desc.Height) * int(desc.DepthOrArraySize); + Size bufferSize = rowPitch * int(desc.Height) * int(desc.DepthOrArraySize); if (outRowPitch) *outRowPitch = rowPitch; if (outPixelSize) @@ -1342,26 +1342,26 @@ SlangResult DeviceImpl::readTextureResource( ITextureResource* resource, ResourceState state, ISlangBlob** outBlob, - size_t* outRowPitch, - size_t* outPixelSize) + Size* outRowPitch, + Size* outPixelSize) { return captureTextureToSurface( static_cast<TextureResourceImpl*>(resource), state, outBlob, outRowPitch, outPixelSize); } Result DeviceImpl::getTextureAllocationInfo( - const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment) + const ITextureResource::Desc& desc, Size* outSize, Size* outAlignment) { TextureResource::Desc srcDesc = fixupTextureDesc(desc); D3D12_RESOURCE_DESC resourceDesc = {}; initTextureResourceDesc(resourceDesc, srcDesc); auto allocInfo = m_device->GetResourceAllocationInfo(0, 1, &resourceDesc); - *outSize = (size_t)allocInfo.SizeInBytes; - *outAlignment = (size_t)allocInfo.Alignment; + *outSize = (Size)allocInfo.SizeInBytes; + *outAlignment = (Size)allocInfo.Alignment; return SLANG_OK; } -Result DeviceImpl::getTextureRowAlignment(size_t* outAlignment) +Result DeviceImpl::getTextureRowAlignment(Size* outAlignment) { *outAlignment = D3D12_TEXTURE_DATA_PITCH_ALIGNMENT; return SLANG_OK; @@ -1534,7 +1534,7 @@ Result DeviceImpl::createTextureResource( : 1; // BC compressed formats are organized into 4x4 blocks for (int k = 0; k < mipSize.height; k += j) { - ::memcpy(dstRow, srcRow, (size_t)mipRowSize); + ::memcpy(dstRow, srcRow, (Size)mipRowSize); srcRow += srcMipRowPitch; dstRow += dstMipRowPitch; @@ -2155,7 +2155,7 @@ Result DeviceImpl::createInputLayout(IInputLayout::Desc const& desc, IInputLayou RefPtr<InputLayoutImpl> layout(new InputLayoutImpl); // Work out a buffer size to hold all text - size_t textSize = 0; + Size textSize = 0; auto inputElementCount = desc.inputElementCount; auto inputElements = desc.inputElements; auto vertexStreamCount = desc.vertexStreamCount; @@ -2210,12 +2210,12 @@ Result DeviceImpl::createInputLayout(IInputLayout::Desc const& desc, IInputLayou const gfx::DeviceInfo& DeviceImpl::getDeviceInfo() const { return m_info; } Result DeviceImpl::readBufferResource( - IBufferResource* bufferIn, size_t offset, size_t size, ISlangBlob** outBlob) + IBufferResource* bufferIn, Offset offset, Size size, ISlangBlob** outBlob) { BufferResourceImpl* buffer = static_cast<BufferResourceImpl*>(bufferIn); - const size_t bufferSize = buffer->getDesc()->sizeInBytes; + const Size bufferSize = buffer->getDesc()->sizeInBytes; // This will be slow!!! - it blocks CPU on GPU completion D3D12Resource& resource = buffer->m_resource; @@ -2500,7 +2500,7 @@ Result DeviceImpl::createRayTracingPipelineState( Result DeviceImpl::createTransientResourceHeapImpl( ITransientResourceHeap::Flags::Enum flags, - size_t constantBufferSize, + Size constantBufferSize, uint32_t viewDescriptors, uint32_t samplerDescriptors, TransientResourceHeapImpl** outHeap) @@ -3263,7 +3263,7 @@ Result PlainBufferProxyQueryPoolImpl::getResult(SlangInt queryIndex, SlangInt co D3D12Resource stageBuf; - auto size = (size_t)m_count * m_stride; + auto size = (Size)m_count * m_stride; D3D12_HEAP_PROPERTIES heapProps; heapProps.Type = D3D12_HEAP_TYPE_READBACK; heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; @@ -3686,8 +3686,10 @@ Result ShaderObjectImpl::getEntryPoint(UInt index, IShaderObject** outEntryPoint const void* ShaderObjectImpl::getRawData() { return m_data.getBuffer(); } +// TODO: Change to Count? size_t ShaderObjectImpl::getSize() { return (size_t)m_data.getCount(); } +// TODO: Change Index to Offset/Size? Result ShaderObjectImpl::setData(ShaderOffset const& inOffset, void const* data, size_t inSize) { Index offset = inOffset.uniformOffset; @@ -3887,12 +3889,12 @@ Result ShaderObjectImpl::init( Result ShaderObjectImpl::_writeOrdinaryData( PipelineCommandEncoder* encoder, BufferResourceImpl* buffer, - size_t offset, - size_t destSize, + Offset offset, + Size destSize, ShaderObjectLayoutImpl* specializedLayout) { auto src = m_data.getBuffer(); - auto srcSize = size_t(m_data.getCount()); + auto srcSize = Size(m_data.getCount()); SLANG_ASSERT(srcSize <= destSize); @@ -3959,8 +3961,8 @@ Result ShaderObjectImpl::_writeOrdinaryData( // layout logic does for complex cases with multiple layers of nested arrays and // structures. // - size_t subObjectRangePendingDataOffset = subObjectRangeInfo.offset.pendingOrdinaryData; - size_t subObjectRangePendingDataStride = subObjectRangeInfo.stride.pendingOrdinaryData; + Offset subObjectRangePendingDataOffset = subObjectRangeInfo.offset.pendingOrdinaryData; + Size subObjectRangePendingDataStride = subObjectRangeInfo.stride.pendingOrdinaryData; // If the range doesn't actually need/use the "pending" allocation at all, then // we need to detect that case and skip such ranges. @@ -6344,7 +6346,7 @@ RefPtr<BufferResource> ShaderTableImpl::createDeviceBuffer( static_cast<TransientResourceHeapImpl*>(transientHeap); IBufferResource* stagingBuffer = nullptr; - size_t stagingBufferOffset = 0; + Offset stagingBufferOffset = 0; transientHeapImpl->allocateStagingBuffer( tableSize, stagingBuffer, stagingBufferOffset, MemoryType::Upload); @@ -6499,7 +6501,7 @@ void CommandBufferImpl::encodeRayTracingCommands(IRayTracingCommandEncoder** out void CommandBufferImpl::close() { m_cmdList->Close(); } void ResourceCommandEncoderImpl::copyBuffer( - IBufferResource* dst, size_t dstOffset, IBufferResource* src, size_t srcOffset, size_t size) + IBufferResource* dst, Offset dstOffset, IBufferResource* src, Offset srcOffset, Size size) { auto dstBuffer = static_cast<BufferResourceImpl*>(dst); auto srcBuffer = static_cast<BufferResourceImpl*>(src); @@ -6513,7 +6515,7 @@ void ResourceCommandEncoderImpl::copyBuffer( } void ResourceCommandEncoderImpl::uploadBufferData( - IBufferResource* dst, size_t offset, size_t size, void* data) + IBufferResource* dst, Offset offset, Size size, void* data) { uploadBufferDataImpl( m_commandBuffer->m_renderer->m_device, @@ -6525,6 +6527,7 @@ void ResourceCommandEncoderImpl::uploadBufferData( data); } +// TODO: Change size_t to Count? void ResourceCommandEncoderImpl::textureBarrier( size_t count, ITextureResource* const* textures, ResourceState src, ResourceState dst) { @@ -6566,6 +6569,7 @@ void ResourceCommandEncoderImpl::textureBarrier( } } +// TODO: Change size_t to Count? void ResourceCommandEncoderImpl::bufferBarrier( size_t count, IBufferResource* const* buffers, ResourceState src, ResourceState dst) { @@ -6679,6 +6683,7 @@ void ResourceCommandEncoderImpl::copyTexture( } } +// TODO: Change size_t to Count? void ResourceCommandEncoderImpl::uploadTextureData( ITextureResource* dst, SubresourceRange subResourceRange, @@ -6750,7 +6755,7 @@ void ResourceCommandEncoderImpl::uploadTextureData( auto bufferSize = footprint.Footprint.RowPitch * rowCount * footprint.Footprint.Depth; IBufferResource* stagingBuffer; - size_t stagingBufferOffset = 0; + Offset stagingBufferOffset = 0; m_commandBuffer->m_transientHeap->allocateStagingBuffer( bufferSize, stagingBuffer, stagingBufferOffset, MemoryType::Upload, true); assert(stagingBufferOffset == 0); @@ -6760,12 +6765,12 @@ void ResourceCommandEncoderImpl::uploadTextureData( bufferImpl->m_resource.getResource()->Map(0, &mapRange, (void**)&bufferData); for (uint32_t z = 0; z < footprint.Footprint.Depth; z++) { - auto imageStart = bufferData + footprint.Footprint.RowPitch * rowCount * (size_t)z; + auto imageStart = bufferData + footprint.Footprint.RowPitch * rowCount * (Size)z; auto srcData = (uint8_t*)subResourceData->data + subResourceData->strideZ * z; for (uint32_t row = 0; row < rowCount; row++) { memcpy( - imageStart + row * (size_t)footprint.Footprint.RowPitch, + imageStart + row * (Size)footprint.Footprint.RowPitch, srcData + subResourceData->strideY * row, rowSize); } @@ -6960,9 +6965,9 @@ void ResourceCommandEncoderImpl::resolveQuery( void ResourceCommandEncoderImpl::copyTextureToBuffer( IBufferResource* dst, - size_t dstOffset, - size_t dstSize, - size_t dstRowStride, + Offset dstOffset, + Size dstSize, + Size dstRowStride, ITextureResource* src, ResourceState srcState, SubresourceRange srcSubresource, diff --git a/tools/gfx/d3d12/render-d3d12.h b/tools/gfx/d3d12/render-d3d12.h index c8929984b..b08cdb510 100644 --- a/tools/gfx/d3d12/render-d3d12.h +++ b/tools/gfx/d3d12/render-d3d12.h @@ -134,8 +134,8 @@ public: const ISwapchain::Desc& desc, WindowHandle window, ISwapchain** outSwapchain) override; virtual SLANG_NO_THROW Result SLANG_MCALL getTextureAllocationInfo( - const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment) override; - virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(size_t* outAlignment) override; + const ITextureResource::Desc& desc, Size* outSize, Size* outAlignment) override; + virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(Size* outAlignment) override; virtual SLANG_NO_THROW Result SLANG_MCALL createTextureResource( const ITextureResource::Desc& desc, const ITextureResource::SubresourceData* initData, @@ -215,11 +215,11 @@ public: ITextureResource* resource, ResourceState state, ISlangBlob** outBlob, - size_t* outRowPitch, - size_t* outPixelSize) override; + Size* outRowPitch, + Size* outPixelSize) override; virtual SLANG_NO_THROW SlangResult SLANG_MCALL readBufferResource( - IBufferResource* resource, size_t offset, size_t size, ISlangBlob** outBlob) override; + IBufferResource* resource, Offset offset, Size size, ISlangBlob** outBlob) override; virtual SLANG_NO_THROW const gfx::DeviceInfo& SLANG_MCALL getDeviceInfo() const override; @@ -243,7 +243,7 @@ public: Result createTransientResourceHeapImpl( ITransientResourceHeap::Flags::Enum flags, - size_t constantBufferSize, + Size constantBufferSize, uint32_t viewDescriptors, uint32_t samplerDescriptors, TransientResourceHeapImpl** outHeap); @@ -251,7 +251,7 @@ public: Result createBuffer( const D3D12_RESOURCE_DESC& resourceDesc, const void* srcData, - size_t srcDataSize, + Size srcDataSize, D3D12_RESOURCE_STATES finalState, D3D12Resource& resourceOut, bool isShared, @@ -261,8 +261,8 @@ public: TextureResourceImpl* resource, ResourceState state, ISlangBlob** blob, - size_t* outRowPitch, - size_t* outPixelSize); + Size* outRowPitch, + Size* outPixelSize); Result _createDevice( DeviceCheckFlags deviceCheckFlags, @@ -1189,10 +1189,11 @@ public: virtual SLANG_NO_THROW const void* SLANG_MCALL getRawData() override; + // TODO: Change size_t to Count? virtual SLANG_NO_THROW size_t SLANG_MCALL getSize() override; virtual SLANG_NO_THROW Result SLANG_MCALL - setData(ShaderOffset const& inOffset, void const* data, size_t inSize) override; + setData(ShaderOffset const& inOffset, void const* data, Size inSize) override; virtual SLANG_NO_THROW Result SLANG_MCALL setObject(ShaderOffset const& offset, IShaderObject* object) override; @@ -1217,8 +1218,8 @@ protected: Result _writeOrdinaryData( PipelineCommandEncoder* encoder, BufferResourceImpl* buffer, - size_t offset, - size_t destSize, + Offset offset, + Size destSize, ShaderObjectLayoutImpl* specializedLayout); bool shouldAllocateConstantBuffer(TransientResourceHeapImpl* transientHeap); @@ -1290,8 +1291,8 @@ public: /// /// Allocated from transient heap on demand with `_createOrdinaryDataBufferIfNeeded()` IBufferResource* m_constantBufferWeakPtr = nullptr; - size_t m_constantBufferOffset = 0; - size_t m_constantBufferSize = 0; + Offset m_constantBufferOffset = 0; + Size m_constantBufferSize = 0; /// Dirty bit tracking whether the constant buffer needs to be updated. bool m_isConstantBufferDirty = true; @@ -1399,19 +1400,19 @@ class ResourceCommandEncoderImpl public: virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer( IBufferResource* dst, - size_t dstOffset, + Offset dstOffset, IBufferResource* src, - size_t srcOffset, - size_t size) override; + Offset srcOffset, + Size size) override; virtual SLANG_NO_THROW void SLANG_MCALL - uploadBufferData(IBufferResource* dst, size_t offset, size_t size, void* data) override; + uploadBufferData(IBufferResource* dst, Offset offset, Size size, void* data) override; virtual SLANG_NO_THROW void SLANG_MCALL textureBarrier( - size_t count, + size_t count, // TODO: Change size_t to Count? ITextureResource* const* textures, ResourceState src, ResourceState dst) override; virtual SLANG_NO_THROW void SLANG_MCALL bufferBarrier( - size_t count, + size_t count, // TODO: Change size_t to Count? IBufferResource* const* buffers, ResourceState src, ResourceState dst) override; @@ -1435,7 +1436,7 @@ public: ITextureResource::Offset3D offset, ITextureResource::Size extent, ITextureResource::SubresourceData* subResourceData, - size_t subResourceDataCount) override; + size_t subResourceDataCount) override; // TODO: Change size_t to Count? virtual SLANG_NO_THROW void SLANG_MCALL clearResourceView( IResourceView* view, ClearValue* clearValue, ClearResourceViewFlags::Enum flags) override; @@ -1457,9 +1458,9 @@ public: virtual SLANG_NO_THROW void SLANG_MCALL copyTextureToBuffer( IBufferResource* dst, - size_t dstOffset, - size_t dstSize, - size_t dstRowStride, + Offset dstOffset, + Size dstSize, + Size dstRowStride, ITextureResource* src, ResourceState srcState, SubresourceRange srcSubresource, diff --git a/tools/gfx/renderer-shared.cpp b/tools/gfx/renderer-shared.cpp index d01f6fe72..33e34ddb8 100644 --- a/tools/gfx/renderer-shared.cpp +++ b/tools/gfx/renderer-shared.cpp @@ -408,7 +408,7 @@ SLANG_NO_THROW Result SLANG_MCALL RendererBase::createTextureFromNativeHandle( SLANG_NO_THROW Result SLANG_MCALL RendererBase::createTextureFromSharedHandle( InteropHandle handle, const ITextureResource::Desc& srcDesc, - const size_t size, + const Size size, ITextureResource** outResource) { SLANG_UNUSED(handle); @@ -535,7 +535,7 @@ Result RendererBase::waitForFences( } Result RendererBase::getTextureAllocationInfo( - const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment) + const ITextureResource::Desc& desc, Size* outSize, Size* outAlignment) { SLANG_UNUSED(desc); *outSize = 0; @@ -543,7 +543,7 @@ Result RendererBase::getTextureAllocationInfo( return SLANG_E_NOT_AVAILABLE; } -Result RendererBase::getTextureRowAlignment(size_t* outAlignment) +Result RendererBase::getTextureRowAlignment(Size* outAlignment) { *outAlignment = 0; return SLANG_E_NOT_AVAILABLE; @@ -743,7 +743,7 @@ ResourceViewBase* SimpleShaderObjectData::getResourceView( desc.elementSize = (int)elementLayout->getSize(); desc.format = Format::Unknown; desc.type = IResource::Type::Buffer; - desc.sizeInBytes = (size_t)m_ordinaryData.getCount(); + desc.sizeInBytes = (Size)m_ordinaryData.getCount(); ComPtr<IBufferResource> bufferResource; SLANG_RETURN_NULL_ON_FAIL(device->createBufferResource( desc, m_ordinaryData.getBuffer(), bufferResource.writeRef())); @@ -1013,7 +1013,7 @@ Result ShaderObjectBase::copyFrom(IShaderObject* object, ITransientResourceHeap* { if (auto srcObj = dynamic_cast<MutableRootShaderObject*>(object)) { - setData(gfx::ShaderOffset(), srcObj->m_data.begin(), (size_t)srcObj->m_data.getCount()); + setData(gfx::ShaderOffset(), srcObj->m_data.begin(), (size_t)srcObj->m_data.getCount()); // TODO: Change size_t to Count? for (auto& kv : srcObj->m_objects) { ComPtr<IShaderObject> subObject; diff --git a/tools/gfx/renderer-shared.h b/tools/gfx/renderer-shared.h index a9d9e19c4..53557caf7 100644 --- a/tools/gfx/renderer-shared.h +++ b/tools/gfx/renderer-shared.h @@ -578,7 +578,7 @@ public: } void* getBuffer() { return m_data.getBuffer(); } - size_t getBufferSize() { return (size_t)m_data.getCount(); } + size_t getBufferSize() { return (size_t)m_data.getCount(); } // TODO: Change size_t to Count? virtual SLANG_NO_THROW Result SLANG_MCALL getObject(ShaderOffset const& offset, IShaderObject** outObject) SLANG_OVERRIDE @@ -663,7 +663,7 @@ public: SLANG_RETURN_ON_FAIL(setData( payloadOffset, subObject->m_data.getBuffer(), - (size_t)subObject->m_data.getCount())); + (size_t)subObject->m_data.getCount())); // TODO: Change size_t to Count? setSpecializationArgsForContainerElement(specializationArgs); return SLANG_OK; @@ -1223,7 +1223,7 @@ public: virtual SLANG_NO_THROW Result SLANG_MCALL createTextureFromSharedHandle( InteropHandle handle, const ITextureResource::Desc& srcDesc, - const size_t size, + const Size size, ITextureResource** outResource) SLANG_OVERRIDE; virtual SLANG_NO_THROW Result SLANG_MCALL createBufferFromNativeHandle( @@ -1288,7 +1288,7 @@ public: // Provides a default implementation that returns SLANG_E_NOT_AVAILABLE. virtual SLANG_NO_THROW Result SLANG_MCALL getTextureAllocationInfo( - const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment) override; + const ITextureResource::Desc& desc, Size* outSize, Size* outAlignment) override; // Provides a default implementation that returns SLANG_E_NOT_AVAILABLE. virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(size_t* outAlignment) override; diff --git a/tools/gfx/vulkan/render-vk.cpp b/tools/gfx/vulkan/render-vk.cpp index f9faddf3d..6d8e9464c 100644 --- a/tools/gfx/vulkan/render-vk.cpp +++ b/tools/gfx/vulkan/render-vk.cpp @@ -33,14 +33,15 @@ namespace vk { namespace { -size_t calcRowSize(Format format, int width) +Size calcRowSize(Format format, int width) { FormatInfo sizeInfo; gfxGetFormatInfo(format, &sizeInfo); - return size_t( + return Size( (width + sizeInfo.blockWidth - 1) / sizeInfo.blockWidth * sizeInfo.blockSizeInBytes); } +// TODO: Change size_t to Count? size_t calcNumRows(Format format, int height) { FormatInfo sizeInfo; @@ -487,11 +488,12 @@ DeviceImpl::~DeviceImpl() } } +// TODO: Is "location" still needed for this function? VkBool32 DeviceImpl::handleDebugMessage( VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, - size_t location, + Size location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg) @@ -512,7 +514,7 @@ VkBool32 DeviceImpl::handleDebugMessage( // pMsg can be really big (it can be assembler dump for example) // Use a dynamic buffer to store - size_t bufferSize = strlen(pMsg) + 1 + 1024; + Size bufferSize = strlen(pMsg) + 1 + 1024; List<char> bufferArray; bufferArray.setCount(bufferSize); char* buffer = bufferArray.getBuffer(); @@ -527,7 +529,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL DeviceImpl::debugMessageCallback( VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, - size_t location, + Size location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, @@ -1235,8 +1237,8 @@ SlangResult DeviceImpl::readTextureResource( ITextureResource* texture, ResourceState state, ISlangBlob** outBlob, - size_t* outRowPitch, - size_t* outPixelSize) + Size* outRowPitch, + Size* outPixelSize) { auto textureImpl = static_cast<TextureResourceImpl*>(texture); RefPtr<ListBlob> blob = new ListBlob(); @@ -1246,8 +1248,8 @@ SlangResult DeviceImpl::readTextureResource( auto height = desc->size.height; FormatInfo sizeInfo; SLANG_RETURN_ON_FAIL(gfxGetFormatInfo(desc->format, &sizeInfo)); - size_t pixelSize = sizeInfo.blockSizeInBytes / sizeInfo.pixelsPerBlock; - size_t rowPitch = width * pixelSize; + Size pixelSize = sizeInfo.blockSizeInBytes / sizeInfo.pixelsPerBlock; + Size rowPitch = width * pixelSize; List<TextureResource::Size> mipSizes; @@ -1255,7 +1257,7 @@ SlangResult DeviceImpl::readTextureResource( auto arraySize = calcEffectiveArraySize(*desc); // Calculate how large the buffer has to be - size_t bufferSize = 0; + Size bufferSize = 0; // Calculate how large an array entry is for (int j = 0; j < numMipMaps; ++j) { @@ -1270,6 +1272,7 @@ SlangResult DeviceImpl::readTextureResource( } // Calculate the total size taking into account the array bufferSize *= arraySize; + // TODO: Change Index to Count? blob->m_data.setCount(Index(bufferSize)); VKBufferHandleRAII staging; @@ -1283,7 +1286,7 @@ SlangResult DeviceImpl::readTextureResource( VkImage srcImage = textureImpl->m_image; VkImageLayout srcImageLayout = VulkanUtil::getImageLayoutFromState(state); - size_t dstOffset = 0; + Offset dstOffset = 0; for (int i = 0; i < arraySize; ++i) { for (Index j = 0; j < mipSizes.getCount(); ++j) @@ -1331,7 +1334,7 @@ SlangResult DeviceImpl::readTextureResource( } SlangResult DeviceImpl::readBufferResource( - IBufferResource* inBuffer, size_t offset, size_t size, ISlangBlob** outBlob) + IBufferResource* inBuffer, Offset offset, Size size, ISlangBlob** outBlob) { BufferResourceImpl* buffer = static_cast<BufferResourceImpl*>(inBuffer); @@ -1489,7 +1492,7 @@ void DeviceImpl::_transitionImageLayout( } Result DeviceImpl::getTextureAllocationInfo( - const ITextureResource::Desc& descIn, size_t* outSize, size_t* outAlignment) + const ITextureResource::Desc& descIn, Size* outSize, Size* outAlignment) { TextureResource::Desc desc = fixupTextureDesc(descIn); @@ -1561,14 +1564,14 @@ Result DeviceImpl::getTextureAllocationInfo( VkMemoryRequirements memRequirements; m_api.vkGetImageMemoryRequirements(m_device, image, &memRequirements); - *outSize = (size_t)memRequirements.size; - *outAlignment = (size_t)memRequirements.alignment; + *outSize = (Size)memRequirements.size; + *outAlignment = (Size)memRequirements.alignment; m_api.vkDestroyImage(m_device, image, nullptr); return SLANG_OK; } -Result DeviceImpl::getTextureRowAlignment(size_t* outAlignment) +Result DeviceImpl::getTextureRowAlignment(Size* outAlignment) { *outAlignment = 1; return SLANG_OK; @@ -1713,7 +1716,7 @@ Result DeviceImpl::createTextureResource( const int numMipMaps = desc.numMipLevels; // Calculate how large the buffer has to be - size_t bufferSize = 0; + Size bufferSize = 0; // Calculate how large an array entry is for (int j = 0; j < numMipMaps; ++j) { @@ -1747,7 +1750,7 @@ Result DeviceImpl::createTextureResource( uint8_t* dstDataStart; dstDataStart = dstData; - size_t dstSubresourceOffset = 0; + Offset dstSubresourceOffset = 0; for (int i = 0; i < arraySize; ++i) { for (Index j = 0; j < mipSizes.getCount(); ++j) @@ -1799,7 +1802,7 @@ Result DeviceImpl::createTextureResource( VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); { - size_t srcOffset = 0; + Offset srcOffset = 0; for (int i = 0; i < arraySize; ++i) { for (Index j = 0; j < mipSizes.getCount(); ++j) @@ -1875,7 +1878,7 @@ Result DeviceImpl::createBufferResource( { BufferResource::Desc desc = fixupBufferDesc(descIn); - const size_t bufferSize = desc.sizeInBytes; + const Size bufferSize = desc.sizeInBytes; VkMemoryPropertyFlags reqMemoryProperties = 0; @@ -2575,7 +2578,7 @@ Result TransientResourceHeapImpl::synchronizeAndReset() Result VKBufferHandleRAII::init( const VulkanApi& api, - size_t bufferSize, + Size bufferSize, VkBufferUsageFlags usage, VkMemoryPropertyFlags reqMemoryProperties, bool isShared, @@ -4743,8 +4746,10 @@ Result ShaderObjectImpl::getEntryPoint(UInt index, IShaderObject** outEntryPoint const void* ShaderObjectImpl::getRawData() { return m_data.getBuffer(); } +// TODO: Change size_t to Count? size_t ShaderObjectImpl::getSize() { return (size_t)m_data.getCount(); } +// TODO: Change size_t and Index to Size? Result ShaderObjectImpl::setData(ShaderOffset const& inOffset, void const* data, size_t inSize) { Index offset = inOffset.uniformOffset; @@ -4849,6 +4854,7 @@ Result ShaderObjectImpl::init(IDevice* device, ShaderObjectLayoutImpl* layout) // uniform data (which includes values from this object and // any existential-type sub-objects). // + // TODO: Change size_t to Count? size_t uniformSize = layout->getElementTypeLayout()->getSize(); if (uniformSize) { @@ -4911,11 +4917,12 @@ Result ShaderObjectImpl::init(IDevice* device, ShaderObjectLayoutImpl* layout) Result ShaderObjectImpl::_writeOrdinaryData( PipelineCommandEncoder* encoder, IBufferResource* buffer, - size_t offset, - size_t destSize, + Offset offset, + Size destSize, ShaderObjectLayoutImpl* specializedLayout) { auto src = m_data.getBuffer(); + // TODO: Change size_t to Count? auto srcSize = size_t(m_data.getCount()); SLANG_ASSERT(srcSize <= destSize); @@ -4976,8 +4983,8 @@ Result ShaderObjectImpl::_writeOrdinaryData( // layout logic does for complex cases with multiple layers of nested arrays and // structures. // - size_t subObjectRangePendingDataOffset = subObjectRangeInfo.offset.pendingOrdinaryData; - size_t subObjectRangePendingDataStride = subObjectRangeInfo.stride.pendingOrdinaryData; + Offset subObjectRangePendingDataOffset = subObjectRangeInfo.offset.pendingOrdinaryData; + Size subObjectRangePendingDataStride = subObjectRangeInfo.stride.pendingOrdinaryData; // If the range doesn't actually need/use the "pending" allocation at all, then // we need to detect that case and skip such ranges. @@ -5023,8 +5030,8 @@ void ShaderObjectImpl::writeBufferDescriptor( BindingOffset const& offset, VkDescriptorType descriptorType, BufferResourceImpl* buffer, - size_t bufferOffset, - size_t bufferSize) + Offset bufferOffset, + Size bufferSize) { auto descriptorSet = context.descriptorSets[offset.bindingSet]; @@ -5995,7 +6002,7 @@ RefPtr<BufferResource> ShaderTableImpl::createDeviceBuffer( static_cast<TransientResourceHeapImpl*>(transientHeap); IBufferResource* stagingBuffer = nullptr; - size_t stagingBufferOffset = 0; + Offset stagingBufferOffset = 0; transientHeapImpl->allocateStagingBuffer( tableSize, stagingBuffer, stagingBufferOffset, MemoryType::Upload); @@ -6268,13 +6275,13 @@ void PipelineCommandEncoder::_uploadBufferData( VkCommandBuffer commandBuffer, TransientResourceHeapImpl* transientHeap, BufferResourceImpl* buffer, - size_t offset, - size_t size, + Offset offset, + Size size, void* data) { auto& api = buffer->m_renderer->m_api; IBufferResource* stagingBuffer = nullptr; - size_t stagingBufferOffset = 0; + Offset stagingBufferOffset = 0; transientHeap->allocateStagingBuffer( size, stagingBuffer, stagingBufferOffset, MemoryType::Upload); @@ -6305,7 +6312,7 @@ void PipelineCommandEncoder::_uploadBufferData( } void PipelineCommandEncoder::uploadBufferDataImpl( - IBufferResource* buffer, size_t offset, size_t size, void* data) + IBufferResource* buffer, Offset offset, Size size, void* data) { m_vkPreCommandBuffer = m_commandBuffer->getPreCommandBuffer(); _uploadBufferData( @@ -6425,7 +6432,7 @@ void PipelineCommandEncoder::bindRenderState(VkPipelineBindPoint pipelineBindPoi } void ResourceCommandEncoder::copyBuffer( - IBufferResource* dst, size_t dstOffset, IBufferResource* src, size_t srcOffset, size_t size) + IBufferResource* dst, Offset dstOffset, IBufferResource* src, Offset srcOffset, Size size) { auto& vkAPI = m_commandBuffer->m_renderer->m_api; @@ -6450,7 +6457,7 @@ void ResourceCommandEncoder::copyBuffer( } void ResourceCommandEncoder::uploadBufferData( - IBufferResource* buffer, size_t offset, size_t size, void* data) + IBufferResource* buffer, Offset offset, Size size, void* data) { PipelineCommandEncoder::_uploadBufferData( m_commandBuffer->m_commandBuffer, @@ -6461,6 +6468,7 @@ void ResourceCommandEncoder::uploadBufferData( data); } +// TODO: Change size_t to Count? void ResourceCommandEncoder::textureBarrier( size_t count, ITextureResource* const* textures, ResourceState src, ResourceState dst) { @@ -6503,6 +6511,7 @@ void ResourceCommandEncoder::textureBarrier( barriers.getArrayView().getBuffer()); } +// TODO: Change size_t to Count? void ResourceCommandEncoder::bufferBarrier( size_t count, IBufferResource* const* buffers, ResourceState src, ResourceState dst) { @@ -6638,6 +6647,7 @@ void ResourceCommandEncoder::copyTexture( ®ion); } +// TODO: Change size_t to Count? void ResourceCommandEncoder::uploadTextureData( ITextureResource* dst, SubresourceRange subResourceRange, @@ -6655,7 +6665,7 @@ void ResourceCommandEncoder::uploadTextureData( VkCommandBuffer commandBuffer = m_commandBuffer->m_commandBuffer; auto& desc = *dstImpl->getDesc(); // Calculate how large the buffer has to be - size_t bufferSize = 0; + Size bufferSize = 0; // Calculate how large an array entry is for (uint32_t j = subResourceRange.mipLevel; j < subResourceRange.mipLevel + subResourceRange.mipLevelCount; @@ -6675,7 +6685,7 @@ void ResourceCommandEncoder::uploadTextureData( bufferSize *= subResourceRange.layerCount; IBufferResource* uploadBuffer = nullptr; - size_t uploadBufferOffset = 0; + Offset uploadBufferOffset = 0; m_commandBuffer->m_transientHeap->allocateStagingBuffer( bufferSize, uploadBuffer, uploadBufferOffset, MemoryType::Upload); @@ -6689,7 +6699,7 @@ void ResourceCommandEncoder::uploadTextureData( uint8_t* dstDataStart; dstDataStart = dstData; - size_t dstSubresourceOffset = 0; + Offset dstSubresourceOffset = 0; for (uint32_t i = 0; i < subResourceRange.layerCount; ++i) { for (Index j = 0; j < mipSizes.getCount(); ++j) @@ -6732,7 +6742,7 @@ void ResourceCommandEncoder::uploadTextureData( uploadBuffer->unmap(nullptr); } { - size_t srcOffset = uploadBufferOffset; + Offset srcOffset = uploadBufferOffset; for (uint32_t i = 0; i < subResourceRange.layerCount; ++i) { for (Index j = 0; j < mipSizes.getCount(); ++j) @@ -7050,9 +7060,9 @@ void ResourceCommandEncoder::resolveQuery( void ResourceCommandEncoder::copyTextureToBuffer( IBufferResource* dst, - size_t dstOffset, - size_t dstSize, - size_t dstRowStride, + Offset dstOffset, + Size dstSize, + Size dstRowStride, ITextureResource* src, ResourceState srcState, SubresourceRange srcSubresource, diff --git a/tools/gfx/vulkan/render-vk.h b/tools/gfx/vulkan/render-vk.h index ca18f50aa..756cc6e8c 100644 --- a/tools/gfx/vulkan/render-vk.h +++ b/tools/gfx/vulkan/render-vk.h @@ -104,11 +104,11 @@ public: ITextureResource* texture, ResourceState state, ISlangBlob** outBlob, - size_t* outRowPitch, - size_t* outPixelSize) override; + Size* outRowPitch, + Size* outPixelSize) override; virtual SLANG_NO_THROW SlangResult SLANG_MCALL readBufferResource( - IBufferResource* buffer, size_t offset, size_t size, ISlangBlob** outBlob) override; + IBufferResource* buffer, Offset offset, Size size, ISlangBlob** outBlob) override; virtual SLANG_NO_THROW Result SLANG_MCALL getAccelerationStructurePrebuildInfo( const IAccelerationStructure::BuildInputs& buildInputs, @@ -118,9 +118,9 @@ public: const IAccelerationStructure::CreateDesc& desc, IAccelerationStructure** outView) override; virtual SLANG_NO_THROW Result SLANG_MCALL getTextureAllocationInfo( - const ITextureResource::Desc& desc, size_t* outSize, size_t* outAlignment) override; + const ITextureResource::Desc& desc, Size* outSize, Size* outAlignment) override; - virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(size_t* outAlignment) override; + virtual SLANG_NO_THROW Result SLANG_MCALL getTextureRowAlignment(Size* outAlignment) override; virtual SLANG_NO_THROW Result SLANG_MCALL createFence(const IFence::Desc& desc, IFence** outFence) override; @@ -146,7 +146,7 @@ public: VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, - size_t location, + Size location, // TODO: Is "location" still needed for this function? int32_t msgCode, const char* pLayerPrefix, const char* pMsg); @@ -155,7 +155,7 @@ public: VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, - size_t location, + Size location, // TODO: Is "location" still needed? Calls handleDebugMessage() which doesn't use it int32_t msgCode, const char* pLayerPrefix, const char* pMsg, @@ -222,7 +222,7 @@ public: /// Initialize a buffer with specified size, and memory props Result init( const VulkanApi& api, - size_t bufferSize, + Size bufferSize, VkBufferUsageFlags usage, VkMemoryPropertyFlags reqMemoryProperties, bool isShared = false, @@ -1073,11 +1073,11 @@ public: VkCommandBuffer commandBuffer, TransientResourceHeapImpl* transientHeap, BufferResourceImpl* buffer, - size_t offset, - size_t size, + Offset offset, + Size size, void* data); - void uploadBufferDataImpl(IBufferResource* buffer, size_t offset, size_t size, void* data); + void uploadBufferDataImpl(IBufferResource* buffer, Offset offset, Size size, void* data); Result bindRootShaderObjectImpl(VkPipelineBindPoint bindPoint); @@ -1132,8 +1132,10 @@ public: virtual SLANG_NO_THROW const void* SLANG_MCALL getRawData() override; + // TODO: Change size_t to Count? virtual SLANG_NO_THROW size_t SLANG_MCALL getSize() override; + // TODO: Changed size_t to Size? inSize assigned to an Index variable inside implementation virtual SLANG_NO_THROW Result SLANG_MCALL setData(ShaderOffset const& inOffset, void const* data, size_t inSize) override; @@ -1156,8 +1158,8 @@ protected: Result _writeOrdinaryData( PipelineCommandEncoder* encoder, IBufferResource* buffer, - size_t offset, - size_t destSize, + Offset offset, + Size destSize, ShaderObjectLayoutImpl* specializedLayout); public: @@ -1169,8 +1171,8 @@ public: BindingOffset const& offset, VkDescriptorType descriptorType, BufferResourceImpl* buffer, - size_t bufferOffset, - size_t bufferSize); + Offset bufferOffset, + Size bufferSize); static void writeBufferDescriptor( RootBindingContext& context, @@ -1272,8 +1274,8 @@ public: // weak referenced. IBufferResource* m_constantBuffer = nullptr; // The offset into the transient constant buffer where the constant data starts. - size_t m_constantBufferOffset = 0; - size_t m_constantBufferSize = 0; + Offset m_constantBufferOffset = 0; + Size m_constantBufferSize = 0; /// Dirty bit tracking whether the constant buffer needs to be updated. bool m_isConstantBufferDirty = true; @@ -1386,19 +1388,19 @@ class ResourceCommandEncoder public: virtual SLANG_NO_THROW void SLANG_MCALL copyBuffer( IBufferResource* dst, - size_t dstOffset, + Offset dstOffset, IBufferResource* src, - size_t srcOffset, - size_t size) override; + Offset srcOffset, + Size size) override; virtual SLANG_NO_THROW void SLANG_MCALL - uploadBufferData(IBufferResource* buffer, size_t offset, size_t size, void* data) override; + uploadBufferData(IBufferResource* buffer, Offset offset, Size size, void* data) override; virtual SLANG_NO_THROW void SLANG_MCALL textureBarrier( - size_t count, + size_t count, // TODO: Change size_t to Count? ITextureResource* const* textures, ResourceState src, ResourceState dst) override; virtual SLANG_NO_THROW void SLANG_MCALL bufferBarrier( - size_t count, + size_t count, // TODO: Change size_t to Count? IBufferResource* const* buffers, ResourceState src, ResourceState dst) override; @@ -1426,7 +1428,7 @@ public: ITextureResource::Offset3D offset, ITextureResource::Size extend, ITextureResource::SubresourceData* subResourceData, - size_t subResourceDataCount) override; + size_t subResourceDataCount) override; // TODO: Change size_t to Count? void _clearColorImage(TextureResourceViewImpl* viewImpl, ClearValue* clearValue); @@ -1458,9 +1460,9 @@ public: virtual SLANG_NO_THROW void SLANG_MCALL copyTextureToBuffer( IBufferResource* dst, - size_t dstOffset, - size_t dstSize, - size_t dstRowStride, + Offset dstOffset, + Size dstSize, + Size dstRowStride, ITextureResource* src, ResourceState srcState, SubresourceRange srcSubresource, |
