Commit 756b54d7 by Ben Clayton

VulkanUnitTests: Align the buffers to 0x100 for the compute tests

While not necessary for swiftshader, this is needed to compare against certain system vulkan drivers. Bug: b/128527271 Change-Id: I64c9e39659d565a0369c2989a324e4c09dbf7c02 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27773 Presubmit-Ready: Ben Clayton <headlessclayton@gmail.com> Tested-by: 's avatarBen Clayton <bclayton@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
parent 40f3d98a
...@@ -26,6 +26,14 @@ ...@@ -26,6 +26,14 @@
#include <sstream> #include <sstream>
#include <cstring> #include <cstring>
namespace
{
size_t alignUp(size_t val, size_t alignment)
{
return alignment * ((val + alignment - 1) / alignment);
}
} // anonymous namespace
class SwiftShaderVulkanTest : public testing::Test class SwiftShaderVulkanTest : public testing::Test
{ {
}; };
...@@ -206,22 +214,28 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test( ...@@ -206,22 +214,28 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test(
// struct Buffers // struct Buffers
// { // {
// uint32_t pad0[63];
// uint32_t magic0; // uint32_t magic0;
// uint32_t in[NUM_ELEMENTS]; // uint32_t in[NUM_ELEMENTS]; // Aligned to 0x100
// uint32_t magic1; // uint32_t magic1;
// uint32_t out[NUM_ELEMENTS]; // uint32_t pad1[N];
// uint32_t magic2; // uint32_t magic2;
// uint32_t out[NUM_ELEMENTS]; // Aligned to 0x100
// uint32_t magic3;
// }; // };
static constexpr uint32_t magic0 = 0x01234567; static constexpr uint32_t magic0 = 0x01234567;
static constexpr uint32_t magic1 = 0x89abcdef; static constexpr uint32_t magic1 = 0x89abcdef;
static constexpr uint32_t magic2 = 0xfedcba99; static constexpr uint32_t magic2 = 0xfedcba99;
static constexpr uint32_t magic3 = 0x87654321;
size_t numElements = GetParam().numElements; size_t numElements = GetParam().numElements;
size_t magic0Offset = 0; size_t alignElements = 0x100 / sizeof(uint32_t);
size_t magic0Offset = alignElements - 1;
size_t inOffset = 1 + magic0Offset; size_t inOffset = 1 + magic0Offset;
size_t magic1Offset = numElements + inOffset; size_t magic1Offset = numElements + inOffset;
size_t outOffset = 1 + magic1Offset; size_t magic2Offset = alignUp(magic1Offset+1, alignElements) - 1;
size_t magic2Offset = numElements + outOffset; size_t outOffset = 1 + magic2Offset;
size_t buffersTotalElements = 1 + magic2Offset; size_t magic3Offset = numElements + outOffset;
size_t buffersTotalElements = alignUp(1 + magic3Offset, alignElements);
size_t buffersSize = sizeof(uint32_t) * buffersTotalElements; size_t buffersSize = sizeof(uint32_t) * buffersTotalElements;
VkDeviceMemory memory; VkDeviceMemory memory;
...@@ -235,6 +249,7 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test( ...@@ -235,6 +249,7 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test(
buffers[magic0Offset] = magic0; buffers[magic0Offset] = magic0;
buffers[magic1Offset] = magic1; buffers[magic1Offset] = magic1;
buffers[magic2Offset] = magic2; buffers[magic2Offset] = magic2;
buffers[magic3Offset] = magic3;
for(size_t i = 0; i < numElements; i++) for(size_t i = 0; i < numElements; i++)
{ {
...@@ -338,6 +353,7 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test( ...@@ -338,6 +353,7 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test(
EXPECT_EQ(buffers[magic0Offset], magic0); EXPECT_EQ(buffers[magic0Offset], magic0);
EXPECT_EQ(buffers[magic1Offset], magic1); EXPECT_EQ(buffers[magic1Offset], magic1);
EXPECT_EQ(buffers[magic2Offset], magic2); EXPECT_EQ(buffers[magic2Offset], magic2);
EXPECT_EQ(buffers[magic3Offset], magic3);
device->UnmapMemory(memory); device->UnmapMemory(memory);
buffers = nullptr; buffers = nullptr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment