Fixes for WebGPU
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user