mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-17 00:47:13 +00:00
Update destinationOffset alignment to 256 in resolveQuerySet
From macOS 11+, Metal requires the minimum buffer offset alignment to be 256 bytes. We have updated the destinationOffset alignment of resolveQuerySet to 256 in SPEC. This PR is changing the implementation. Bug: dawn:940 Change-Id: Ie3c69d6a90adb76038dbac95ae2158a38da583f3 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/63762 Commit-Queue: Hao Li <hao.x.li@intel.com> Reviewed-by: Austin Eng <enga@chromium.org>
This commit is contained in:
@@ -555,7 +555,8 @@ TEST_F(ResolveQuerySetValidationTest, ResolveInvalidQuerySetAndIndexCount) {
|
||||
// Test resolve query set with invalid query set, first query and query count
|
||||
TEST_F(ResolveQuerySetValidationTest, ResolveToInvalidBufferAndOffset) {
|
||||
constexpr uint32_t kQueryCount = 4;
|
||||
constexpr uint64_t kBufferSize = kQueryCount * sizeof(uint64_t);
|
||||
constexpr uint64_t kBufferSize =
|
||||
(kQueryCount - 1) * sizeof(uint64_t) + 256 /*destinationOffset*/;
|
||||
|
||||
wgpu::QuerySet querySet = CreateQuerySet(device, wgpu::QueryType::Occlusion, kQueryCount);
|
||||
wgpu::Buffer destination = CreateBuffer(device, kBufferSize, wgpu::BufferUsage::QueryResolve);
|
||||
@@ -563,7 +564,7 @@ TEST_F(ResolveQuerySetValidationTest, ResolveToInvalidBufferAndOffset) {
|
||||
// Success
|
||||
{
|
||||
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
|
||||
encoder.ResolveQuerySet(querySet, 1, kQueryCount - 1, destination, 8);
|
||||
encoder.ResolveQuerySet(querySet, 1, kQueryCount - 1, destination, 256);
|
||||
wgpu::CommandBuffer commands = encoder.Finish();
|
||||
|
||||
wgpu::Queue queue = device.GetQueue();
|
||||
@@ -580,17 +581,17 @@ TEST_F(ResolveQuerySetValidationTest, ResolveToInvalidBufferAndOffset) {
|
||||
ASSERT_DEVICE_ERROR(encoder.Finish());
|
||||
}
|
||||
|
||||
// Fail to resolve query set to a buffer if offset is not a multiple of 8 bytes
|
||||
// Fail to resolve query set to a buffer if offset is not a multiple of 256 bytes
|
||||
{
|
||||
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
|
||||
encoder.ResolveQuerySet(querySet, 0, kQueryCount, destination, 4);
|
||||
encoder.ResolveQuerySet(querySet, 0, kQueryCount, destination, 128);
|
||||
ASSERT_DEVICE_ERROR(encoder.Finish());
|
||||
}
|
||||
|
||||
// Fail to resolve query set to a buffer if the data size overflow the buffer
|
||||
{
|
||||
wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
|
||||
encoder.ResolveQuerySet(querySet, 0, kQueryCount, destination, 8);
|
||||
encoder.ResolveQuerySet(querySet, 0, kQueryCount, destination, 256);
|
||||
ASSERT_DEVICE_ERROR(encoder.Finish());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user