Fixes for WebGPU

This commit is contained in:
Wojtek Figat
2026-03-04 22:00:50 +01:00
parent 2d9ca4c335
commit 414c650550
3 changed files with 11 additions and 1 deletions

View File

@@ -159,7 +159,7 @@ public:
API_FUNCTION() static int32 ComputeComponentsCount(PixelFormat format);
/// <summary>
/// Computes the amount of pixels per-axis stored in the a single block of the format (eg. 4 for BC-family). Returns 1 for uncompressed formats.
/// Computes the amount of pixels per-axis stored in a single block of the format (eg. 4 for BC-family). Returns 1 for uncompressed formats.
/// </summary>
/// <param name="format">The <see cref="PixelFormat"/>.</param>
/// <returns>The block pixels count.</returns>

View File

@@ -616,6 +616,12 @@ void GPUContextWebGPU::UpdateTexture(GPUTexture* texture, int32 arrayIndex, int3
int32 mipWidth, mipHeight, mipDepth;
texture->GetMipSize(mipIndex, mipWidth, mipHeight, mipDepth);
const int32 blockSize = PixelFormatExtensions::ComputeBlockSize(textureWebGPU->Format());
mipWidth = Math::Max(mipWidth, blockSize);
mipHeight = Math::Max(mipHeight, blockSize);
if (textureWebGPU->Dimensions() == TextureDimensions::VolumeTexture)
mipDepth = Math::Max(mipDepth, blockSize);
WGPUTexelCopyTextureInfo copyInfo = WGPU_TEXEL_COPY_TEXTURE_INFO_INIT;
copyInfo.texture = textureWebGPU->Texture;
copyInfo.mipLevel = mipIndex;

View File

@@ -325,6 +325,8 @@ WGPUComputePipeline GPUShaderProgramCSWebGPU::GetPipeline(WGPUDevice device, con
#endif
if (log)
LOG(Info, "[WebGPU] GetPipeline: '{}'", String(_name));
#else
const bool log = false;
#endif
// Create layout bind group
@@ -635,6 +637,8 @@ void GPUPipelineStateWebGPU::InitLayout(const GPUContextBindingsWebGPU& bindings
#else
const bool log = true;
#endif
#else
const bool log = false;
#endif
// Count the biggest bind group entries (for all shaders) to allocate reused memory