From 9141d25d08d53c203f8ac5a9c5937a41e1d83d02 Mon Sep 17 00:00:00 2001 From: Pyry Haulos Date: Tue, 27 Sep 2016 15:49:46 -0700 Subject: [PATCH] Fix alignment issues in uploading image data in ShaderExecutor Fixes #485 Change-Id: If04aebab19fb25ef26b51b4af86e718004438d82 --- .../modules/vulkan/shaderexecutor/vktShaderExecutor.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp index 1f09cbd..977ba41 100644 --- a/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp +++ b/external/vulkancts/modules/vulkan/shaderexecutor/vktShaderExecutor.cpp @@ -3149,7 +3149,8 @@ void ShaderExecutor::uploadImage (const VkDevice& vkDevice, const VkImageAspectFlags aspectMask, VkImage destImage) { - deUint32 textureSize = texSize.x() * texSize.y() * texSize.z() * texFormat.getPixelSize(); + const deUint32 unalignedTextureSize = texSize.x() * texSize.y() * texSize.z() * texFormat.getPixelSize(); + const deUint32 alignedTextureSize = deAlign32(unalignedTextureSize, 4u); deUint32 bufferSize; Move buffer; de::MovePtr bufferAlloc; @@ -3159,7 +3160,7 @@ void ShaderExecutor::uploadImage (const VkDevice& vkDevice, std::vector levelDataSizes; // Calculate buffer size - bufferSize = arraySize * textureSize; + bufferSize = arraySize * alignedTextureSize; // Create source buffer { @@ -3305,7 +3306,7 @@ void ShaderExecutor::uploadImage (const VkDevice& vkDevice, }; copyRegions.push_back(layerRegion); - layerDataOffset += textureSize; + layerDataOffset += alignedTextureSize; } } @@ -3320,7 +3321,7 @@ void ShaderExecutor::uploadImage (const VkDevice& vkDevice, tcu::PixelBufferAccess destAccess (texFormat, texSize, destPtr + levelOffset); tcu::copy(destAccess, access); - levelOffset += textureSize; + levelOffset += alignedTextureSize; } } -- 2.7.4