diff --git a/src/gpu/SDL_sysgpu.h b/src/gpu/SDL_sysgpu.h index d8257cd622..79e1ea09a7 100644 --- a/src/gpu/SDL_sysgpu.h +++ b/src/gpu/SDL_sysgpu.h @@ -173,14 +173,9 @@ static inline Uint32 BytesPerRow( SDL_GPUTextureFormat format) { Uint32 blocksPerRow = width; + Uint32 pixelRowsPerBlock = Texture_GetBlockSize(format); - if (format == SDL_GPU_TEXTUREFORMAT_BC1_UNORM || - format == SDL_GPU_TEXTUREFORMAT_BC2_UNORM || - format == SDL_GPU_TEXTUREFORMAT_BC3_UNORM || - format == SDL_GPU_TEXTUREFORMAT_BC7_UNORM) { - blocksPerRow = (width + 3) / 4; - } - + blocksPerRow = (width + pixelRowsPerBlock - 1) / pixelRowsPerBlock; return blocksPerRow * SDL_GPUTextureFormatTexelBlockSize(format); } @@ -191,15 +186,11 @@ static inline Sint32 BytesPerImage( { Uint32 blocksPerRow = width; Uint32 blocksPerColumn = height; + Uint32 pixelRowsPerBlock = Texture_GetBlockSize(format); + Uint32 pixelColumnsPerBlock = pixelRowsPerBlock; - if (format == SDL_GPU_TEXTUREFORMAT_BC1_UNORM || - format == SDL_GPU_TEXTUREFORMAT_BC2_UNORM || - format == SDL_GPU_TEXTUREFORMAT_BC3_UNORM || - format == SDL_GPU_TEXTUREFORMAT_BC7_UNORM) { - blocksPerRow = (width + 3) / 4; - blocksPerColumn = (height + 3) / 4; - } - + blocksPerRow = (width + pixelRowsPerBlock - 1) / pixelRowsPerBlock; + blocksPerColumn = (height + pixelColumnsPerBlock - 1) / pixelColumnsPerBlock; return blocksPerRow * blocksPerColumn * SDL_GPUTextureFormatTexelBlockSize(format); }