tests: Add common code
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 35b01c9..8c7b949 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -965,21 +965,22 @@
VK_ACCESS_SHADER_READ_BIT |
VK_ACCESS_COLOR_ATTACHMENT_READ_BIT |
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
- VK_MEMORY_INPUT_COPY_BIT*/, VkImageLayout image_layout) {
+ VK_MEMORY_INPUT_COPY_BIT*/, VkImageLayout image_layout,
+ VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages,
+ uint32_t srcQueueFamilyIndex, uint32_t dstQueueFamilyIndex) {
// clang-format on
// TODO: Mali device crashing with VK_REMAINING_MIP_LEVELS
const VkImageSubresourceRange subresourceRange =
subresource_range(aspect, 0, /*VK_REMAINING_MIP_LEVELS*/ 1, 0, 1 /*VK_REMAINING_ARRAY_LAYERS*/);
VkImageMemoryBarrier barrier;
- barrier = image_memory_barrier(output_mask, input_mask, Layout(), image_layout, subresourceRange);
+ barrier = image_memory_barrier(output_mask, input_mask, Layout(), image_layout, subresourceRange, srcQueueFamilyIndex,
+ dstQueueFamilyIndex);
VkImageMemoryBarrier *pmemory_barrier = &barrier;
- VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT;
- VkPipelineStageFlags dest_stages = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT;
-
// write barrier to the command buffer
- vkCmdPipelineBarrier(cmd_buf->handle(), src_stages, dest_stages, 0, 0, NULL, 0, NULL, 1, pmemory_barrier);
+ vkCmdPipelineBarrier(cmd_buf->handle(), src_stages, dest_stages, VK_DEPENDENCY_BY_REGION_BIT, 0, NULL, 0, NULL, 1,
+ pmemory_barrier);
}
void VkImageObj::SetLayout(VkCommandBufferObj *cmd_buf, VkImageAspectFlags aspect, VkImageLayout image_layout) {
@@ -1116,7 +1117,7 @@
void VkImageObj::InitNoLayout(uint32_t const width, uint32_t const height, uint32_t const mipLevels, VkFormat const format,
VkFlags const usage, VkImageTiling const requested_tiling, VkMemoryPropertyFlags const reqs,
- const std::vector<uint32_t> *queue_families) {
+ const std::vector<uint32_t> *queue_families, bool memory) {
VkFormatProperties image_fmt;
VkImageTiling tiling = VK_IMAGE_TILING_OPTIMAL;
@@ -1158,16 +1159,18 @@
Layout(imageCreateInfo.initialLayout);
imageCreateInfo.usage = usage;
-
- vk_testing::Image::init(*m_device, imageCreateInfo, reqs);
+ if (memory)
+ vk_testing::Image::init(*m_device, imageCreateInfo, reqs);
+ else
+ vk_testing::Image::init_no_mem(*m_device, imageCreateInfo);
}
void VkImageObj::Init(uint32_t const width, uint32_t const height, uint32_t const mipLevels, VkFormat const format,
VkFlags const usage, VkImageTiling const requested_tiling, VkMemoryPropertyFlags const reqs,
- const std::vector<uint32_t> *queue_families) {
- InitNoLayout(width, height, mipLevels, format, usage, requested_tiling, reqs, queue_families);
+ const std::vector<uint32_t> *queue_families, bool memory) {
+ InitNoLayout(width, height, mipLevels, format, usage, requested_tiling, reqs, queue_families, memory);
- if (!initialized()) return; // We don't have a valid handle from early stage init, and thus SetLayout will fail
+ if (!initialized() || !memory) return; // We don't have a valid handle from early stage init, and thus SetLayout will fail
VkImageLayout newLayout;
if (usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)