dEQP-VK.api.buffer_memory_requirements.create_sparse_binding.ext_mem_flags_included.method2.size_req_acc_struct_usage_bits
dEQP-VK.api.buffer_memory_requirements.create_sparse_binding.ext_mem_flags_included.method2.video_usage_bits
dEQP-VK.api.buffer_memory_requirements.create_sparse_binding.ext_mem_flags_included.method2.size_req_video_usage_bits
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.64_offset_16
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.65536_offset_1024
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.64_offset_24
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer.basic.max_size
dEQP-VK.api.buffer.basic.max_size_sparse
dEQP-VK.api.buffer.invalid_buffer_features.vk_format_s8_uint
dEQP-VK.api.buffer_memory_requirements.create_sparse_binding.ext_mem_flags_included.method2.size_req_video_usage_bits
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer.suballocation.transfer_src.transfer_dst.uniform_texel.storage_texel.uniform.storage.index.vertex.indirect.create.zero
dEQP-VK.api.buffer.suballocation.transfer_src.transfer_dst.uniform_texel.storage_texel.uniform.storage.index.vertex.indirect.create.binding
dEQP-VK.api.buffer.suballocation.transfer_src.transfer_dst.uniform_texel.storage_texel.uniform.storage.index.vertex.indirect.create.binding_residency
*//*--------------------------------------------------------------------*/
#include "vkMemUtil.hpp"
+#include "deDefs.h"
#include "vkStrUtil.hpp"
#include "vkQueryUtil.hpp"
#include "vkRef.hpp"
class SimpleAllocation : public Allocation
{
public:
- SimpleAllocation (Move<VkDeviceMemory> mem, MovePtr<HostPtr> hostPtr);
+ SimpleAllocation (Move<VkDeviceMemory> mem, MovePtr<HostPtr> hostPtr, size_t offset);
virtual ~SimpleAllocation (void);
private:
const UniquePtr<HostPtr> m_hostPtr;
};
-SimpleAllocation::SimpleAllocation (Move<VkDeviceMemory> mem, MovePtr<HostPtr> hostPtr)
- : Allocation (*mem, (VkDeviceSize)0, hostPtr ? hostPtr->get() : DE_NULL)
+SimpleAllocation::SimpleAllocation (Move<VkDeviceMemory> mem, MovePtr<HostPtr> hostPtr, size_t offset)
+ : Allocation (*mem, offset, hostPtr ? hostPtr->get() : DE_NULL)
, m_memHolder (mem)
, m_hostPtr (hostPtr)
{
{
}
-SimpleAllocator::SimpleAllocator (const DeviceInterface& vk, VkDevice device, const VkPhysicalDeviceMemoryProperties& deviceMemProps)
+SimpleAllocator::SimpleAllocator (const DeviceInterface& vk, VkDevice device, const VkPhysicalDeviceMemoryProperties& deviceMemProps, size_t offset)
: m_vk (vk)
, m_device (device)
, m_memProps(deviceMemProps)
+ , m_offset (offset)
{
}
MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryAllocateInfo& allocInfo, VkDeviceSize alignment)
{
- DE_UNREF(alignment);
-
- Move<VkDeviceMemory> mem = allocateMemory(m_vk, m_device, &allocInfo);
+ // Align the offset to the requirements.
+ size_t offset = deAlignSize(m_offset, static_cast<size_t>(alignment));
+ VkMemoryAllocateInfo info = allocInfo;
+ info.allocationSize += offset;
+ Move<VkDeviceMemory> mem = allocateMemory(m_vk, m_device, &info);
MovePtr<HostPtr> hostPtr;
- if (isHostVisibleMemory(m_memProps, allocInfo.memoryTypeIndex))
- hostPtr = MovePtr<HostPtr>(new HostPtr(m_vk, m_device, *mem, 0u, allocInfo.allocationSize, 0u));
+ if (isHostVisibleMemory(m_memProps, info.memoryTypeIndex))
+ hostPtr = MovePtr<HostPtr>(new HostPtr(m_vk, m_device, *mem, offset, info.allocationSize, 0u));
- return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr));
+ return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr, offset));
}
MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryRequirements& memReqs, MemoryRequirement requirement)
{
const deUint32 memoryTypeNdx = selectMatchingMemoryType(m_memProps, memReqs.memoryTypeBits, requirement);
+ // Align the offset to the requirements.
+ size_t offset = deAlignSize(m_offset, static_cast<size_t>(memReqs.alignment));
+
VkMemoryAllocateInfo allocInfo =
{
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType;
DE_NULL, // const void* pNext;
- memReqs.size, // VkDeviceSize allocationSize;
+ memReqs.size + offset, // VkDeviceSize allocationSize;
memoryTypeNdx, // deUint32 memoryTypeIndex;
};
if (requirement & MemoryRequirement::HostVisible)
{
DE_ASSERT(isHostVisibleMemory(m_memProps, allocInfo.memoryTypeIndex));
- hostPtr = MovePtr<HostPtr>(new HostPtr(m_vk, m_device, *mem, 0u, allocInfo.allocationSize, 0u));
+ hostPtr = MovePtr<HostPtr>(new HostPtr(m_vk, m_device, *mem, offset, allocInfo.allocationSize, 0u));
}
- return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr));
+ return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr, offset));
}
MovePtr<Allocation> allocateExtended (const InstanceInterface& vki,
hostPtr = MovePtr<HostPtr>(new HostPtr(vkd, device, *mem, 0u, allocInfo.allocationSize, 0u));
}
- return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr));
+ return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr, 0u));
}
de::MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki,
class SimpleAllocator : public Allocator
{
public:
- SimpleAllocator (const DeviceInterface& vk, VkDevice device, const VkPhysicalDeviceMemoryProperties& deviceMemProps);
+ SimpleAllocator (const DeviceInterface& vk, VkDevice device, const VkPhysicalDeviceMemoryProperties& deviceMemProps, size_t offset = 0);
de::MovePtr<Allocation> allocate (const VkMemoryAllocateInfo& allocInfo, VkDeviceSize alignment);
de::MovePtr<Allocation> allocate (const VkMemoryRequirements& memRequirements, MemoryRequirement requirement);
const DeviceInterface& m_vk;
const VkDevice m_device;
const VkPhysicalDeviceMemoryProperties m_memProps;
+ size_t m_offset;
};
de::MovePtr<Allocation> allocateExtended (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkMemoryRequirements& memReqs, const MemoryRequirement requirement, const void* pNext);
#include "vkBuilderUtil.hpp"
#include "tcuCommandLine.hpp"
#include "deUniquePtr.hpp"
-#include "deSharedPtr.hpp"
#include "deRandom.hpp"
+#include "deSTLUtil.hpp"
#include <vector>
using namespace vk;
using de::UniquePtr;
using de::MovePtr;
-using de::SharedPtr;
using namespace vkt::ExternalMemoryUtil;
-template<typename T>
-inline const T* dataOrNullPtr(const std::vector<T>& v)
-{
- return (v.empty() ? DE_NULL : &v[0]);
-}
-
-template<typename T>
-inline T* dataOrNullPtr(std::vector<T>& v)
-{
- return (v.empty() ? DE_NULL : &v[0]);
-}
-
//! Common test data related to the device
struct WorkingDevice
{
}
// We create a custom device because we don't want to always use the universal queue.
-void createDeviceWithExtension (Context& context, WorkingDevice& wd, VkQueueFlagBits testQueue, bool hostPtr)
+void createDeviceWithExtension (Context& context, WorkingDevice& wd, VkQueueFlagBits testQueue, bool hostPtr, size_t offset)
{
const PlatformInterface& vkp = context.getPlatformInterface();
const VkInstance instance = context.getInstance();
0u, // deUint32 enabledLayerCount;
DE_NULL, // const char* const* ppEnabledLayerNames;
static_cast<deUint32>(cstrDeviceExtensions.size()), // deUint32 enabledExtensionCount;
- dataOrNullPtr(cstrDeviceExtensions), // const char* const* ppEnabledExtensionNames;
+ de::dataOrNull(cstrDeviceExtensions), // const char* const* ppEnabledExtensionNames;
&context.getDeviceFeatures(), // const VkPhysicalDeviceFeatures* pEnabledFeatures;
};
wd.logicalDevice = createCustomDevice(useValidation, vkp, instance, instanceDriver, physicalDevice, &deviceInfo);
wd.deviceDriver = MovePtr<DeviceDriver>(new DeviceDriver(vkp, instance, *wd.logicalDevice));
- wd.allocator = MovePtr<Allocator>(new SimpleAllocator(*wd.deviceDriver, *wd.logicalDevice, getPhysicalDeviceMemoryProperties(instanceDriver, physicalDevice)));
+ wd.allocator = MovePtr<Allocator>(new SimpleAllocator(*wd.deviceDriver, *wd.logicalDevice, getPhysicalDeviceMemoryProperties(instanceDriver, physicalDevice), offset));
wd.queueFamilyIdx = queueCreateInfo.queueFamilyIndex;
wd.queue = getDeviceQueue(*wd.deviceDriver, *wd.logicalDevice, wd.queueFamilyIdx, 0u);
wd.queueProps = queueFamilyProperties[queueCreateInfo.queueFamilyIndex];
}
-bool checkMarkerBuffer (const DeviceInterface& vk, VkDevice device, const MovePtr<vk::Allocation>& memory, size_t offset,
+bool checkMarkerBuffer (const DeviceInterface& vk, VkDevice device, const MovePtr<vk::Allocation>& memory,
const std::vector<deUint32>& expected)
{
- invalidateMappedMemoryRange(vk, device, memory->getMemory(), memory->getOffset(), VK_WHOLE_SIZE);
+ invalidateAlloc(vk, device, *memory);
- const deUint32* data = reinterpret_cast<const deUint32*>(static_cast<const char*>(memory->getHostPtr()) + offset);
+ const deUint32* data = reinterpret_cast<const deUint32*>(static_cast<const char*>(memory->getHostPtr()));
for (size_t i = 0; i < expected.size(); ++i)
{
VkPipelineStageFlagBits stage; // Pipeline stage where any marker writes for this test case occur in
deUint32 size; // Number of buffer markers
bool useHostPtr; // Whether to use host pointer as backing buffer memory
+ size_t offset; // The offset of the data in the buffer
};
deUint32 chooseExternalMarkerMemoryType(const DeviceInterface& vkd,
allowedBits &= props.memoryTypeBits;
}
- deUint32 index = 0;
-
- while ((index < VK_MAX_MEMORY_TYPES) && ((allowedBits & 0x1) == 0))
- {
- index++;
- allowedBits >>= 1;
- }
-
- return index;
+ return deInt32BitScan((deInt32 *)&allowedBits);
}
class ExternalHostAllocation : public Allocation
{
public:
- ExternalHostAllocation(Move<VkDeviceMemory> mem, void* hostPtr) : Allocation(*mem, (VkDeviceSize)0, hostPtr), m_memHolder(mem) { }
+ ExternalHostAllocation(Move<VkDeviceMemory> mem, void* hostPtr, size_t offset) : Allocation(*mem, offset, hostPtr), m_memHolder(mem) { }
private:
const Unique<VkDeviceMemory> m_memHolder;
};
void createMarkerBufferMemory(const InstanceInterface& vki,
- const DeviceInterface& vkd,
- VkPhysicalDevice physicalDevice,
- VkDevice device,
- VkBuffer buffer,
- MovePtr<Allocator>& allocator,
- const MemoryRequirement allocRequirement,
- bool externalHostPtr,
- MovePtr<ExternalHostMemory>& hostMemory,
- MovePtr<Allocation>& deviceMemory)
+ const DeviceInterface& vkd,
+ VkPhysicalDevice physicalDevice,
+ VkDevice device,
+ VkBuffer buffer,
+ size_t bufferOffset,
+ MovePtr<Allocator>& allocator,
+ const MemoryRequirement allocRequirement,
+ bool externalHostPtr,
+ MovePtr<ExternalHostMemory>& hostMemory,
+ MovePtr<Allocation>& deviceMemory)
{
VkMemoryRequirements memReqs = getBufferMemoryRequirements(vkd, device, buffer);
const VkExternalMemoryHandleTypeFlagBits externalType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
const VkPhysicalDeviceExternalMemoryHostPropertiesEXT hostProps = getPhysicalDeviceExternalMemoryHostProperties(vki, physicalDevice);
-
- hostMemory = MovePtr<ExternalHostMemory>(new ExternalHostMemory(memReqs.size, hostProps.minImportedHostPointerAlignment));
+ bufferOffset = deAlignSize(bufferOffset, static_cast<size_t>(memReqs.alignment));
+ hostMemory = MovePtr<ExternalHostMemory>(new ExternalHostMemory(memReqs.size + bufferOffset, hostProps.minImportedHostPointerAlignment));
const deUint32 externalMemType = chooseExternalMarkerMemoryType(vkd, device, externalType, memReqs.memoryTypeBits, hostMemory);
externalMemType
};
- deviceMemory = MovePtr<Allocation>(new ExternalHostAllocation(allocateMemory(vkd, device, &info), hostMemory->data));
+ deviceMemory = MovePtr<Allocation>(new ExternalHostAllocation(allocateMemory(vkd, device, &info),
+ (((deUint8 *)hostMemory->data) + bufferOffset),
+ bufferOffset));
}
VK_CHECK(vkd.bindBufferMemory(device, buffer, deviceMemory->getMemory(), deviceMemory->getOffset()));
{
WorkingDevice wd;
- createDeviceWithExtension(context, wd, params.testQueue, params.useHostPtr);
+ createDeviceWithExtension(context, wd, params.testQueue, params.useHostPtr, params.offset);
const DeviceInterface& vk(*wd.deviceDriver);
const VkDevice device(*wd.logicalDevice);
MovePtr<Allocation> markerMemory;
createMarkerBufferMemory(context.getInstanceInterface(), vk, context.getPhysicalDevice(), device,
- *markerBuffer, wd.allocator, MemoryRequirement::HostVisible, params.useHostPtr, hostMemory, markerMemory);
+ *markerBuffer, params.offset, wd.allocator, MemoryRequirement::HostVisible, params.useHostPtr, hostMemory, markerMemory);
de::Random rng(12345 ^ params.size);
std::vector<deUint32> expected(params.size);
expected[i] = rng.getUint32();
deMemcpy(markerMemory->getHostPtr(), &expected[0], static_cast<size_t>(markerBufferSize));
- flushMappedMemoryRange(vk, device, markerMemory->getMemory(), markerMemory->getOffset(), VK_WHOLE_SIZE);
+ flushAlloc(vk, device, *markerMemory);
const Unique<VkCommandPool> cmdPool(createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, wd.queueFamilyIdx));
const Unique<VkCommandBuffer> cmdBuffer(allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
submitCommandsAndWait(vk, device, wd.queue, *cmdBuffer);
- if (!checkMarkerBuffer(vk, device, markerMemory, 0, expected))
+ if (!checkMarkerBuffer(vk, device, markerMemory, expected))
return tcu::TestStatus::fail("Some marker values were incorrect");
return tcu::TestStatus::pass("Pass");
{
WorkingDevice wd;
- createDeviceWithExtension(context, wd, params.testQueue, params.useHostPtr);
+ createDeviceWithExtension(context, wd, params.testQueue, params.useHostPtr, params.offset);
const DeviceInterface& vk(*wd.deviceDriver);
const VkDevice device(*wd.logicalDevice);
MovePtr<Allocation> markerMemory;
createMarkerBufferMemory(context.getInstanceInterface(), vk, context.getPhysicalDevice(), device,
- *markerBuffer, wd.allocator, MemoryRequirement::HostVisible, params.useHostPtr, hostMemory, markerMemory);
+ *markerBuffer, params.offset, wd.allocator, MemoryRequirement::HostVisible, params.useHostPtr, hostMemory, markerMemory);
de::Random rng(12345 ^ params.size);
std::vector<deUint32> expected(params.size);
expected[i] = 0;
deMemcpy(markerMemory->getHostPtr(), &expected[0], static_cast<size_t>(markerBufferSize));
- flushMappedMemoryRange(vk, device, markerMemory->getMemory(), markerMemory->getOffset(), VK_WHOLE_SIZE);
+
+ flushAlloc(vk, device, *markerMemory);
const Unique<VkCommandPool> cmdPool(createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, wd.queueFamilyIdx));
const Unique<VkCommandBuffer> cmdBuffer(allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
submitCommandsAndWait(vk, device, wd.queue, *cmdBuffer);
- if (!checkMarkerBuffer(vk, device, markerMemory, 0, expected))
+ if (!checkMarkerBuffer(vk, device, markerMemory, expected))
return tcu::TestStatus::fail("Some marker values were incorrect");
return tcu::TestStatus::pass("Pass");
{
WorkingDevice wd;
- createDeviceWithExtension(context, wd, params.base.testQueue, params.base.useHostPtr);
+ createDeviceWithExtension(context, wd, params.base.testQueue, params.base.useHostPtr, params.base.offset);
VkBufferUsageFlags usageFlags = VK_BUFFER_USAGE_TRANSFER_DST_BIT;
MovePtr<Allocation> markerMemory;
createMarkerBufferMemory(context.getInstanceInterface(), vk, context.getPhysicalDevice(), device,
- *markerBuffer, wd.allocator, MemoryRequirement::HostVisible, params.base.useHostPtr, hostMemory, markerMemory);
+ *markerBuffer, params.base.offset, wd.allocator, MemoryRequirement::HostVisible, params.base.useHostPtr, hostMemory, markerMemory);
de::Random rng(size ^ params.base.size);
std::vector<deUint32> expected(params.base.size, 0);
DE_NULL, // const void* pNext;
(VkPipelineCreateFlags)0, // VkPipelineCreateFlags flags;
static_cast<deUint32>(shaderStages.size()), // deUint32 stageCount;
- dataOrNullPtr(shaderStages), // const VkPipelineShaderStageCreateInfo* pStages;
+ de::dataOrNull(shaderStages), // const VkPipelineShaderStageCreateInfo* pStages;
&vertexInputStateInfo, // const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
&pipelineInputAssemblyStateInfo, // const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
DE_NULL, // const VkPipelineTessellationStateCreateInfo* pTessellationState;
}
deMemcpy(markerMemory->getHostPtr(), &expected[0], static_cast<size_t>(markerBufferSize));
- flushMappedMemoryRange(vk, device, markerMemory->getMemory(), markerMemory->getOffset(), VK_WHOLE_SIZE);
+ flushAlloc(vk, device, *markerMemory);
const Unique<VkCommandPool> cmdPool(createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, wd.queueFamilyIdx));
const Unique<VkCommandBuffer> cmdBuffer(allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
}
deMemcpy(markerMemory->getHostPtr(), &expected[0], static_cast<size_t>(markerBufferSize));
- flushMappedMemoryRange(vk, device, markerMemory->getMemory(), markerMemory->getOffset(), VK_WHOLE_SIZE);
+ flushAlloc(vk, device, *markerMemory);
deUint32 writeStages = 0;
deUint32 writeAccess = 0;
submitCommandsAndWait(vk, device, wd.queue, *cmdBuffer);
- if (!checkMarkerBuffer(vk, device, markerMemory, 0, expected))
+ if (!checkMarkerBuffer(vk, device, markerMemory, expected))
return tcu::TestStatus::fail("Some marker values were incorrect");
return tcu::TestStatus::pass("Pass");
context.requireDeviceFunctionality("VK_AMD_buffer_marker");
}
+std::string getTestCaseName(const std::string base, size_t offset)
+{
+ if (offset == 0)
+ return base;
+ return base + "_offset_" + std::to_string(offset);
+}
+
tcu::TestCaseGroup* createBufferMarkerTestsInGroup(tcu::TestContext& testCtx)
{
tcu::TestCaseGroup* root = (new tcu::TestCaseGroup(testCtx, "buffer_marker", "AMD_buffer_marker Tests"));
tcu::TestCaseGroup* sequentialGroup = (new tcu::TestCaseGroup(testCtx, "sequential", "Buffer marker tests for sequentially writing"));
base.size = 4;
+ base.offset = 0;
addFunctionCase(sequentialGroup, "4", "Writes 4 sequential marker values into a buffer", checkBufferMarkerSupport, bufferMarkerSequential, base);
base.size = 64;
+ base.offset = 0;
addFunctionCase(sequentialGroup, "64", "Writes 64 sequential marker values into a buffer", checkBufferMarkerSupport, bufferMarkerSequential, base);
+ base.offset = 16;
+
+ addFunctionCase(sequentialGroup, getTestCaseName("64", base.offset), "Writes 64 sequential marker values into a buffer offset by 16", checkBufferMarkerSupport, bufferMarkerSequential, base);
+
base.size = 65536;
+ base.offset = 0;
addFunctionCase(sequentialGroup, "65536", "Writes 65536 sequential marker values into a buffer", checkBufferMarkerSupport, bufferMarkerSequential, base);
+ base.offset = 1024;
+
+ addFunctionCase(sequentialGroup, getTestCaseName("65536", base.offset), "Writes 65536 sequential marker values into a buffer offset by 1024", checkBufferMarkerSupport, bufferMarkerSequential, base);
+
+ base.offset = 0;
stageGroup->addChild(sequentialGroup);
}
base.size = 64;
addFunctionCase(overwriteGroup, "64", "Randomly overwrites markers values to a 64-size buffer", checkBufferMarkerSupport, bufferMarkerOverwrite, base);
+ base.offset = 24;
+
+ addFunctionCase(overwriteGroup, getTestCaseName("64", base.offset), "Randomly overwrites markers values to a 64-size buffer at offset 24", checkBufferMarkerSupport, bufferMarkerOverwrite, base);
+
+ base.offset = 0;
stageGroup->addChild(overwriteGroup);
}
tcu::TestCaseGroup* memoryDepGroup = (new tcu::TestCaseGroup(testCtx, "memory_dep", "Buffer marker tests for memory dependencies between marker writes and other operations"));
MemoryDepParams params;
+ size_t offsets[] = { 0, 24 };
deMemset(¶ms, 0, sizeof(params));
- params.base = base;
- params.base.size = 128;
+ for (size_t offsetIdx = 0; offsetIdx < de::arrayLength(offsets); offsetIdx++) {
+ params.base = base;
+ params.base.size = 128;
+ params.base.offset = offsets[offsetIdx];
- if (params.base.testQueue == VK_QUEUE_GRAPHICS_BIT)
- {
- params.method = MEMORY_DEP_DRAW;
+ if (params.base.testQueue == VK_QUEUE_GRAPHICS_BIT)
+ {
+ params.method = MEMORY_DEP_DRAW;
- addFunctionCaseWithPrograms(memoryDepGroup, "draw", "Test memory dependencies between marker writes and draws", checkBufferMarkerSupport, initMemoryDepPrograms, bufferMarkerMemoryDep, params);
- }
+ addFunctionCaseWithPrograms(memoryDepGroup, getTestCaseName("draw", params.base.offset), "Test memory dependencies between marker writes and draws", checkBufferMarkerSupport, initMemoryDepPrograms, bufferMarkerMemoryDep, params);
+ }
- if (params.base.testQueue != VK_QUEUE_TRANSFER_BIT)
- {
- params.method = MEMORY_DEP_DISPATCH;
+ if (params.base.testQueue != VK_QUEUE_TRANSFER_BIT)
+ {
+ params.method = MEMORY_DEP_DISPATCH;
- addFunctionCaseWithPrograms(memoryDepGroup, "dispatch", "Test memory dependencies between marker writes and compute dispatches", checkBufferMarkerSupport, initMemoryDepPrograms, bufferMarkerMemoryDep, params);
- }
+ addFunctionCaseWithPrograms(memoryDepGroup, getTestCaseName("dispatch", params.base.offset), "Test memory dependencies between marker writes and compute dispatches", checkBufferMarkerSupport, initMemoryDepPrograms, bufferMarkerMemoryDep, params);
+ }
- params.method = MEMORY_DEP_COPY;
+ params.method = MEMORY_DEP_COPY;
- addFunctionCaseWithPrograms(memoryDepGroup, "buffer_copy", "Test memory dependencies between marker writes and buffer copies", checkBufferMarkerSupport, initMemoryDepPrograms, bufferMarkerMemoryDep, params);
+ addFunctionCaseWithPrograms(memoryDepGroup, getTestCaseName("buffer_copy", params.base.offset), "Test memory dependencies between marker writes and buffer copies", checkBufferMarkerSupport, initMemoryDepPrograms, bufferMarkerMemoryDep, params);
+ }
stageGroup->addChild(memoryDepGroup);
}
dEQP-VK.api.buffer_memory_requirements.create_sparse_binding.ext_mem_flags_included.method2.size_req_video_usage_bits
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.dispatch
dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.dispatch_offset_24
+dEQP-VK.api.buffer_marker.compute.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.external_host_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.default_mem.top_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.4
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.64_offset_16
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.65536
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.sequential.65536_offset_1024
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.1
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.4
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.64
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.overwrite.64_offset_24
dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.memory_dep.buffer_copy
+dEQP-VK.api.buffer_marker.transfer.default_mem.bottom_of_pipe.memory_dep.buffer_copy_offset_24
dEQP-VK.api.buffer.suballocation.transfer_src.transfer_dst.uniform_texel.storage_texel.uniform.storage.index.vertex.indirect.create.zero
dEQP-VK.api.buffer.suballocation.transfer_src.transfer_dst.uniform_texel.storage_texel.uniform.storage.index.vertex.indirect.create.binding
dEQP-VK.api.buffer.suballocation.transfer_src.transfer_dst.uniform_texel.storage_texel.uniform.storage.index.vertex.indirect.create.binding_residency