diff options
| author | Yong He <yonghe@outlook.com> | 2021-12-13 12:40:52 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-13 12:40:52 -0800 |
| commit | f024d7299831c0312877e315e8d78b920aaafbaf (patch) | |
| tree | 51bf3b01e98a8a3d351a2ed313f15a614a2a5c78 /tools/gfx | |
| parent | 7c1ca35c96096cb0059f0ef23a799bf5952810c5 (diff) | |
Fixes to `uploadTextureData`. (#2058)
* Fixes to `uploadTextureData`.
* Fix,
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tools/gfx')
| -rw-r--r-- | tools/gfx/cuda/render-cuda.cpp | 2 | ||||
| -rw-r--r-- | tools/gfx/d3d12/render-d3d12.cpp | 26 | ||||
| -rw-r--r-- | tools/gfx/debug-layer.cpp | 2 | ||||
| -rw-r--r-- | tools/gfx/debug-layer.h | 2 | ||||
| -rw-r--r-- | tools/gfx/immediate-renderer-base.cpp | 2 | ||||
| -rw-r--r-- | tools/gfx/vulkan/render-vk.cpp | 2 |
6 files changed, 18 insertions, 18 deletions
diff --git a/tools/gfx/cuda/render-cuda.cpp b/tools/gfx/cuda/render-cuda.cpp index 4cd460358..a0e0e8761 100644 --- a/tools/gfx/cuda/render-cuda.cpp +++ b/tools/gfx/cuda/render-cuda.cpp @@ -1067,7 +1067,7 @@ public: ITextureResource* dst, SubresourceRange subResourceRange, ITextureResource::Offset3D offset, - ITextureResource::Offset3D extent, + ITextureResource::Size extent, ITextureResource::SubresourceData* subResourceData, size_t subResourceDataCount) override { diff --git a/tools/gfx/d3d12/render-d3d12.cpp b/tools/gfx/d3d12/render-d3d12.cpp index 25caa84a2..3daddc73f 100644 --- a/tools/gfx/d3d12/render-d3d12.cpp +++ b/tools/gfx/d3d12/render-d3d12.cpp @@ -3717,7 +3717,7 @@ public: aspectMask = (int32_t)TextureAspect::Color; while (aspectMask) { - auto aspect = (int32_t)aspectMask & (-(int32_t)aspectMask); // get lowest bit of aspectMask. + auto aspect = Math::getLowestBit((int32_t)aspectMask); aspectMask &= ~aspect; auto planeIndex = D3DUtil::getPlaneSlice(d3dFormat, (TextureAspect)aspect); for (uint32_t layer = 0; layer < dstSubresource.layerCount; layer++) @@ -3770,7 +3770,7 @@ public: ITextureResource* dst, SubresourceRange subResourceRange, ITextureResource::Offset3D offset, - ITextureResource::Offset3D extent, + ITextureResource::Size extent, ITextureResource::SubresourceData* subResourceData, size_t subResourceDataCount) override { @@ -3804,35 +3804,36 @@ public: footprint.Footprint.Format = texDesc.Format; uint32_t mipLevel = D3DUtil::getSubresourceMipLevel( subresourceIndex, dstTexture->getDesc()->numMipLevels); - if (extent.x != 0xFFFFFFFF) + if (extent.width != ITextureResource::kRemainingTextureSize) { - footprint.Footprint.Width = extent.x; + footprint.Footprint.Width = extent.width; } else { footprint.Footprint.Width = Math::Max(1, (textureSize.width >> mipLevel)) - offset.x; } - if (extent.y != 0xFFFFFFFF) + if (extent.height != ITextureResource::kRemainingTextureSize) { - footprint.Footprint.Height = extent.y; + footprint.Footprint.Height = extent.height; } else { footprint.Footprint.Height = Math::Max(1, (textureSize.height >> mipLevel)) - offset.y; } - if (extent.z != 0xFFFFFFFF) + if (extent.depth != ITextureResource::kRemainingTextureSize) { - footprint.Footprint.Depth = extent.z; + footprint.Footprint.Depth = extent.depth; } else { footprint.Footprint.Depth = Math::Max(1, (textureSize.depth >> mipLevel)) - offset.z; } + auto rowSize = (footprint.Footprint.Width + formatInfo.blockWidth - 1) / + formatInfo.blockWidth * formatInfo.blockSizeInBytes; footprint.Footprint.RowPitch = (UINT)D3DUtil::calcAligned( - footprint.Footprint.Width * (UInt)formatInfo.blockSizeInBytes, - (uint32_t)D3D12_TEXTURE_DATA_PITCH_ALIGNMENT); + rowSize, (uint32_t)D3D12_TEXTURE_DATA_PITCH_ALIGNMENT); auto bufferSize = footprint.Footprint.RowPitch * footprint.Footprint.Height * footprint.Footprint.Depth; @@ -3856,7 +3857,7 @@ public: memcpy( imageStart + row * (size_t)footprint.Footprint.RowPitch, srcData + subResourceData->strideY * row, - subResourceData->strideY); + rowSize); } } bufferImpl->m_resource.getResource()->Unmap(0, nullptr); @@ -4104,8 +4105,7 @@ public: aspectMask = (int32_t)TextureAspect::Color; while (aspectMask) { - auto aspect = (int32_t)aspectMask & - (-(int32_t)aspectMask); // get lowest bit of aspectMask. + auto aspect = Math::getLowestBit((int32_t)aspectMask); aspectMask &= ~aspect; auto planeIndex = D3DUtil::getPlaneSlice(d3dFormat, (TextureAspect)aspect); for (uint32_t layer = 0; layer < subresourceRange.baseArrayLayer; layer++) diff --git a/tools/gfx/debug-layer.cpp b/tools/gfx/debug-layer.cpp index fa7064b89..be76f8ade 100644 --- a/tools/gfx/debug-layer.cpp +++ b/tools/gfx/debug-layer.cpp @@ -1280,7 +1280,7 @@ void DebugResourceCommandEncoder::uploadTextureData( ITextureResource* dst, SubresourceRange subResourceRange, ITextureResource::Offset3D offset, - ITextureResource::Offset3D extent, + ITextureResource::Size extent, ITextureResource::SubresourceData* subResourceData, size_t subResourceDataCount) { diff --git a/tools/gfx/debug-layer.h b/tools/gfx/debug-layer.h index df38fa512..881d90341 100644 --- a/tools/gfx/debug-layer.h +++ b/tools/gfx/debug-layer.h @@ -428,7 +428,7 @@ public: ITextureResource* dst, SubresourceRange subResourceRange, ITextureResource::Offset3D offset, - ITextureResource::Offset3D extent, + ITextureResource::Size extent, ITextureResource::SubresourceData* subResourceData, size_t subResourceDataCount) override; diff --git a/tools/gfx/immediate-renderer-base.cpp b/tools/gfx/immediate-renderer-base.cpp index f302a1d89..aadc9c1dd 100644 --- a/tools/gfx/immediate-renderer-base.cpp +++ b/tools/gfx/immediate-renderer-base.cpp @@ -363,7 +363,7 @@ public: ITextureResource* dst, SubresourceRange subResourceRange, ITextureResource::Offset3D offset, - ITextureResource::Offset3D extend, + ITextureResource::Size extend, ITextureResource::SubresourceData* subResourceData, size_t subResourceDataCount) override { diff --git a/tools/gfx/vulkan/render-vk.cpp b/tools/gfx/vulkan/render-vk.cpp index 654911d4d..232f18f01 100644 --- a/tools/gfx/vulkan/render-vk.cpp +++ b/tools/gfx/vulkan/render-vk.cpp @@ -4565,7 +4565,7 @@ public: ITextureResource* dst, SubresourceRange subResourceRange, ITextureResource::Offset3D offset, - ITextureResource::Offset3D extend, + ITextureResource::Size extend, ITextureResource::SubresourceData* subResourceData, size_t subResourceDataCount) override { |
