Fix Metal 3D texture upload stride calculation

Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>
This commit is contained in:
Victor Ilyushchenko
2025-09-28 14:51:07 +03:00
committed by Sam Lantinga
parent da84d78796
commit a34d31322c

View File

@@ -1805,7 +1805,8 @@ static void METAL_UploadToTexture(
copyFromBuffer:bufferContainer->activeBuffer->handle copyFromBuffer:bufferContainer->activeBuffer->handle
sourceOffset:source->offset sourceOffset:source->offset
sourceBytesPerRow:BytesPerRow(destination->w, textureContainer->header.info.format) sourceBytesPerRow:BytesPerRow(destination->w, textureContainer->header.info.format)
sourceBytesPerImage:SDL_CalculateGPUTextureFormatSize(textureContainer->header.info.format, destination->w, destination->h, destination->d) // sourceBytesPerImage expects the stride between 2D images (slices) of a 3D texture, not the size of the entire region
sourceBytesPerImage:SDL_CalculateGPUTextureFormatSize(textureContainer->header.info.format, destination->w, destination->h, 1)
sourceSize:MTLSizeMake(destination->w, destination->h, destination->d) sourceSize:MTLSizeMake(destination->w, destination->h, destination->d)
toTexture:metalTexture->handle toTexture:metalTexture->handle
destinationSlice:destination->layer destinationSlice:destination->layer