From 120ed2c44030b05409d5b1164a0676389dfe87c3 Mon Sep 17 00:00:00 2001 From: Dae Kim Date: Wed, 2 Dec 2015 16:07:54 +0000 Subject: [PATCH] Update pipeline tests to API version 0.210.1. --- external/vulkancts/modules/vulkan/CMakeLists.txt | 4 +- .../vulkan/pipeline/vktPipelineBlendTests.cpp | 503 +++++++++--------- .../vulkan/pipeline/vktPipelineDepthTests.cpp | 587 ++++++++++----------- .../pipeline/vktPipelineImageSamplingInstance.cpp | 562 ++++++++++---------- .../pipeline/vktPipelineImageSamplingInstance.hpp | 14 +- .../vulkan/pipeline/vktPipelineImageTests.cpp | 135 ++--- .../vulkan/pipeline/vktPipelineImageUtil.cpp | 329 +++++------- .../vulkan/pipeline/vktPipelineImageUtil.hpp | 2 - .../vulkan/pipeline/vktPipelineImageViewTests.cpp | 189 +++---- .../pipeline/vktPipelineReferenceRenderer.cpp | 102 ++-- .../pipeline/vktPipelineReferenceRenderer.hpp | 12 +- .../vulkan/pipeline/vktPipelineSamplerTests.cpp | 289 +++++----- .../vulkan/pipeline/vktPipelineStencilTests.cpp | 488 +++++++++-------- .../vulkancts/modules/vulkan/vktTestPackage.cpp | 4 +- 14 files changed, 1576 insertions(+), 1644 deletions(-) diff --git a/external/vulkancts/modules/vulkan/CMakeLists.txt b/external/vulkancts/modules/vulkan/CMakeLists.txt index fbdcc80..7140bbc 100644 --- a/external/vulkancts/modules/vulkan/CMakeLists.txt +++ b/external/vulkancts/modules/vulkan/CMakeLists.txt @@ -1,7 +1,7 @@ # dEQP-VK add_subdirectory(api) -#add_subdirectory(pipeline) +add_subdirectory(pipeline) add_subdirectory(binding_model) add_subdirectory(spirv_assembly) add_subdirectory(shaderrender) @@ -36,7 +36,7 @@ set(DEQP_VK_COMMON_LIBS vkutil glutil deqp-vk-api -# deqp-vk-pipeline + deqp-vk-pipeline deqp-vk-binding-model deqp-vk-spirv-assembly deqp-vk-shaderrender diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp index d9d029f..92bc6df 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp @@ -72,7 +72,7 @@ bool isSupportedBlendFormat (const InstanceInterface& instanceInterface, VkPhysi { VkFormatProperties formatProps; - VK_CHECK(instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps)); + instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps); return (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) && (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT); @@ -86,7 +86,7 @@ public: VkPipelineColorBlendAttachmentState getIndexedValue (deUint32 index); private: - const static VkBlend m_blendFactors[]; + const static VkBlendFactor m_blendFactors[]; const static VkBlendOp m_blendOps[]; // Pre-calculated constants @@ -108,7 +108,7 @@ public: QUAD_COUNT = 4 }; - const static VkChannelFlags s_channelWriteMasks[QUAD_COUNT]; + const static VkColorComponentFlags s_colorWriteMasks[QUAD_COUNT]; const static tcu::Vec4 s_blendConst; BlendTest (tcu::TestContext& testContext, @@ -151,8 +151,6 @@ private: Move m_vertexShaderModule; Move m_fragmentShaderModule; - Move m_vertexShader; - Move m_fragmentShader; Move m_vertexBuffer; std::vector m_vertices; @@ -161,8 +159,8 @@ private: Move m_pipelineLayout; Move m_graphicsPipelines[BlendTest::QUAD_COUNT]; - Move m_cmdPool; - Move m_cmdBuffer; + Move m_cmdPool; + Move m_cmdBuffer; Move m_fence; }; @@ -170,23 +168,23 @@ private: // BlendStateUniqueRandomIterator -const VkBlend BlendStateUniqueRandomIterator::m_blendFactors[] = +const VkBlendFactor BlendStateUniqueRandomIterator::m_blendFactors[] = { - VK_BLEND_ZERO, - VK_BLEND_ONE, - VK_BLEND_SRC_COLOR, - VK_BLEND_ONE_MINUS_SRC_COLOR, - VK_BLEND_DEST_COLOR, - VK_BLEND_ONE_MINUS_DEST_COLOR, - VK_BLEND_SRC_ALPHA, - VK_BLEND_ONE_MINUS_SRC_ALPHA, - VK_BLEND_DEST_ALPHA, - VK_BLEND_ONE_MINUS_DEST_ALPHA, - VK_BLEND_CONSTANT_COLOR, - VK_BLEND_ONE_MINUS_CONSTANT_COLOR, - VK_BLEND_CONSTANT_ALPHA, - VK_BLEND_ONE_MINUS_CONSTANT_ALPHA, - VK_BLEND_SRC_ALPHA_SATURATE + VK_BLEND_FACTOR_ZERO, + VK_BLEND_FACTOR_ONE, + VK_BLEND_FACTOR_SRC_COLOR, + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, + VK_BLEND_FACTOR_DST_COLOR, + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, + VK_BLEND_FACTOR_SRC_ALPHA, + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, + VK_BLEND_FACTOR_DST_ALPHA, + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, + VK_BLEND_FACTOR_CONSTANT_COLOR, + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, + VK_BLEND_FACTOR_CONSTANT_ALPHA, + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE }; const VkBlendOp BlendStateUniqueRandomIterator::m_blendOps[] = @@ -232,14 +230,15 @@ VkPipelineColorBlendAttachmentState BlendStateUniqueRandomIterator::getIndexedVa const VkPipelineColorBlendAttachmentState blendAttachmentState = { - true, // VkBool32 blendEnable; - m_blendFactors[srcBlendColorIndex], // VkBlend srcBlendColor; - m_blendFactors[destBlendColorIndex], // VkBlend destBlendColor; - m_blendOps[blendOpColorIndex], // VkBlendOp blendOpColor; - m_blendFactors[srcBlendAlphaIndex], // VkBlend srcBlendAlpha; - m_blendFactors[destBlendAlphaIndex], // VkBlend destBlendAlpha; - m_blendOps[blendOpAlphaIndex], // VkBlendOp blendOpAlpha; - VK_CHANNEL_R_BIT | VK_CHANNEL_G_BIT | VK_CHANNEL_B_BIT | VK_CHANNEL_A_BIT // VkChannelFlags channelWriteMask; + true, // VkBool32 blendEnable; + m_blendFactors[srcBlendColorIndex], // VkBlendFactor srcColorBlendFactor; + m_blendFactors[destBlendColorIndex], // VkBlendFactor dstColorBlendFactor; + m_blendOps[blendOpColorIndex], // VkBlendOp colorBlendOp; + m_blendFactors[srcBlendAlphaIndex], // VkBlendFactor srcAlphaBlendFactor; + m_blendFactors[destBlendAlphaIndex], // VkBlendFactor dstAlphaBlendFactor; + m_blendOps[blendOpAlphaIndex], // VkBlendOp alphaBlendOp; + VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | // VkColorComponentFlags colorWriteMask; + VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT }; return blendAttachmentState; @@ -248,12 +247,12 @@ VkPipelineColorBlendAttachmentState BlendStateUniqueRandomIterator::getIndexedVa // BlendTest -const VkChannelFlags BlendTest::s_channelWriteMasks[BlendTest::QUAD_COUNT] = { VK_CHANNEL_R_BIT | VK_CHANNEL_G_BIT, // Pair of channels: R & G - VK_CHANNEL_G_BIT | VK_CHANNEL_B_BIT, // Pair of channels: G & B - VK_CHANNEL_B_BIT | VK_CHANNEL_A_BIT, // Pair of channels: B & A - VK_CHANNEL_R_BIT | VK_CHANNEL_G_BIT | VK_CHANNEL_B_BIT | VK_CHANNEL_A_BIT }; // All channels +const VkColorComponentFlags BlendTest::s_colorWriteMasks[BlendTest::QUAD_COUNT] = { VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT, // Pair of channels: R & G + VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT, // Pair of channels: G & B + VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT, // Pair of channels: B & A + VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT }; // All channels -const tcu::Vec4 BlendTest::s_blendConst = tcu::Vec4(0.1f, 0.2f, 0.3f, 0.4f); +const tcu::Vec4 BlendTest::s_blendConst = tcu::Vec4(0.1f, 0.2f, 0.3f, 0.4f); BlendTest::BlendTest (tcu::TestContext& testContext, const std::string& name, @@ -326,21 +325,21 @@ BlendTestInstance::BlendTestInstance (Context& context, const VkImageCreateInfo colorImageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_IMAGE_TYPE_2D, // VkImageType imageType; - m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; - 1u, // deUint32 mipLevels; - 1u, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT, // VkImageUsageFlags usage; - 0u, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageCreateFlags flags; + VK_IMAGE_TYPE_2D, // VkImageType imageType; + m_colorFormat, // VkFormat format; + { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + 1u, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; m_colorImageCreateInfo = colorImageParams; @@ -355,14 +354,14 @@ BlendTestInstance::BlendTestInstance (Context& context, { const VkImageViewCreateInfo colorAttachmentViewParams = { - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_colorImage, // VkImage image; - VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; - m_colorFormat, // VkFormat format; - getFormatChannelMapping(m_colorFormat), // VkChannelMapping channels; - { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; + *m_colorImage, // VkImage image; + VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; + m_colorFormat, // VkFormat format; + getFormatComponentMapping(m_colorFormat), // VkComponentMapping components; + { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u } // VkImageSubresourceRange subresourceRange; }; m_colorAttachmentView = createImageView(vk, vkDevice, &colorAttachmentViewParams); @@ -372,17 +371,15 @@ BlendTestInstance::BlendTestInstance (Context& context, { const VkAttachmentDescription colorAttachmentDescription = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - m_colorFormat, // VkFormat format; - 1u, // deUint32 samples; - VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; - VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; - VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; - VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; - 0u, // VkAttachmentDescriptionFlags flags; + 0u, // VkAttachmentDescriptionFlags flags; + m_colorFormat, // VkFormat format; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; + VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; + VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; }; const VkAttachmentReference colorAttachmentReference = @@ -391,32 +388,25 @@ BlendTestInstance::BlendTestInstance (Context& context, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL // VkImageLayout layout; }; - const VkAttachmentReference depthStencilAttachmentReference = - { - VK_ATTACHMENT_UNUSED, // deUint32 attachment; - VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout layout; - }; - const VkSubpassDescription subpassDescription = { - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; + 0u, // VkSubpassDescriptionFlag flags; VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; - 0u, // VkSubpassDescriptionFlags flags; - 0u, // deUint32 inputCount; - DE_NULL, // constVkAttachmentReference* inputAttachments; - 1u, // deUint32 colorCount; - &colorAttachmentReference, // constVkAttachmentReference* pColorAttachments; - DE_NULL, // constVkAttachmentReference* pResolveAttachments; - depthStencilAttachmentReference, // VkAttachmentReference depthStencilAttachment; - 0u, // deUint32 preserveCount; - DE_NULL // constVkAttachmentReference* pPreserveAttachments; + 0u, // deUint32 inputAttachmentCount; + DE_NULL, // const VkAttachmentReference* pInputAttachments; + 1u, // deUint32 colorAttachmentCount; + &colorAttachmentReference, // const VkAttachmentReference* pColorAttachments; + DE_NULL, // const VkAttachmentReference* pResolveAttachments; + DE_NULL, // const VkAttachmentReference* pDepthStencilAttachment; + 0u, // deUint32 preserveAttachmentCount; + DE_NULL // const VkAttachmentReference* pPreserveAttachments; }; const VkRenderPassCreateInfo renderPassParams = { VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkRenderPassCreateFlags flags; 1u, // deUint32 attachmentCount; &colorAttachmentDescription, // const VkAttachmentDescription* pAttachments; 1u, // deUint32 subpassCount; @@ -432,80 +422,60 @@ BlendTestInstance::BlendTestInstance (Context& context, { const VkFramebufferCreateInfo framebufferParams = { - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_renderPass, // VkRenderPass renderPass; - 1u, // deUint32 attachmentCount; - &m_colorAttachmentView.get(), // const VkImageView* pAttachments; - (deUint32)m_renderSize.x(), // deUint32 width; - (deUint32)m_renderSize.y(), // deUint32 height; - 1u // deUint32 layers; + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkFramebufferCreateFlags flags; + *m_renderPass, // VkRenderPass renderPass; + 1u, // deUint32 attachmentCount; + &m_colorAttachmentView.get(), // const VkImageView* pAttachments; + (deUint32)m_renderSize.x(), // deUint32 width; + (deUint32)m_renderSize.y(), // deUint32 height; + 1u // deUint32 layers; }; m_framebuffer = createFramebuffer(vk, vkDevice, &framebufferParams); } - // Create shaders - { - m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_vert"), 0); - m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_frag"), 0); - - const VkShaderCreateInfo vertexShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_vertexShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_VERTEX // VkShaderStage stage; - }; - - const VkShaderCreateInfo fragmentShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_fragmentShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_FRAGMENT // VkShaderStage stage; - }; - - m_vertexShader = createShader(vk, vkDevice, &vertexShaderParams); - m_fragmentShader = createShader(vk, vkDevice, &fragmentShaderParams); - } - // Create pipeline layout { const VkPipelineLayoutCreateInfo pipelineLayoutParams = { - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // deUint32 descriptorSetCount; - DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; - 0u, // deUint32 pushConstantRangeCount; - DE_NULL // const VkPushConstantRange* pPushConstantRanges; + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineLayoutCreateFlags flags; + 0u, // deUint32 setLayoutCount; + DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; + 0u, // deUint32 pushConstantRangeCount; + DE_NULL // const VkPushConstantRange* pPushConstantRanges; }; m_pipelineLayout = createPipelineLayout(vk, vkDevice, &pipelineLayoutParams); } + m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_vert"), 0); + m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_frag"), 0); + // Create pipeline { - const VkPipelineShaderStageCreateInfo shaderStageParams[2] = + const VkPipelineShaderStageCreateInfo shaderStages[2] = { { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_VERTEX, // VkShaderStage stage; - *m_vertexShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_VERTEX_BIT, // VkShaderStageFlagBits stage; + *m_vertexShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; }, { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_FRAGMENT, // VkShaderStage stage; - *m_fragmentShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_FRAGMENT_BIT, // VkShaderStageFlagBits stage; + *m_fragmentShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; } }; @@ -513,7 +483,7 @@ BlendTestInstance::BlendTestInstance (Context& context, { 0u, // deUint32 binding; sizeof(Vertex4RGBA), // deUint32 strideInBytes; - VK_VERTEX_INPUT_STEP_RATE_VERTEX // VkVertexInputStepRate stepRate; + VK_VERTEX_INPUT_RATE_VERTEX // VkVertexInputStepRate inputRate; }; const VkVertexInputAttributeDescription vertexInputAttributeDescriptions[2] = @@ -522,13 +492,13 @@ BlendTestInstance::BlendTestInstance (Context& context, 0u, // deUint32 location; 0u, // deUint32 binding; VK_FORMAT_R32G32B32A32_SFLOAT, // VkFormat format; - 0u // deUint32 offsetInBytes; + 0u // deUint32 offset; }, { 1u, // deUint32 location; 0u, // deUint32 binding; VK_FORMAT_R32G32B32A32_SFLOAT, // VkFormat format; - (deUint32)(sizeof(float) * 4), // deUint32 offsetInBytes; + (deUint32)(sizeof(float) * 4), // deUint32 offset; } }; @@ -536,24 +506,26 @@ BlendTestInstance::BlendTestInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 1u, // deUint32 bindingCount; + 0u, // VkPipelineVertexInputStateCreateFlags flags; + 1u, // deUint32 vertexBindingDescriptionCount; &vertexInputBindingDescription, // const VkVertexInputBindingDescription* pVertexBindingDescriptions; - 2u, // deUint32 attributeCount; + 2u, // deUint32 vertexAttributeDescriptionCount; vertexInputAttributeDescriptions // const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; }; const VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; - false // VkBool32 primitiveRestartEnable; + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineInputAssemblyStateCreateFlags flags; + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; + false // VkBool32 primitiveRestartEnable; }; const VkViewport viewport = { - 0.0f, // float originX; - 0.0f, // float originY; + 0.0f, // float x; + 0.0f, // float y; (float)m_renderSize.x(), // float width; (float)m_renderSize.y(), // float height; 0.0f, // float minDepth; @@ -564,68 +536,74 @@ BlendTestInstance::BlendTestInstance (Context& context, const VkPipelineViewportStateCreateInfo viewportStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 viewportCount; - &viewport, // const VkViewport* pViewports; - 1u, // deUint32 scissorCount; - &scissor // const VkRect2D* pScissors; + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineViewportStateCreateFlags flags; + 1u, // deUint32 viewportCount; + &viewport, // const VkViewport* pViewports; + 1u, // deUint32 scissorCount; + &scissor // const VkRect2D* pScissors; }; - const VkPipelineRasterStateCreateInfo rasterStateParams = + const VkPipelineRasterizationStateCreateInfo rasterStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - false, // VkBool32 depthClipEnable; - false, // VkBool32 rasterizerDiscardEnable; - VK_FILL_MODE_SOLID, // VkFillMode fillMode; - VK_CULL_MODE_NONE, // VkCullMode cullMode; - VK_FRONT_FACE_CCW, // VkFrontFace frontFace; - false, // VkBool32 depthBiasEnable; - 0.0f, // float depthBias; - 0.0f, // float depthBiasClamp; - 0.0f, // float slopeScaledDepthBias; - 1.0f // float lineWidth; + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineRasterizationStateCreateFlags flags; + false, // VkBool32 depthClampEnable; + false, // VkBool32 rasterizerDiscardEnable; + VK_POLYGON_MODE_FILL, // VkPolygonMode polygonMode; + VK_CULL_MODE_NONE, // VkCullModeFlags cullMode; + VK_FRONT_FACE_COUNTER_CLOCKWISE, // VkFrontFace frontFace; + false, // VkBool32 depthBiasEnable; + 0.0f, // float depthBiasConstantFactor; + 0.0f, // float depthBiasClamp; + 0.0f, // float depthBiasSlopeFactor; + 1.0f // float lineWidth; }; const VkPipelineMultisampleStateCreateInfo multisampleStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 rasterSamples; - false, // VkBool32 sampleShadingEnable; - 0.0f, // float minSampleShading; - DE_NULL // const VkSampleMask* sampleMask; + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineMultisampleStateCreateFlags flags; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits rasterizationSamples; + false, // VkBool32 sampleShadingEnable; + 0.0f, // float minSampleShading; + DE_NULL, // const VkSampleMask* pSampleMask; + false, // VkBool32 alphaToCoverageEnable; + false // VkBool32 alphaToOneEnable; }; const VkPipelineDepthStencilStateCreateInfo depthStencilStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - false, // VkBool32 depthTestEnable; - false, // VkBool32 depthWriteEnable; - VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; - false, // VkBool32 depthBoundsTestEnable; - false, // VkBool32 stencilTestEnable; + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDepthStencilStateCreateFlags flags; + false, // VkBool32 depthTestEnable; + false, // VkBool32 depthWriteEnable; + VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; + false, // VkBool32 depthBoundsTestEnable; + false, // VkBool32 stencilTestEnable; // VkStencilOpState front; { - VK_STENCIL_OP_KEEP, // VkStencilOp stencilFailOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilPassOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilDepthFailOp; - VK_COMPARE_OP_NEVER, // VkCompareOp stencilCompareOp; - 0u, // deUint32 stencilCompareMask; - 0u, // deUint32 stencilWriteMask; - 0u // deUint32 stencilReference; + VK_STENCIL_OP_KEEP, // VkStencilOp failOp; + VK_STENCIL_OP_KEEP, // VkStencilOp passOp; + VK_STENCIL_OP_KEEP, // VkStencilOp depthFailOp; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0u, // deUint32 compareMask; + 0u, // deUint32 writeMask; + 0u // deUint32 reference; }, // VkStencilOpState back; { - VK_STENCIL_OP_KEEP, // VkStencilOp stencilFailOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilPassOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilDepthFailOp; - VK_COMPARE_OP_NEVER, // VkCompareOp stencilCompareOp; - 0u, // deUint32 stencilCompareMask; - 0u, // deUint32 stencilWriteMask; - 0u // deUint32 stencilReference; + VK_STENCIL_OP_KEEP, // VkStencilOp failOp; + VK_STENCIL_OP_KEEP, // VkStencilOp passOp; + VK_STENCIL_OP_KEEP, // VkStencilOp depthFailOp; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0u, // deUint32 compareMask; + 0u, // deUint32 writeMask; + 0u // deUint32 reference; }, -1.0f, // float minDepthBounds; +1.0f // float maxDepthBounds; @@ -636,13 +614,12 @@ BlendTestInstance::BlendTestInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - false, // VkBool32 alphaToCoverageEnable; - false, // VkBool32 alphaToOneEnable; + 0u, // VkPipelineColorBlendStateCreateFlags flags; false, // VkBool32 logicOpEnable; VK_LOGIC_OP_COPY, // VkLogicOp logicOp; - 1u, // deUint32 attachmentCount; + 0u, // deUint32 attachmentCount; DE_NULL, // const VkPipelineColorBlendAttachmentState* pAttachments; - { // float blendConst[4]; + { // float blendConstants[4]; BlendTest::s_blendConst.x(), BlendTest::s_blendConst.y(), BlendTest::s_blendConst.z(), @@ -652,28 +629,29 @@ BlendTestInstance::BlendTestInstance (Context& context, const VkPipelineDynamicStateCreateInfo dynamicStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // deUint32 dynamicStateCount; - DE_NULL // const VkDynamicState* pDynamicStates; + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDynamicStateCreateFlags flags; + 0u, // deUint32 dynamicStateCount; + DE_NULL // const VkDynamicState* pDynamicStates; }; const VkGraphicsPipelineCreateInfo graphicsPipelineParams = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkPipelineCreateFlags flags; 2u, // deUint32 stageCount; - shaderStageParams, // const VkPipelineShaderStageCreateInfo* pStages; + shaderStages, // const VkPipelineShaderStageCreateInfo* pStages; &vertexInputStateParams, // const VkPipelineVertexInputStateCreateInfo* pVertexInputState; &inputAssemblyStateParams, // const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; DE_NULL, // const VkPipelineTessellationStateCreateInfo* pTessellationState; &viewportStateParams, // const VkPipelineViewportStateCreateInfo* pViewportState; - &rasterStateParams, // const VkPipelineRasterStateCreateInfo* pRasterState; + &rasterStateParams, // const VkPipelineRasterizationStateCreateInfo* pRasterizationState; &multisampleStateParams, // const VkPipelineMultisampleStateCreateInfo* pMultisampleState; &depthStencilStateParams, // const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; &colorBlendStateParams, // const VkPipelineColorBlendStateCreateInfo* pColorBlendState; &dynamicStateParams, // const VkPipelineDynamicStateCreateInfo* pDynamicState; - 0u, // VkPipelineCreateFlags flags; *m_pipelineLayout, // VkPipelineLayout layout; *m_renderPass, // VkRenderPass renderPass; 0u, // deUint32 subpass; @@ -683,8 +661,9 @@ BlendTestInstance::BlendTestInstance (Context& context, for (int quadNdx = 0; quadNdx < BlendTest::QUAD_COUNT; quadNdx++) { - colorBlendStateParams.pAttachments = &m_blendStates[quadNdx]; - m_graphicsPipelines[quadNdx] = createGraphicsPipeline(vk, vkDevice, DE_NULL, &graphicsPipelineParams); + colorBlendStateParams.attachmentCount = 1u; + colorBlendStateParams.pAttachments = &m_blendStates[quadNdx]; + m_graphicsPipelines[quadNdx] = createGraphicsPipeline(vk, vkDevice, DE_NULL, &graphicsPipelineParams); } } @@ -694,11 +673,11 @@ BlendTestInstance::BlendTestInstance (Context& context, { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkBufferCreateFlags flags; 1024u, // VkDeviceSize size; VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, // VkBufferUsageFlags usage; - 0u, // VkBufferCreateFlags flags; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; + 1u, // deUint32 queueFamilyIndexCount; &queueFamilyIndex // const deUint32* pQueueFamilyIndices; }; @@ -723,7 +702,7 @@ BlendTestInstance::BlendTestInstance (Context& context, { VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, // VkStructureType sType; DE_NULL, // const void* pNext; - m_vertexBufferAlloc->getMemory(), // VkDeviceMemory mem; + m_vertexBufferAlloc->getMemory(), // VkDeviceMemory memory; m_vertexBufferAlloc->getOffset(), // VkDeviceSize offset; vertexBufferParams.size // VkDeviceSize size; }; @@ -733,12 +712,12 @@ BlendTestInstance::BlendTestInstance (Context& context, // Create command pool { - const VkCmdPoolCreateInfo cmdPoolParams = + const VkCommandPoolCreateInfo cmdPoolParams = { - VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - queueFamilyIndex, // deUint32 queueFamilyIndex; - VK_CMD_POOL_CREATE_TRANSIENT_BIT // VkCmdPoolCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // VkCommandPoolCreateFlags flags; + queueFamilyIndex // deUint32 queueFamilyIndex; }; m_cmdPool = createCommandPool(vk, vkDevice, &cmdPoolParams); @@ -746,23 +725,26 @@ BlendTestInstance::BlendTestInstance (Context& context, // Create command buffer { - const VkCmdBufferCreateInfo cmdBufferParams = + const VkCommandBufferAllocateInfo cmdBufferAllocateInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_cmdPool, // VkCmdPool cmdPool; - VK_CMD_BUFFER_LEVEL_PRIMARY, // VkCmdBufferLevel level; - 0u // VkCmdBufferCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *m_cmdPool, // VkCommandPool commandPool; + VK_COMMAND_BUFFER_LEVEL_PRIMARY, // VkCommandBufferLevel level; + 1u, // deUint32 bufferCount; }; - const VkCmdBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // VkCmdBufferOptimizeFlags flags; - 0u, // deUint32 subpass; - DE_NULL, // VkRenderPass renderPass; - DE_NULL // VkFramebuffer framebuffer; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkCommandBufferUsageFlags flags; + 0u, // VkRenderPass renderPass; + DE_NULL, // deUint32 subpass; + DE_NULL, // VkFramebuffer framebuffer; + false, // VkBool32 occlusionQueryEnable; + 0u, // VkQueryControlFlags queryFlags; + 0u // VkQueryPipelineStatisticFlags pipelineStatistics; }; const VkClearValue attachmentClearValue = defaultClearValue(m_colorFormat); @@ -778,10 +760,10 @@ BlendTestInstance::BlendTestInstance (Context& context, &attachmentClearValue // const VkClearValue* pClearValues; }; - m_cmdBuffer = createCommandBuffer(vk, vkDevice, &cmdBufferParams); + m_cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferAllocateInfo); VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_RENDER_PASS_CONTENTS_INLINE); + vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); const VkDeviceSize quadOffset = (m_vertices.size() / BlendTest::QUAD_COUNT) * sizeof(Vertex4RGBA); @@ -820,9 +802,20 @@ tcu::TestStatus BlendTestInstance::iterate (void) const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); const VkQueue queue = m_context.getUniversalQueue(); + const VkSubmitInfo submitInfo = + { + VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 commandBufferCount; + &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; + 0u, // deUint32 signalSemaphoreCount; + DE_NULL // const VkSemaphore* pSignalSemaphores; + }; VK_CHECK(vk.resetFences(vkDevice, 1, &m_fence.get())); - VK_CHECK(vk.queueSubmit(queue, 1, &m_cmdBuffer.get(), *m_fence)); + VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *m_fence)); VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity */)); return verifyImage(); @@ -937,14 +930,14 @@ tcu::TestStatus BlendTestInstance::verifyImage (void) // Set blend state rr::RenderState renderState (refRenderer.getViewportState()); renderState.fragOps.blendMode = rr::BLENDMODE_STANDARD; - renderState.fragOps.blendRGBState.srcFunc = mapVkBlend(blendState.srcBlendColor); - renderState.fragOps.blendRGBState.dstFunc = mapVkBlend(blendState.destBlendColor); - renderState.fragOps.blendRGBState.equation = mapVkBlendOp(blendState.blendOpColor); - renderState.fragOps.blendAState.srcFunc = mapVkBlend(blendState.srcBlendAlpha); - renderState.fragOps.blendAState.dstFunc = mapVkBlend(blendState.destBlendAlpha); - renderState.fragOps.blendAState.equation = mapVkBlendOp(blendState.blendOpAlpha); + renderState.fragOps.blendRGBState.srcFunc = mapVkBlendFactor(blendState.srcColorBlendFactor); + renderState.fragOps.blendRGBState.dstFunc = mapVkBlendFactor(blendState.dstColorBlendFactor); + renderState.fragOps.blendRGBState.equation = mapVkBlendOp(blendState.colorBlendOp); + renderState.fragOps.blendAState.srcFunc = mapVkBlendFactor(blendState.srcAlphaBlendFactor); + renderState.fragOps.blendAState.dstFunc = mapVkBlendFactor(blendState.dstAlphaBlendFactor); + renderState.fragOps.blendAState.equation = mapVkBlendOp(blendState.alphaBlendOp); renderState.fragOps.blendColor = BlendTest::s_blendConst; - renderState.fragOps.colorMask = mapVkChannelFlags(BlendTest::s_channelWriteMasks[quadNdx]); + renderState.fragOps.colorMask = mapVkColorComponentFlags(BlendTest::s_colorWriteMasks[quadNdx]); refRenderer.draw(renderState, rr::PRIMITIVETYPE_TRIANGLES, @@ -1013,8 +1006,8 @@ std::string getBlendStateName (const VkPipelineColorBlendAttachmentState& blendS std::ostringstream shortName; - shortName << "color_" << shortBlendFactorNames[blendState.srcBlendColor] << "_" << shortBlendFactorNames[blendState.destBlendColor] << "_" << blendOpNames[blendState.blendOpColor]; - shortName << "_alpha_" << shortBlendFactorNames[blendState.srcBlendAlpha] << "_" << shortBlendFactorNames[blendState.destBlendAlpha] << "_" << blendOpNames[blendState.blendOpAlpha]; + shortName << "color_" << shortBlendFactorNames[blendState.srcColorBlendFactor] << "_" << shortBlendFactorNames[blendState.dstColorBlendFactor] << "_" << blendOpNames[blendState.colorBlendOp]; + shortName << "_alpha_" << shortBlendFactorNames[blendState.srcAlphaBlendFactor] << "_" << shortBlendFactorNames[blendState.dstAlphaBlendFactor] << "_" << blendOpNames[blendState.alphaBlendOp]; return shortName.str(); } @@ -1062,10 +1055,10 @@ tcu::TestCaseGroup* createBlendTests (tcu::TestContext& testCtx) // Formats that are dEQP-compatible, non-integer and uncompressed const VkFormat blendFormats[] = { - VK_FORMAT_R4G4_UNORM, - VK_FORMAT_R4G4B4A4_UNORM, - VK_FORMAT_R5G6B5_UNORM, - VK_FORMAT_R5G5B5A1_UNORM, + VK_FORMAT_R4G4_UNORM_PACK8, + VK_FORMAT_R4G4B4A4_UNORM_PACK16, + VK_FORMAT_R5G6B5_UNORM_PACK16, + VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_SRGB, @@ -1078,7 +1071,7 @@ tcu::TestCaseGroup* createBlendTests (tcu::TestContext& testCtx) VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SRGB, - VK_FORMAT_R10G10B10A2_UNORM, + VK_FORMAT_A2R10G10B10_UNORM_PACK32, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_SFLOAT, @@ -1095,10 +1088,10 @@ tcu::TestCaseGroup* createBlendTests (tcu::TestContext& testCtx) VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32A32_SFLOAT, - VK_FORMAT_R11G11B10_UFLOAT, - VK_FORMAT_R9G9B9E5_UFLOAT, - VK_FORMAT_B4G4R4A4_UNORM, - VK_FORMAT_B5G5R5A1_UNORM, + VK_FORMAT_B10G11R11_UFLOAT_PACK32, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + VK_FORMAT_B4G4R4A4_UNORM_PACK16, + VK_FORMAT_B5G5R5A1_UNORM_PACK16, }; de::MovePtr blendTests (new tcu::TestCaseGroup(testCtx, "blend", "Blend tests")); @@ -1126,8 +1119,8 @@ tcu::TestCaseGroup* createBlendTests (tcu::TestContext& testCtx) for (int quadNdx = 0; quadNdx < BlendTest::QUAD_COUNT; quadNdx++) { - quadBlendConfigs[quadNdx] = blendStateItr.next(); - quadBlendConfigs[quadNdx].channelWriteMask = BlendTest::s_channelWriteMasks[quadNdx]; + quadBlendConfigs[quadNdx] = blendStateItr.next(); + quadBlendConfigs[quadNdx].colorWriteMask = BlendTest::s_colorWriteMasks[quadNdx]; } blendStateTests->addChild(new BlendTest(testCtx, diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp index ccb973e..35ddbab 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp @@ -68,7 +68,7 @@ bool isSupportedDepthStencilFormat (const InstanceInterface& instanceInterface, { VkFormatProperties formatProps; - VK_CHECK(instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps)); + instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps); return (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) != 0u; } @@ -163,8 +163,6 @@ private: Move m_vertexShaderModule; Move m_fragmentShaderModule; - Move m_vertexShader; - Move m_fragmentShader; Move m_vertexBuffer; std::vector m_vertices; @@ -173,8 +171,8 @@ private: Move m_pipelineLayout; Move m_graphicsPipelines[DepthTest::QUAD_COUNT]; - Move m_cmdPool; - Move m_cmdBuffer; + Move m_cmdPool; + Move m_cmdBuffer; Move m_fence; }; @@ -238,11 +236,11 @@ DepthTestInstance::DepthTestInstance (Context& context, , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_depthFormat (depthFormat) { - const DeviceInterface& vk = context.getDeviceInterface(); - const VkDevice vkDevice = context.getDevice(); - const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); - SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); - const VkChannelMapping channelMappingRGBA = { VK_CHANNEL_SWIZZLE_R, VK_CHANNEL_SWIZZLE_G, VK_CHANNEL_SWIZZLE_B, VK_CHANNEL_SWIZZLE_A }; + const DeviceInterface& vk = context.getDeviceInterface(); + const VkDevice vkDevice = context.getDevice(); + const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); + SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); + const VkComponentMapping componentMappingRGBA = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A }; // Copy depth operators deMemcpy(m_depthCompareOps, depthCompareOps, sizeof(VkCompareOp) * DepthTest::QUAD_COUNT); @@ -251,21 +249,21 @@ DepthTestInstance::DepthTestInstance (Context& context, { const VkImageCreateInfo colorImageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_IMAGE_TYPE_2D, // VkImageType imageType; - m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; - 1u, // deUint32 mipLevels; - 1u, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT, // VkImageUsageFlags usage; - 0u, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageCreateFlags flags; + VK_IMAGE_TYPE_2D, // VkImageType imageType; + m_colorFormat, // VkFormat format; + { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + 1u, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; }; m_colorImage = createImage(vk, vkDevice, &colorImageParams); @@ -283,21 +281,21 @@ DepthTestInstance::DepthTestInstance (Context& context, const VkImageCreateInfo depthImageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_IMAGE_TYPE_2D, // VkImageType imageType; - m_depthFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; - 1u, // deUint32 mipLevels; - 1u, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, // VkImageUsageFlags usage; - 0u, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageCreateFlags flags; + VK_IMAGE_TYPE_2D, // VkImageType imageType; + m_depthFormat, // VkFormat format; + { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + 1u, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; }; m_depthImage = createImage(vk, vkDevice, &depthImageParams); @@ -313,12 +311,12 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; *m_colorImage, // VkImage image; VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; m_colorFormat, // VkFormat format; - channelMappingRGBA, // VkChannelMapping channels; - { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; + componentMappingRGBA, // VkComponentMapping components; + { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u } // VkImageSubresourceRange subresourceRange; }; m_colorAttachmentView = createImageView(vk, vkDevice, &colorAttachmentViewParams); @@ -330,12 +328,12 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; *m_depthImage, // VkImage image; VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; m_depthFormat, // VkFormat format; - channelMappingRGBA, // VkChannelMapping channels; - { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; + componentMappingRGBA, // VkComponentMapping components; + { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 1u, 0u, 1u } // VkImageSubresourceRange subresourceRange; }; m_depthAttachmentView = createImageView(vk, vkDevice, &depthAttachmentViewParams); @@ -345,32 +343,28 @@ DepthTestInstance::DepthTestInstance (Context& context, { const VkAttachmentDescription colorAttachmentDescription = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - m_colorFormat, // VkFormat format; - 1u, // deUint32 samples; - VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; - VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; - VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; - VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; - 0u, // VkAttachmentDescriptionFlags flags; + 0u, // VkAttachmentDescriptionFlags flags; + m_colorFormat, // VkFormat format; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; + VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; + VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL // VkImageLayout finalLayout; }; const VkAttachmentDescription depthAttachmentDescription = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - m_depthFormat, // VkFormat format; - 1u, // deUint32 samples; - VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; - VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp storeOp; - VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; - VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; - 0u, // VkAttachmentDescriptionFlags flags; + 0u, // VkAttachmentDescriptionFlags flags; + m_depthFormat, // VkFormat format; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp storeOp; + VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; }; const VkAttachmentDescription attachments[2] = @@ -393,17 +387,15 @@ DepthTestInstance::DepthTestInstance (Context& context, const VkSubpassDescription subpassDescription = { - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; 0u, // VkSubpassDescriptionFlags flags; - 0u, // deUint32 inputCount; + VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; + 0u, // deUint32 inputAttachmentCount; DE_NULL, // const VkAttachmentReference* pInputAttachments; - 1u, // deUint32 colorCount; + 1u, // deUint32 colorAttachmentCount; &colorAttachmentReference, // const VkAttachmentReference* pColorAttachments; DE_NULL, // const VkAttachmentReference* pResolveAttachments; - depthAttachmentReference, // VkAttachmentReference depthStencilAttachment; - 0u, // deUint32 preserveCount; + &depthAttachmentReference, // const VkAttachmentReference* pDepthStencilAttachment; + 0u, // deUint32 preserveAttachmentCount; DE_NULL // const VkAttachmentReference* pPreserveAttachments; }; @@ -411,6 +403,7 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkRenderPassCreateFlags flags; 2u, // deUint32 attachmentCount; attachments, // const VkAttachmentDescription* pAttachments; 1u, // deUint32 subpassCount; @@ -434,6 +427,7 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkFramebufferCreateFlags flags; *m_renderPass, // VkRenderPass renderPass; 2u, // deUint32 attachmentCount; attachmentBindInfos, // const VkImageView* pAttachments; @@ -449,63 +443,43 @@ DepthTestInstance::DepthTestInstance (Context& context, { const VkPipelineLayoutCreateInfo pipelineLayoutParams = { - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // deUint32 descriptorSetCount; - DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; - 0u, // deUint32 pushConstantRangeCount; - DE_NULL // const VkPushConstantRange* pPushConstantRanges; + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineLayoutCreateFlags flags; + 0u, // deUint32 setLayoutCount; + DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; + 0u, // deUint32 pushConstantRangeCount; + DE_NULL // const VkPushConstantRange* pPushConstantRanges; }; m_pipelineLayout = createPipelineLayout(vk, vkDevice, &pipelineLayoutParams); } - // Create shaders - { - m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_vert"), 0); - m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_frag"), 0); - - const VkShaderCreateInfo vertexShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_vertexShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_VERTEX, // VkShaderStage stage; - }; - - const VkShaderCreateInfo fragmentShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_fragmentShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_FRAGMENT, // VkShaderStage stage; - }; - - m_vertexShader = createShader(vk, vkDevice, &vertexShaderParams); - m_fragmentShader = createShader(vk, vkDevice, &fragmentShaderParams); - } + // Shader modules + m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_vert"), 0); + m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_frag"), 0); // Create pipeline { - const VkPipelineShaderStageCreateInfo shaderStageParams[2] = + const VkPipelineShaderStageCreateInfo shaderStages[2] = { { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_VERTEX, // VkShaderStage stage; - *m_vertexShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_VERTEX_BIT, // VkShaderStageFlagBits stage; + *m_vertexShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; }, { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_FRAGMENT, // VkShaderStage stage; - *m_fragmentShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_FRAGMENT_BIT, // VkShaderStageFlagBits stage; + *m_fragmentShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; } }; @@ -513,7 +487,7 @@ DepthTestInstance::DepthTestInstance (Context& context, { 0u, // deUint32 binding; sizeof(Vertex4RGBA), // deUint32 strideInBytes; - VK_VERTEX_INPUT_STEP_RATE_VERTEX // VkVertexInputStepRate stepRate; + VK_VERTEX_INPUT_RATE_VERTEX // VkVertexInputStepRate inputRate; }; const VkVertexInputAttributeDescription vertexInputAttributeDescriptions[2] = @@ -522,13 +496,13 @@ DepthTestInstance::DepthTestInstance (Context& context, 0u, // deUint32 location; 0u, // deUint32 binding; VK_FORMAT_R32G32B32A32_SFLOAT, // VkFormat format; - 0u // deUint32 offsetInBytes; + 0u // deUint32 offset; }, { 1u, // deUint32 location; 0u, // deUint32 binding; VK_FORMAT_R32G32B32A32_SFLOAT, // VkFormat format; - DE_OFFSET_OF(Vertex4RGBA, color), // deUint32 offsetInBytes; + DE_OFFSET_OF(Vertex4RGBA, color), // deUint32 offset; } }; @@ -536,24 +510,26 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 1u, // deUint32 bindingCount; + 0u, // VkPipelineVertexInputStateCreateFlags flags; + 1u, // deUint32 vertexBindingDescriptionCount; &vertexInputBindingDescription, // const VkVertexInputBindingDescription* pVertexBindingDescriptions; - 2u, // deUint32 attributeCount; + 2u, // deUint32 vertexAttributeDescriptionCount; vertexInputAttributeDescriptions // const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; }; const VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; - false // VkBool32 primitiveRestartEnable; + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineInputAssemblyStateCreateFlags flags; + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; + false // VkBool32 primitiveRestartEnable; }; const VkViewport viewport = { - 0.0f, // float originX; - 0.0f, // float originY; + 0.0f, // float x; + 0.0f, // float y; (float)m_renderSize.x(), // float width; (float)m_renderSize.y(), // float height; 0.0f, // float minDepth; @@ -566,101 +542,108 @@ DepthTestInstance::DepthTestInstance (Context& context, }; const VkPipelineViewportStateCreateInfo viewportStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 viewportCount; - &viewport, // const VkViewport* pViewports; - 1u, // deUint32 scissorCount; - &scissor // const VkRect2D* pScissors; + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineViewportStateCreateFlags flags; + 1u, // deUint32 viewportCount; + &viewport, // const VkViewport* pViewports; + 1u, // deUint32 scissorCount; + &scissor // const VkRect2D* pScissors; }; - const VkPipelineRasterStateCreateInfo rasterStateParams = + const VkPipelineRasterizationStateCreateInfo rasterStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - false, // VkBool32 depthClipEnable; - false, // VkBool32 rasterizerDiscardEnable; - VK_FILL_MODE_SOLID, // VkFillMode fillMode; - VK_CULL_MODE_NONE, // VkCullMode cullMode; - VK_FRONT_FACE_CCW, // VkFrontFace frontFace; - VK_FALSE, // VkBool32 depthBiasEnable; - 0.0f, // float depthBias; - 0.0f, // float depthBiasClamp; - 0.0f, // float slopeScaledDepthBias; - 1.0f, // float lineWidth; + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineRasterizationStateCreateFlags flags; + false, // VkBool32 depthClampEnable; + false, // VkBool32 rasterizerDiscardEnable; + VK_POLYGON_MODE_FILL, // VkPolygonMode polygonMode; + VK_CULL_MODE_NONE, // VkCullModeFlags cullMode; + VK_FRONT_FACE_COUNTER_CLOCKWISE, // VkFrontFace frontFace; + VK_FALSE, // VkBool32 depthBiasEnable; + 0.0f, // float depthBiasConstantFactor; + 0.0f, // float depthBiasClamp; + 0.0f, // float depthBiasSlopeFactor; + 1.0f, // float lineWidth; }; const VkPipelineColorBlendAttachmentState colorBlendAttachmentState = { - false, // VkBool32 blendEnable; - VK_BLEND_ONE, // VkBlend srcBlendColor; - VK_BLEND_ZERO, // VkBlend destBlendColor; - VK_BLEND_OP_ADD, // VkBlendOp blendOpColor; - VK_BLEND_ONE, // VkBlend srcBlendAlpha; - VK_BLEND_ZERO, // VkBlend destBlendAlpha; - VK_BLEND_OP_ADD, // VkBlendOp blendOpAlpha; - VK_CHANNEL_R_BIT | VK_CHANNEL_G_BIT | VK_CHANNEL_B_BIT | VK_CHANNEL_A_BIT // VkChannelFlags channelWriteMask; + false, // VkBool32 blendEnable; + VK_BLEND_FACTOR_ONE, // VkBlendFactor srcColorBlendFactor; + VK_BLEND_FACTOR_ZERO, // VkBlendFactor dstColorBlendFactor; + VK_BLEND_OP_ADD, // VkBlendOp colorBlendOp; + VK_BLEND_FACTOR_ONE, // VkBlendFactor srcAlphaBlendFactor; + VK_BLEND_FACTOR_ZERO, // VkBlendFactor dstAlphaBlendFactor; + VK_BLEND_OP_ADD, // VkBlendOp alphaBlendOp; + VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | // VkColorComponentFlags colorWriteMask; + VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT }; const VkPipelineColorBlendStateCreateInfo colorBlendStateParams = { VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - false, // VkBool32 alphaToCoverageEnable; - false, // VkBool32 alphaToOneEnable; + 0, // VkPipelineColorBlendStateCreateFlags flags; false, // VkBool32 logicOpEnable; VK_LOGIC_OP_COPY, // VkLogicOp logicOp; 1u, // deUint32 attachmentCount; &colorBlendAttachmentState, // const VkPipelineColorBlendAttachmentState* pAttachments; - { 0.0f, 0.0f, 0.0f, 0.0f }, // float blendConst[4]; + { 0.0f, 0.0f, 0.0f, 0.0f }, // float blendConstants[4]; }; const VkPipelineMultisampleStateCreateInfo multisampleStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 rasterSamples; - false, // VkBool32 sampleShadingEnable; - 0.0f, // float minSampleShading; - DE_NULL // const VkSampleMask* pSampleMask; + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineMultisampleStateCreateFlags flags; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits rasterizationSamples; + false, // VkBool32 sampleShadingEnable; + 0.0f, // float minSampleShading; + DE_NULL, // const VkSampleMask* pSampleMask; + false, // VkBool32 alphaToCoverageEnable; + false // VkBool32 alphaToOneEnable; }; - const VkPipelineDynamicStateCreateInfo dynamicStateParams = + const VkPipelineDynamicStateCreateInfo dynamicStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // deUint32 dynamicStateCount; - DE_NULL // const VkDynamicState* pDynamicStates; + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDynamicStateCreateFlags flags; + 0u, // deUint32 dynamicStateCount; + DE_NULL // const VkDynamicState* pDynamicStates; }; VkPipelineDepthStencilStateCreateInfo depthStencilStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - true, // VkBool32 depthTestEnable; - true, // VkBool32 depthWriteEnable; - VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; - false, // VkBool32 depthBoundsTestEnable; - false, // VkBool32 stencilTestEnable; + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDepthStencilStateCreateFlags flags; + true, // VkBool32 depthTestEnable; + true, // VkBool32 depthWriteEnable; + VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; + false, // VkBool32 depthBoundsTestEnable; + false, // VkBool32 stencilTestEnable; // VkStencilOpState front; { - VK_STENCIL_OP_KEEP, // VkStencilOp stencilFailOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilPassOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilDepthFailOp; - VK_COMPARE_OP_NEVER, // VkCompareOp stencilCompareOp; - 0u, // deUint32 stencilCompareMask; - 0u, // deUint32 stencilWriteMask; - 0u, // deUint32 stencilReference; + VK_STENCIL_OP_KEEP, // VkStencilOp failOp; + VK_STENCIL_OP_KEEP, // VkStencilOp passOp; + VK_STENCIL_OP_KEEP, // VkStencilOp depthFailOp; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0u, // deUint32 compareMask; + 0u, // deUint32 writeMask; + 0u, // deUint32 reference; }, // VkStencilOpState back; { - VK_STENCIL_OP_KEEP, // VkStencilOp stencilFailOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilPassOp; - VK_STENCIL_OP_KEEP, // VkStencilOp stencilDepthFailOp; - VK_COMPARE_OP_NEVER, // VkCompareOp stencilCompareOp; - 0u, // deUint32 stencilCompareMask; - 0u, // deUint32 stencilWriteMask; - 0u, // deUint32 stencilReference; + VK_STENCIL_OP_KEEP, // VkStencilOp failOp; + VK_STENCIL_OP_KEEP, // VkStencilOp passOp; + VK_STENCIL_OP_KEEP, // VkStencilOp depthFailOp; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0u, // deUint32 compareMask; + 0u, // deUint32 writeMask; + 0u, // deUint32 reference; }, -1.0f, // float minDepthBounds; +1.0f, // float maxDepthBounds; @@ -670,23 +653,23 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkPipelineCreateFlags flags; 2u, // deUint32 stageCount; - shaderStageParams, // const VkPipelineShaderStageCreateInfo* pStages; + shaderStages, // const VkPipelineShaderStageCreateInfo* pStages; &vertexInputStateParams, // const VkPipelineVertexInputStateCreateInfo* pVertexInputState; &inputAssemblyStateParams, // const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; DE_NULL, // const VkPipelineTessellationStateCreateInfo* pTessellationState; &viewportStateParams, // const VkPipelineViewportStateCreateInfo* pViewportState; - &rasterStateParams, // const VkPipelineRasterStateCreateInfo* pRasterState; + &rasterStateParams, // const VkPipelineRasterizationStateCreateInfo* pRasterizationState; &multisampleStateParams, // const VkPipelineMultisampleStateCreateInfo* pMultisampleState; &depthStencilStateParams, // const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; &colorBlendStateParams, // const VkPipelineColorBlendStateCreateInfo* pColorBlendState; &dynamicStateParams, // const VkPipelineDynamicStateCreateInfo* pDynamicState; - 0u, // VkPipelineCreateFlags flags; *m_pipelineLayout, // VkPipelineLayout layout; *m_renderPass, // VkRenderPass renderPass; 0u, // deUint32 subpass; 0u, // VkPipeline basePipelineHandle; - 0u // deInt32 basePipelineIndex; + 0u, // deInt32 basePipelineIndex; }; for (int quadNdx = 0; quadNdx < DepthTest::QUAD_COUNT; quadNdx++) @@ -702,11 +685,11 @@ DepthTestInstance::DepthTestInstance (Context& context, { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkBufferCreateFlags flags; 1024u, // VkDeviceSize size; VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, // VkBufferUsageFlags usage; - 0u, // VkBufferCreateFlags flags; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; + 1u, // deUint32 queueFamilyIndexCount; &queueFamilyIndex // const deUint32* pQueueFamilyIndices; }; @@ -728,12 +711,12 @@ DepthTestInstance::DepthTestInstance (Context& context, // Create command pool { - const VkCmdPoolCreateInfo cmdPoolParams = + const VkCommandPoolCreateInfo cmdPoolParams = { - VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO, // VkStructureType sType; + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - queueFamilyIndex, // deUint32 queueFamilyIndex; - VK_CMD_POOL_CREATE_TRANSIENT_BIT // VkCmdPoolCreateFlags flags; + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // VkCmdPoolCreateFlags flags; + queueFamilyIndex // deUint32 queueFamilyIndex; }; m_cmdPool = createCommandPool(vk, vkDevice, &cmdPoolParams); @@ -741,23 +724,26 @@ DepthTestInstance::DepthTestInstance (Context& context, // Create command buffer { - const VkCmdBufferCreateInfo cmdBufferParams = + const VkCommandBufferAllocateInfo cmdBufferAllocateInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_cmdPool, // VkCmdPool cmdPool; - VK_CMD_BUFFER_LEVEL_PRIMARY, // VkCmdBufferLevel level; - 0u // VkCmdBufferCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *m_cmdPool, // VkCommandPool commandPool; + VK_COMMAND_BUFFER_LEVEL_PRIMARY, // VkCommandBufferLevel level; + 1u // deUint32 bufferCount; }; - const VkCmdBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL // VkFramebuffer framebuffer; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkCommandBufferUsageFlags flags; + DE_NULL, // VkRenderPass renderPass; + 0u, // deUint32 subpass; + DE_NULL, // VkFramebuffer framebuffer; + false, // VkBool32 occlusionQueryEnable; + 0u, // VkQueryControlFlags queryFlags; + 0u // VkQueryPipelineStatisticFlags pipelineStatistics; }; const VkClearValue attachmentClearValues[2] = @@ -777,10 +763,10 @@ DepthTestInstance::DepthTestInstance (Context& context, attachmentClearValues // const VkClearValue* pClearValues; }; - m_cmdBuffer = createCommandBuffer(vk, vkDevice, &cmdBufferParams); + m_cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferAllocateInfo); VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_RENDER_PASS_CONTENTS_INLINE); + vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); const VkDeviceSize quadOffset = (m_vertices.size() / DepthTest::QUAD_COUNT) * sizeof(Vertex4RGBA); @@ -819,9 +805,20 @@ tcu::TestStatus DepthTestInstance::iterate (void) const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); const VkQueue queue = m_context.getUniversalQueue(); + const VkSubmitInfo submitInfo = + { + VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 commandBufferCount; + &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; + 0u, // deUint32 signalSemaphoreCount; + DE_NULL // const VkSemaphore* pSignalSemaphores; + }; VK_CHECK(vk.resetFences(vkDevice, 1, &m_fence.get())); - VK_CHECK(vk.queueSubmit(queue, 1, &m_cmdBuffer.get(), *m_fence)); + VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *m_fence)); VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity*/)); return verifyImage(); @@ -930,7 +927,7 @@ tcu::TestCaseGroup* createDepthTests (tcu::TestContext& testCtx) const VkFormat depthFormats[] = { VK_FORMAT_D16_UNORM, - VK_FORMAT_D24_UNORM_X8, + VK_FORMAT_X8_D24_UNORM_PACK32, VK_FORMAT_D32_SFLOAT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, @@ -941,80 +938,80 @@ tcu::TestCaseGroup* createDepthTests (tcu::TestContext& testCtx) // All entries cover pair-wise combinations of compare operators. const VkCompareOp depthOps[][DepthTest::QUAD_COUNT] = { - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_LESS_EQUAL }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS }, - { VK_COMPARE_OP_GREATER_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER }, - { VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL }, - { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER_EQUAL }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS }, - { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER } + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_NOT_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS }, + { VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NEVER }, + { VK_COMPARE_OP_LESS, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_EQUAL }, + { VK_COMPARE_OP_NEVER, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS, VK_COMPARE_OP_GREATER_OR_EQUAL }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_ALWAYS }, + { VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER } }; de::MovePtr depthTests (new tcu::TestCaseGroup(testCtx, "depth", "Depth tests")); @@ -1031,7 +1028,7 @@ tcu::TestCaseGroup* createDepthTests (tcu::TestContext& testCtx) VK_FORMAT_D16_UNORM); // Sets where at least one of the formats must be supported - const VkFormat depthOnlyFormats[] = { VK_FORMAT_D24_UNORM_X8, VK_FORMAT_D32_SFLOAT }; + const VkFormat depthOnlyFormats[] = { VK_FORMAT_X8_D24_UNORM_PACK32, VK_FORMAT_D32_SFLOAT }; const VkFormat depthStencilFormats[] = { VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT }; addFunctionCase(formatFeaturesTests.get(), diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp index f0f8a97..2a3ea7c 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp @@ -74,7 +74,7 @@ static VkImageType getCompatibleImageType (VkImageViewType viewType) } template -static MovePtr createTestTexture (const TcuFormatType format, VkImageViewType viewType, const tcu::IVec3& size, int arraySize) +static MovePtr createTestTexture (const TcuFormatType format, VkImageViewType viewType, const tcu::IVec3& size, int layerCount) { MovePtr texture; const VkImageType imageType = getCompatibleImageType(viewType); @@ -82,15 +82,15 @@ static MovePtr createTestTexture (const TcuFormatType format, VkIma switch (imageType) { case VK_IMAGE_TYPE_1D: - if (arraySize == 1) + if (layerCount == 1) texture = MovePtr(new TestTexture1D(format, size.x())); else - texture = MovePtr(new TestTexture1DArray(format, size.x(), arraySize)); + texture = MovePtr(new TestTexture1DArray(format, size.x(), layerCount)); break; case VK_IMAGE_TYPE_2D: - if (arraySize == 1) + if (layerCount == 1) { texture = MovePtr(new TestTexture2D(format, size.x(), size.y())); } @@ -98,20 +98,20 @@ static MovePtr createTestTexture (const TcuFormatType format, VkIma { if (viewType == VK_IMAGE_VIEW_TYPE_CUBE || viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) { - if (arraySize == tcu::CUBEFACE_LAST) + if (layerCount == tcu::CUBEFACE_LAST) { texture = MovePtr(new TestTextureCube(format, size.x())); } else { - DE_ASSERT(arraySize % tcu::CUBEFACE_LAST == 0); + DE_ASSERT(layerCount % tcu::CUBEFACE_LAST == 0); - texture = MovePtr(new TestTextureCubeArray(format, size.x(), arraySize)); + texture = MovePtr(new TestTextureCubeArray(format, size.x(), layerCount)); } } else { - texture = MovePtr(new TestTexture2DArray(format, size.x(), size.y(), arraySize)); + texture = MovePtr(new TestTexture2DArray(format, size.x(), size.y(), layerCount)); } } @@ -131,14 +131,14 @@ static MovePtr createTestTexture (const TcuFormatType format, VkIma template static void copySubresourceRange (TcuTextureType& dest, const TcuTextureType& src, const VkImageSubresourceRange& subresourceRange) { - DE_ASSERT(subresourceRange.mipLevels <= (deUint32)dest.getNumLevels()); - DE_ASSERT(subresourceRange.baseMipLevel + subresourceRange.mipLevels <= (deUint32)src.getNumLevels()); + DE_ASSERT(subresourceRange.levelCount <= (deUint32)dest.getNumLevels()); + DE_ASSERT(subresourceRange.baseMipLevel + subresourceRange.levelCount <= (deUint32)src.getNumLevels()); for (int levelNdx = 0; levelNdx < dest.getNumLevels(); levelNdx++) { const tcu::ConstPixelBufferAccess srcLevel (src.getLevel(subresourceRange.baseMipLevel + levelNdx)); const deUint32 srcLayerOffset = subresourceRange.baseArrayLayer * srcLevel.getWidth() * srcLevel.getHeight() * srcLevel.getFormat().getPixelSize(); - const tcu::ConstPixelBufferAccess srcLevelLayers (srcLevel.getFormat(), srcLevel.getWidth(), srcLevel.getHeight(), subresourceRange.arraySize, (deUint8*)srcLevel.getDataPtr() + srcLayerOffset); + const tcu::ConstPixelBufferAccess srcLevelLayers (srcLevel.getFormat(), srcLevel.getWidth(), srcLevel.getHeight(), subresourceRange.layerCount, (deUint8*)srcLevel.getDataPtr() + srcLayerOffset); if (dest.isLevelEmpty(levelNdx)) dest.allocLevel(levelNdx); @@ -150,17 +150,17 @@ static void copySubresourceRange (TcuTextureType& dest, const TcuTextureType& sr template<> void copySubresourceRange (tcu::Texture1DArray& dest, const tcu::Texture1DArray& src, const VkImageSubresourceRange& subresourceRange) { - DE_ASSERT(subresourceRange.mipLevels <= (deUint32)dest.getNumLevels()); - DE_ASSERT(subresourceRange.baseMipLevel + subresourceRange.mipLevels <= (deUint32)src.getNumLevels()); + DE_ASSERT(subresourceRange.levelCount <= (deUint32)dest.getNumLevels()); + DE_ASSERT(subresourceRange.baseMipLevel + subresourceRange.levelCount <= (deUint32)src.getNumLevels()); - DE_ASSERT(subresourceRange.arraySize == (deUint32)dest.getNumLayers()); - DE_ASSERT(subresourceRange.baseArrayLayer + subresourceRange.arraySize <= (deUint32)src.getNumLayers()); + DE_ASSERT(subresourceRange.layerCount == (deUint32)dest.getNumLayers()); + DE_ASSERT(subresourceRange.baseArrayLayer + subresourceRange.layerCount <= (deUint32)src.getNumLayers()); for (int levelNdx = 0; levelNdx < dest.getNumLevels(); levelNdx++) { const tcu::ConstPixelBufferAccess srcLevel (src.getLevel(subresourceRange.baseMipLevel + levelNdx)); const deUint32 srcLayerOffset = subresourceRange.baseArrayLayer * srcLevel.getWidth() * srcLevel.getFormat().getPixelSize(); - const tcu::ConstPixelBufferAccess srcLevelLayers (srcLevel.getFormat(), srcLevel.getWidth(), subresourceRange.arraySize, 1, (deUint8*)srcLevel.getDataPtr() + srcLayerOffset); + const tcu::ConstPixelBufferAccess srcLevelLayers (srcLevel.getFormat(), srcLevel.getWidth(), subresourceRange.layerCount, 1, (deUint8*)srcLevel.getDataPtr() + srcLayerOffset); if (dest.isLevelEmpty(levelNdx)) dest.allocLevel(levelNdx); @@ -172,10 +172,10 @@ void copySubresourceRange (tcu::Texture1DArray& dest, const static MovePtr createRefProgram (const tcu::TextureFormat& renderTargetFormat, const tcu::Sampler& sampler, float samplerLod, - const tcu::UVec4& channelMapping, + const tcu::UVec4& componentMapping, const TestTexture& testTexture, VkImageViewType viewType, - int arraySize, + int layerCount, const VkImageSubresourceRange& subresource) { MovePtr program; @@ -184,69 +184,69 @@ static MovePtr createRefProgram (const tcu::TextureFormat& renderTarg switch (imageType) { case VK_IMAGE_TYPE_1D: - if (arraySize == 1) + if (layerCount == 1) { const tcu::Texture1D& texture = dynamic_cast(testTexture).getTexture(); - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } else { const tcu::Texture1DArray& texture = dynamic_cast(testTexture).getTexture(); - if (subresource.baseMipLevel > 0 || subresource.arraySize < (deUint32)texture.getNumLayers()) + if (subresource.baseMipLevel > 0 || subresource.layerCount < (deUint32)texture.getNumLayers()) { // Not all texture levels and layers are needed. Create new sub-texture. const tcu::ConstPixelBufferAccess baseLevel = texture.getLevel(subresource.baseMipLevel); - tcu::Texture1DArray textureView (texture.getFormat(), baseLevel.getWidth(), subresource.arraySize); + tcu::Texture1DArray textureView (texture.getFormat(), baseLevel.getWidth(), subresource.layerCount); copySubresourceRange(textureView, texture, subresource); - program = MovePtr(new SamplerProgram(renderTargetFormat, textureView, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, textureView, sampler, samplerLod, componentMapping)); } else { - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } } break; case VK_IMAGE_TYPE_2D: - if (arraySize == 1) + if (layerCount == 1) { const tcu::Texture2D& texture = dynamic_cast(testTexture).getTexture(); - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } else { if (viewType == VK_IMAGE_VIEW_TYPE_CUBE || viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) { - if (arraySize == tcu::CUBEFACE_LAST) + if (layerCount == tcu::CUBEFACE_LAST) { const tcu::TextureCube& texture = dynamic_cast(testTexture).getTexture(); - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } else { - DE_ASSERT(arraySize % tcu::CUBEFACE_LAST == 0); + DE_ASSERT(layerCount % tcu::CUBEFACE_LAST == 0); const tcu::TextureCubeArray& texture = dynamic_cast(testTexture).getTexture(); - if (subresource.baseMipLevel > 0 || subresource.arraySize < (deUint32)texture.getDepth()) + if (subresource.baseMipLevel > 0 || subresource.layerCount < (deUint32)texture.getDepth()) { - DE_ASSERT(subresource.baseArrayLayer + subresource.arraySize <= (deUint32)texture.getDepth()); + DE_ASSERT(subresource.baseArrayLayer + subresource.layerCount <= (deUint32)texture.getDepth()); // Not all texture levels and layers are needed. Create new sub-texture. const tcu::ConstPixelBufferAccess baseLevel = texture.getLevel(subresource.baseMipLevel); - tcu::TextureCubeArray textureView (texture.getFormat(), baseLevel.getWidth(), subresource.arraySize); + tcu::TextureCubeArray textureView (texture.getFormat(), baseLevel.getWidth(), subresource.layerCount); copySubresourceRange(textureView, texture, subresource); - program = MovePtr(new SamplerProgram(renderTargetFormat, textureView, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, textureView, sampler, samplerLod, componentMapping)); } else { // Use all array layers - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } } } @@ -254,22 +254,22 @@ static MovePtr createRefProgram (const tcu::TextureFormat& renderTarg { const tcu::Texture2DArray& texture = dynamic_cast(testTexture).getTexture(); - if (subresource.baseMipLevel > 0 || subresource.arraySize < (deUint32)texture.getNumLayers()) + if (subresource.baseMipLevel > 0 || subresource.layerCount < (deUint32)texture.getNumLayers()) { - DE_ASSERT(subresource.baseArrayLayer + subresource.arraySize <= (deUint32)texture.getNumLayers()); + DE_ASSERT(subresource.baseArrayLayer + subresource.layerCount <= (deUint32)texture.getNumLayers()); // Not all texture levels and layers are needed. Create new sub-texture. const tcu::ConstPixelBufferAccess baseLevel = texture.getLevel(subresource.baseMipLevel); - tcu::Texture2DArray textureView (texture.getFormat(), baseLevel.getWidth(), baseLevel.getHeight(), subresource.arraySize); + tcu::Texture2DArray textureView (texture.getFormat(), baseLevel.getWidth(), baseLevel.getHeight(), subresource.layerCount); copySubresourceRange(textureView, texture, subresource); - program = MovePtr(new SamplerProgram(renderTargetFormat, textureView, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, textureView, sampler, samplerLod, componentMapping)); } else { // Use all array layers - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } } } @@ -278,7 +278,7 @@ static MovePtr createRefProgram (const tcu::TextureFormat& renderTarg case VK_IMAGE_TYPE_3D: { const tcu::Texture3D& texture = dynamic_cast(testTexture).getTexture(); - program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, channelMapping)); + program = MovePtr(new SamplerProgram(renderTargetFormat, texture, sampler, samplerLod, componentMapping)); } break; @@ -296,8 +296,8 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, VkImageViewType imageViewType, VkFormat imageFormat, const tcu::IVec3& imageSize, - int arraySize, - const VkChannelMapping& channelMapping, + int layerCount, + const VkComponentMapping& componentMapping, const VkImageSubresourceRange& subresourceRange, const VkSamplerCreateInfo& samplerParams, float samplerLod, @@ -305,8 +305,8 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, : vkt::TestInstance (context) , m_imageViewType (imageViewType) , m_imageSize (imageSize) - , m_arraySize (arraySize) - , m_channelMapping (channelMapping) + , m_layerCount (layerCount) + , m_componentMapping (componentMapping) , m_subresourceRange (subresourceRange) , m_samplerParams (samplerParams) , m_samplerLod (samplerLod) @@ -314,12 +314,12 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_vertices (vertices) { - const DeviceInterface& vk = context.getDeviceInterface(); - const VkDevice vkDevice = context.getDevice(); - const VkQueue queue = context.getUniversalQueue(); - const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); - SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); - const VkChannelMapping channelMappingRGBA = { VK_CHANNEL_SWIZZLE_R, VK_CHANNEL_SWIZZLE_G, VK_CHANNEL_SWIZZLE_B, VK_CHANNEL_SWIZZLE_A }; + const DeviceInterface& vk = context.getDeviceInterface(); + const VkDevice vkDevice = context.getDevice(); + const VkQueue queue = context.getUniversalQueue(); + const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); + SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); + const VkComponentMapping componentMappingRGBA = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A }; if (!isSupportedSamplableFormat(context.getInstanceInterface(), context.getPhysicalDevice(), imageFormat)) throw tcu::NotSupportedError(std::string("Unsupported format for sampling: ") + getFormatName(imageFormat)); @@ -333,31 +333,31 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, // Initialize texture data if (isCompressedFormat(imageFormat)) - m_texture = createTestTexture(mapVkCompressedFormat(imageFormat), imageViewType, imageSize, arraySize); + m_texture = createTestTexture(mapVkCompressedFormat(imageFormat), imageViewType, imageSize, layerCount); else - m_texture = createTestTexture(mapVkFormat(imageFormat), imageViewType, imageSize, arraySize); + m_texture = createTestTexture(mapVkFormat(imageFormat), imageViewType, imageSize, layerCount); const VkImageCreateInfo imageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - getCompatibleImageType(m_imageViewType), // VkImageType imageViewType; - imageFormat, // VkFormat format; - { // VkExtent3D extent; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + imageFlags, // VkImageCreateFlags flags; + getCompatibleImageType(m_imageViewType), // VkImageType imageType; + imageFormat, // VkFormat format; + { // VkExtent3D extent; m_imageSize.x(), m_imageSize.y(), m_imageSize.z() }, - (deUint32)m_texture->getNumLevels(), // deUint32 mipLevels; - (deUint32)m_arraySize, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, // VkImageUsageFlags usage; - imageFlags, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; + (deUint32)m_texture->getNumLevels(), // deUint32 mipLevels; + (deUint32)m_layerCount, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; m_image = createImage(vk, vkDevice, &imageParams); @@ -372,12 +372,12 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; *m_image, // VkImage image; m_imageViewType, // VkImageViewType viewType; imageFormat, // VkFormat format; - m_channelMapping, // VkChannelMapping channels; + m_componentMapping, // VkComponentMapping components; m_subresourceRange, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; }; m_imageView = createImageView(vk, vkDevice, &imageViewParams); @@ -388,29 +388,32 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { DescriptorPoolBuilder descriptorPoolBuilder; descriptorPoolBuilder.addType(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1u); - m_descriptorPool = descriptorPoolBuilder.build(vk, vkDevice, VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT, 1u); + m_descriptorPool = descriptorPoolBuilder.build(vk, vkDevice, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u); DescriptorSetLayoutBuilder setLayoutBuilder; setLayoutBuilder.addSingleBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT); m_descriptorSetLayout = setLayoutBuilder.build(vk, vkDevice); - m_descriptorSet = allocDescriptorSet(vk, vkDevice, *m_descriptorPool, VK_DESCRIPTOR_SET_USAGE_ONE_SHOT, *m_descriptorSetLayout); + const VkDescriptorSetAllocateInfo descriptorSetAllocateInfo = + { + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *m_descriptorPool, // VkDescriptorPool descriptorPool; + 1u, // deUint32 setLayoutCount; + &m_descriptorSetLayout.get() // const VkDescriptorSetLayout* pSetLayouts; + }; + + m_descriptorSet = allocateDescriptorSet(vk, vkDevice, &descriptorSetAllocateInfo); - const VkDescriptorInfo descriptorInfo = + const VkDescriptorImageInfo descriptorImageInfo = { - (VkBufferView)DE_NULL, // VkBufferView bufferView; - *m_sampler, // VkSampler sampler; - *m_imageView, // VkImageView imageView; - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, // VkImageLayout imageLayout; - { // VkDescriptorBufferInfo bufferInfo; - (VkBuffer)0, // VkBuffer buffer; - 0, // VkDeviceSize offset; - 0 // VkDeviceSize range; - } + *m_sampler, // VkSampler sampler; + *m_imageView, // VkImageView imageView; + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL // VkImageLayout imageLayout; }; DescriptorSetUpdateBuilder setUpdateBuilder; - setUpdateBuilder.writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0), VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, &descriptorInfo); + setUpdateBuilder.writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0), VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, &descriptorImageInfo); setUpdateBuilder.update(vk, vkDevice); } @@ -418,21 +421,21 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { const VkImageCreateInfo colorImageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_IMAGE_TYPE_2D, // VkImageType imageViewType; - m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; - 1u, // deUint32 mipLevels; - 1u, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT, // VkImageUsageFlags usage; - 0u, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageCreateFlags flags; + VK_IMAGE_TYPE_2D, // VkImageType imageType; + m_colorFormat, // VkFormat format; + { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + 1u, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; m_colorImage = createImage(vk, vkDevice, &colorImageParams); @@ -441,14 +444,14 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, const VkImageViewCreateInfo colorAttachmentViewParams = { - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_colorImage, // VkImage image; - VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; - m_colorFormat, // VkFormat format; - channelMappingRGBA, // VkChannelMapping channels; - { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; + *m_colorImage, // VkImage image; + VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; + m_colorFormat, // VkFormat format; + componentMappingRGBA, // VkComponentMapping components; + { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u } // VkImageSubresourceRange subresourceRange; }; m_colorAttachmentView = createImageView(vk, vkDevice, &colorAttachmentViewParams); @@ -458,17 +461,15 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { const VkAttachmentDescription colorAttachmentDescription = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - m_colorFormat, // VkFormat format; - 1u, // deUint32 samples; - VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; - VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; - VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; - VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; - 0u // VkAttachmentDescriptionFlags flags; + 0u, // VkAttachmentDescriptionFlags flags; + m_colorFormat, // VkFormat format; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; + VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; + VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL // VkImageLayout finalLayout; }; const VkAttachmentReference colorAttachmentReference = @@ -479,17 +480,15 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, const VkSubpassDescription subpassDescription = { - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; 0u, // VkSubpassDescriptionFlags flags; - 0u, // deUint32 inputCount; + VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; + 0u, // deUint32 inputAttachmentCount; DE_NULL, // const VkAttachmentReference* pInputAttachments; - 1u, // deUint32 colorCount; + 1u, // deUint32 colorAttachmentCount; &colorAttachmentReference, // const VkAttachmentReference* pColorAttachments; DE_NULL, // const VkAttachmentReference* pResolveAttachments; - { VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_UNDEFINED}, // VkAttachmentReference depthStencilAttachment; - 0u, // deUint32 preserveCount; + DE_NULL, // const VkAttachmentReference* pDepthStencilAttachment; + 0u, // deUint32 preserveAttachmentCount; DE_NULL // const VkAttachmentReference* pPreserveAttachments; }; @@ -497,6 +496,7 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkRenderPassCreateFlags flags; 1u, // deUint32 attachmentCount; &colorAttachmentDescription, // const VkAttachmentDescription* pAttachments; 1u, // deUint32 subpassCount; @@ -512,14 +512,15 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { const VkFramebufferCreateInfo framebufferParams = { - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_renderPass, // VkRenderPass renderPass; - 1u, // deUint32 attachmentCount; - &m_colorAttachmentView.get(), // const VkImageView* pAttachments; - (deUint32)m_renderSize.x(), // deUint32 width; - (deUint32)m_renderSize.y(), // deUint32 height; - 1u // deUint32 layers; + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkFramebufferCreateFlags flags; + *m_renderPass, // VkRenderPass renderPass; + 1u, // deUint32 attachmentCount; + &m_colorAttachmentView.get(), // const VkImageView* pAttachments; + (deUint32)m_renderSize.x(), // deUint32 width; + (deUint32)m_renderSize.y(), // deUint32 height; + 1u // deUint32 layers; }; m_framebuffer = createFramebuffer(vk, vkDevice, &framebufferParams); @@ -531,7 +532,8 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 1u, // deUint32 descriptorSetCount; + 0u, // VkPipelineLayoutCreateFlags flags; + 1u, // deUint32 setLayoutCount; &m_descriptorSetLayout.get(), // const VkDescriptorSetLayout* pSetLayouts; 0u, // deUint32 pushConstantRangeCount; DE_NULL // const VkPushConstantRange* pPushConstantRanges; @@ -540,60 +542,38 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, m_pipelineLayout = createPipelineLayout(vk, vkDevice, &pipelineLayoutParams); } - // Create shaders - { - m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("tex_vert"), 0); - m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("tex_frag"), 0); - - const VkShaderCreateInfo vertexShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_vertexShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_VERTEX // VkShaderStage stage; - }; - - const VkShaderCreateInfo fragmentShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_fragmentShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_FRAGMENT // VkShaderStage stage; - }; - - m_vertexShader = createShader(vk, vkDevice, &vertexShaderParams); - m_fragmentShader = createShader(vk, vkDevice, &fragmentShaderParams); - } + m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("tex_vert"), 0); + m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("tex_frag"), 0); // Create pipeline { - const VkPipelineShaderStageCreateInfo shaderStageParams[2] = + const VkPipelineShaderStageCreateInfo shaderStages[2] = { { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_VERTEX, // VkShaderStage stage; - *m_vertexShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_VERTEX_BIT, // VkShaderStageFlagBits stage; + *m_vertexShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; }, { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_FRAGMENT, // VkShaderStage stage; - *m_fragmentShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_FRAGMENT_BIT, // VkShaderStageFlagBits stage; + *m_fragmentShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; } }; const VkVertexInputBindingDescription vertexInputBindingDescription = { - 0u, // deUint32 binding; - sizeof(Vertex4Tex4), // deUint32 strideInBytes; - VK_VERTEX_INPUT_STEP_RATE_VERTEX // VkVertexInputStepRate stepRate; + 0u, // deUint32 binding; + sizeof(Vertex4Tex4), // deUint32 strideInBytes; + VK_VERTEX_INPUT_RATE_VERTEX // VkVertexInputStepRate inputRate; }; const VkVertexInputAttributeDescription vertexInputAttributeDescriptions[2] = @@ -602,13 +582,13 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, 0u, // deUint32 location; 0u, // deUint32 binding; VK_FORMAT_R32G32B32A32_SFLOAT, // VkFormat format; - 0u // deUint32 offsetInBytes; + 0u // deUint32 offset; }, { 1u, // deUint32 location; 0u, // deUint32 binding; VK_FORMAT_R32G32B32A32_SFLOAT, // VkFormat format; - DE_OFFSET_OF(Vertex4Tex4, texCoord), // deUint32 offsetInBytes; + DE_OFFSET_OF(Vertex4Tex4, texCoord), // deUint32 offset; } }; @@ -616,24 +596,26 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 1u, // deUint32 bindingCount; + 0u, // VkPipelineVertexInputStateCreateFlags flags; + 1u, // deUint32 vertexBindingDescriptionCount; &vertexInputBindingDescription, // const VkVertexInputBindingDescription* pVertexBindingDescriptions; - 2u, // deUint32 attributeCount; + 2u, // deUint32 vertexAttributeDescriptionCount; vertexInputAttributeDescriptions // const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; }; const VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; - false // VkBool32 primitiveRestartEnable; + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineInputAssemblyStateCreateFlags flags; + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; + false // VkBool32 primitiveRestartEnable; }; const VkViewport viewport = { - 0.0f, // float originX; - 0.0f, // float originY; + 0.0f, // float x; + 0.0f, // float y; (float)m_renderSize.x(), // float width; (float)m_renderSize.y(), // float height; 0.0f, // float minDepth; @@ -644,91 +626,97 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, const VkPipelineViewportStateCreateInfo viewportStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 viewportCount; - &viewport, // const VkViewport* pViewports; - 1u, // deUint32 scissorCount; - &scissor // const VkRect2D* pScissors; + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineViewportStateCreateFlags flags; + 1u, // deUint32 viewportCount; + &viewport, // const VkViewport* pViewports; + 1u, // deUint32 scissorCount; + &scissor // const VkRect2D* pScissors; }; - const VkPipelineRasterStateCreateInfo rasterStateParams = + const VkPipelineRasterizationStateCreateInfo rasterStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - false, // VkBool32 depthClipEnable; - false, // VkBool32 rasterizerDiscardEnable; - VK_FILL_MODE_SOLID, // VkFillMode fillMode; - VK_CULL_MODE_NONE, // VkCullMode cullMode; - VK_FRONT_FACE_CCW, // VkFrontFace frontFace; - false, // VkBool32 depthBiasEnable; - 0.0f, // float depthBias; - 0.0f, // float depthBiasClamp; - 0.0f, // float slopeScaledDepthBias; - 1.0f // float lineWidth; + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineRasterizationStateCreateFlags flags; + false, // VkBool32 depthClampEnable; + false, // VkBool32 rasterizerDiscardEnable; + VK_POLYGON_MODE_FILL, // VkPolygonMode polygonMode; + VK_CULL_MODE_NONE, // VkCullModeFlags cullMode; + VK_FRONT_FACE_COUNTER_CLOCKWISE, // VkFrontFace frontFace; + false, // VkBool32 depthBiasEnable; + 0.0f, // float depthBiasConstantFactor; + 0.0f, // float depthBiasClamp; + 0.0f, // float depthBiasSlopeFactor; + 1.0f // float lineWidth; }; const VkPipelineColorBlendAttachmentState colorBlendAttachmentState = { - false, // VkBool32 blendEnable; - VK_BLEND_ONE, // VkBlend srcBlendColor; - VK_BLEND_ZERO, // VkBlend destBlendColor; - VK_BLEND_OP_ADD, // VkBlendOp blendOpColor; - VK_BLEND_ONE, // VkBlend srcBlendAlpha; - VK_BLEND_ZERO, // VkBlend destBlendAlpha; - VK_BLEND_OP_ADD, // VkBlendOp blendOpAlpha; - VK_CHANNEL_R_BIT | VK_CHANNEL_G_BIT | VK_CHANNEL_B_BIT | VK_CHANNEL_A_BIT // VkChannelFlags channelWriteMask; + false, // VkBool32 blendEnable; + VK_BLEND_FACTOR_ONE, // VkBlendFactor srcColorBlendFactor; + VK_BLEND_FACTOR_ZERO, // VkBlendFactor dstColorBlendFactor; + VK_BLEND_OP_ADD, // VkBlendOp colorBlendOp; + VK_BLEND_FACTOR_ONE, // VkBlendFactor srcAlphaBlendFactor; + VK_BLEND_FACTOR_ZERO, // VkBlendFactor dstAlphaBlendFactor; + VK_BLEND_OP_ADD, // VkBlendOp alphaBlendOp; + VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | // VkColorComponentFlags colorWriteMask; + VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT }; const VkPipelineColorBlendStateCreateInfo colorBlendStateParams = { VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - false, // VkBool32 alphaToCoverageEnable; - false, // VkBool32 alphaToOneEnable; + 0u, // VkPipelineColorBlendStateCreateFlags flags; false, // VkBool32 logicOpEnable; VK_LOGIC_OP_COPY, // VkLogicOp logicOp; 1u, // deUint32 attachmentCount; &colorBlendAttachmentState, // const VkPipelineColorBlendAttachmentState* pAttachments; - { 0.0f, 0.0f, 0.0f, 0.0f } // float blendConst[4]; + { 0.0f, 0.0f, 0.0f, 0.0f } // float blendConstants[4]; }; const VkPipelineMultisampleStateCreateInfo multisampleStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 rasterSamples; - false, // VkBool32 sampleShadingEnable; - 0.0f, // float minSampleShading; - DE_NULL // const VkSampleMask* pSampleMask; + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineMultisampleStateCreateFlags flags; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits rasterizationSamples; + false, // VkBool32 sampleShadingEnable; + 0.0f, // float minSampleShading; + DE_NULL, // const VkSampleMask* pSampleMask; + false, // VkBool32 alphaToCoverageEnable; + false // VkBool32 alphaToOneEnable; }; VkPipelineDepthStencilStateCreateInfo depthStencilStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - false, // VkBool32 depthTestEnable; - false, // VkBool32 depthWriteEnable; - VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; - false, // VkBool32 depthBoundsTestEnable; - false, // VkBool32 stencilTestEnable; - { // VkStencilOpState front; - VK_STENCIL_OP_ZERO, // VkStencilOp stencilFailOp; - VK_STENCIL_OP_ZERO, // VkStencilOp stencilPassOp; - VK_STENCIL_OP_ZERO, // VkStencilOp stencilDepthFailOp; - VK_COMPARE_OP_NEVER, // VkCompareOp stencilCompareOp; - 0u, // deUint32 stencilCompareMask; - 0u, // deUint32 stencilWriteMask; - 0u // deUint32 stencilReference; + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDepthStencilStateCreateFlags flags; + false, // VkBool32 depthTestEnable; + false, // VkBool32 depthWriteEnable; + VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; + false, // VkBool32 depthBoundsTestEnable; + false, // VkBool32 stencilTestEnable; + { // VkStencilOpState front; + VK_STENCIL_OP_ZERO, // VkStencilOp failOp; + VK_STENCIL_OP_ZERO, // VkStencilOp passOp; + VK_STENCIL_OP_ZERO, // VkStencilOp depthFailOp; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0u, // deUint32 compareMask; + 0u, // deUint32 writeMask; + 0u // deUint32 reference; }, { // VkStencilOpState back; - VK_STENCIL_OP_ZERO, // VkStencilOp stencilFailOp; - VK_STENCIL_OP_ZERO, // VkStencilOp stencilPassOp; - VK_STENCIL_OP_ZERO, // VkStencilOp stencilDepthFailOp; - VK_COMPARE_OP_NEVER, // VkCompareOp stencilCompareOp; - 0u, // deUint32 stencilCompareMask; - 0u, // deUint32 stencilWriteMask; - 0u // deUint32 stencilReference; + VK_STENCIL_OP_ZERO, // VkStencilOp failOp; + VK_STENCIL_OP_ZERO, // VkStencilOp passOp; + VK_STENCIL_OP_ZERO, // VkStencilOp depthFailOp; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0u, // deUint32 compareMask; + 0u, // deUint32 writeMask; + 0u // deUint32 reference; }, -1.0f, // float minDepthBounds; +1.0f // float maxDepthBounds; @@ -736,28 +724,29 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, const VkPipelineDynamicStateCreateInfo dynamicStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // deUint32 dynamicStateCount; - DE_NULL // const VkDynamicState* pDynamicStates; + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDynamicStateCreateFlags flags; + 0u, // deUint32 dynamicStateCount; + DE_NULL // const VkDynamicState* pDynamicStates; }; const VkGraphicsPipelineCreateInfo graphicsPipelineParams = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkPipelineCreateFlags flags; 2u, // deUint32 stageCount; - shaderStageParams, // const VkPipelineShaderStageCreateInfo* pStages; + shaderStages, // const VkPipelineShaderStageCreateInfo* pStages; &vertexInputStateParams, // const VkPipelineVertexInputStateCreateInfo* pVertexInputState; &inputAssemblyStateParams, // const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; DE_NULL, // const VkPipelineTessellationStateCreateInfo* pTessellationState; &viewportStateParams, // const VkPipelineViewportStateCreateInfo* pViewportState; - &rasterStateParams, // const VkPipelineRasterStateCreateInfo* pRasterState; + &rasterStateParams, // const VkPipelineRasterizationStateCreateInfo* pRasterizationState; &multisampleStateParams, // const VkPipelineMultisampleStateCreateInfo* pMultisampleState; &depthStencilStateParams, // const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; &colorBlendStateParams, // const VkPipelineColorBlendStateCreateInfo* pColorBlendState; &dynamicStateParams, // const VkPipelineDynamicStateCreateInfo* pDynamicState; - 0u, // VkPipelineCreateFlags flags; *m_pipelineLayout, // VkPipelineLayout layout; *m_renderPass, // VkRenderPass renderPass; 0u, // deUint32 subpass; @@ -770,36 +759,39 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, // Create vertex buffer { - const VkBufferCreateInfo vertexBufferParams = + const VkDeviceSize vertexBufferSize = (VkDeviceSize)(m_vertices.size() * sizeof(Vertex4Tex4)); + const VkBufferCreateInfo vertexBufferParams = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 1024u, // VkDeviceSize size; - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, // VkBufferUsageFlags usage; 0u, // VkBufferCreateFlags flags; + vertexBufferSize, // VkDeviceSize size; + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, // VkBufferUsageFlags usage; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; + 1u, // deUint32 queueFamilyIndexCount; &queueFamilyIndex // const deUint32* pQueueFamilyIndices; }; + DE_ASSERT(vertexBufferSize > 0); + m_vertexBuffer = createBuffer(vk, vkDevice, &vertexBufferParams); m_vertexBufferAlloc = memAlloc.allocate(getBufferMemoryRequirements(vk, vkDevice, *m_vertexBuffer), MemoryRequirement::HostVisible); VK_CHECK(vk.bindBufferMemory(vkDevice, *m_vertexBuffer, m_vertexBufferAlloc->getMemory(), m_vertexBufferAlloc->getOffset())); // Load vertices into vertex buffer - deMemcpy(m_vertexBufferAlloc->getHostPtr(), m_vertices.data(), m_vertices.size() * sizeof(Vertex4Tex4)); + deMemcpy(m_vertexBufferAlloc->getHostPtr(), &m_vertices[0], vertexBufferSize); flushMappedMemoryRange(vk, vkDevice, m_vertexBufferAlloc->getMemory(), m_vertexBufferAlloc->getOffset(), vertexBufferParams.size); } // Create command pool { - const VkCmdPoolCreateInfo cmdPoolParams = + const VkCommandPoolCreateInfo cmdPoolParams = { - VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - queueFamilyIndex, // deUint32 queueFamilyIndex; - VK_CMD_POOL_CREATE_TRANSIENT_BIT // VkCmdPoolCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // VkCommandPoolCreateFlags flags; + queueFamilyIndex // deUint32 queueFamilyIndex; }; m_cmdPool = createCommandPool(vk, vkDevice, &cmdPoolParams); @@ -807,23 +799,26 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, // Create command buffer { - const VkCmdBufferCreateInfo cmdBufferParams = + const VkCommandBufferAllocateInfo cmdBufferAllocateInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_cmdPool, // VkCmdPool cmdPool; - VK_CMD_BUFFER_LEVEL_PRIMARY, // VkCmdBufferLevel level; - 0u // VkCmdBufferCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *m_cmdPool, // VkCommandPool commandPool; + VK_COMMAND_BUFFER_LEVEL_PRIMARY, // VkCommandBufferLevel level; + 1u, // deUint32 bufferCount; }; - const VkCmdBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL // VkFramebuffer framebuffer; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkCommandBufferUsageFlags flags; + DE_NULL, // VkRenderPass renderPass; + 0u, // deUint32 subpass; + DE_NULL, // VkFramebuffer framebuffer; + false, // VkBool32 occlusionQueryEnable; + 0u, // VkQueryControlFlags queryFlags; + 0u // VkQueryPipelineStatisticFlags pipelineStatistics; }; const VkClearValue attachmentClearValue = defaultClearValue(m_colorFormat); @@ -839,10 +834,10 @@ ImageSamplingInstance::ImageSamplingInstance (Context& context, &attachmentClearValue // const VkClearValue* pClearValues; }; - m_cmdBuffer = createCommandBuffer(vk, vkDevice, &cmdBufferParams); + m_cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferAllocateInfo); VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_RENDER_PASS_CONTENTS_INLINE); + vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); vk.cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_graphicsPipeline); @@ -878,9 +873,20 @@ tcu::TestStatus ImageSamplingInstance::iterate (void) const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); const VkQueue queue = m_context.getUniversalQueue(); + const VkSubmitInfo submitInfo = + { + VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 commandBufferCount; + &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; + 0u, // deUint32 signalSemaphoreCount; + DE_NULL // const VkSemaphore* pSignalSemaphores; + }; VK_CHECK(vk.resetFences(vkDevice, 1, &m_fence.get())); - VK_CHECK(vk.queueSubmit(queue, 1, &m_cmdBuffer.get(), *m_fence)); + VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *m_fence)); VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity */)); return verifyImage(); @@ -891,20 +897,20 @@ tcu::TestStatus ImageSamplingInstance::verifyImage (void) const tcu::TextureFormat colorFormat = mapVkFormat(m_colorFormat); const tcu::TextureFormat depthStencilFormat = tcu::TextureFormat(); // Undefined depth/stencil format. const tcu::Sampler sampler = mapVkSampler(m_samplerParams); - const tcu::UVec4 channelMapping = mapVkChannelMapping(m_channelMapping); + const tcu::UVec4 componentMapping = mapVkComponentMapping(m_componentMapping); float samplerLod; bool compareOk; MovePtr program; MovePtr refRenderer; // Set up LOD of reference sampler - if (m_samplerParams.mipMode == VK_TEX_MIPMAP_MODE_BASE) + if (m_samplerParams.mipmapMode == VK_SAMPLER_MIPMAP_MODE_BASE) samplerLod = 0.0f; else samplerLod = de::max(m_samplerParams.minLod, de::min(m_samplerParams.maxLod, m_samplerParams.mipLodBias + m_samplerLod)); // Create reference program that uses image subresource range - program = createRefProgram(colorFormat, sampler, samplerLod, channelMapping, *m_texture, m_imageViewType, m_arraySize, m_subresourceRange); + program = createRefProgram(colorFormat, sampler, samplerLod, componentMapping, *m_texture, m_imageViewType, m_layerCount, m_subresourceRange); const rr::Program referenceProgram = program->getReferenceProgram(); // Render reference image diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp index 954fbdf..653c1ae 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.hpp @@ -57,8 +57,8 @@ public: vk::VkImageViewType imageViewType, vk::VkFormat imageFormat, const tcu::IVec3& imageSize, - int arraySize, - const vk::VkChannelMapping& channelMapping, + int layerCount, + const vk::VkComponentMapping& componentMapping, const vk::VkImageSubresourceRange& subresourceRange, const vk::VkSamplerCreateInfo& samplerParams, float samplerLod, @@ -74,9 +74,9 @@ protected: private: const vk::VkImageViewType m_imageViewType; const tcu::IVec3 m_imageSize; - const int m_arraySize; + const int m_layerCount; - const vk::VkChannelMapping m_channelMapping; + const vk::VkComponentMapping m_componentMapping; const vk::VkImageSubresourceRange m_subresourceRange; const vk::VkSamplerCreateInfo m_samplerParams; const float m_samplerLod; @@ -102,8 +102,6 @@ private: vk::Move m_vertexShaderModule; vk::Move m_fragmentShaderModule; - vk::Move m_vertexShader; - vk::Move m_fragmentShader; vk::Move m_vertexBuffer; std::vector m_vertices; @@ -112,8 +110,8 @@ private: vk::Move m_pipelineLayout; vk::Move m_graphicsPipeline; - vk::Move m_cmdPool; - vk::Move m_cmdBuffer; + vk::Move m_cmdPool; + vk::Move m_cmdBuffer; vk::Move m_fence; }; diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp index ad02447..de6b172 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageTests.cpp @@ -167,7 +167,7 @@ TestInstance* ImageTest::createInstance (Context& context) const } const std::vector vertices = createTestQuadMosaic(m_imageViewType); - const VkChannelMapping channelMapping = getFormatChannelMapping(m_imageFormat); + const VkComponentMapping componentMapping = getFormatComponentMapping(m_imageFormat); const VkImageSubresourceRange subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, @@ -179,25 +179,26 @@ TestInstance* ImageTest::createInstance (Context& context) const const VkSamplerCreateInfo samplerParams = { - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_TEX_FILTER_NEAREST, // VkTexFilter magFilter; - VK_TEX_FILTER_NEAREST, // VkTexFilter minFilter; - VK_TEX_MIPMAP_MODE_NEAREST, // VkTexMipmapMode mipMode; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddress addressU; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddress addressV; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddress addressW; - 0.0f, // float mipLodBias; - 1.0f, // float maxAnisotropy; - false, // VkBool32 compareEnable; - VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; - 0.0f, // float minLod; - (float)(subresourceRange.mipLevels - 1), // float maxLod; - getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; - false // VkBool32 unnormalizedCoordinates; + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkSamplerCreateFlags flags; + VK_FILTER_NEAREST, // VkFilter magFilter; + VK_FILTER_NEAREST, // VkFilter minFilter; + VK_SAMPLER_MIPMAP_MODE_NEAREST, // VkSamplerMipmapMode mipmapMode; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeU; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeV; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW; + 0.0f, // float mipLodBias; + 1.0f, // float maxAnisotropy; + false, // VkBool32 compareEnable; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0.0f, // float minLod; + (float)(subresourceRange.levelCount - 1), // float maxLod; + getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; + false // VkBool32 unnormalizedCoordinates; }; - return new ImageSamplingInstance(context, renderSize, m_imageViewType, m_imageFormat, m_imageSize, m_arraySize, channelMapping, subresourceRange, samplerParams, 0.0f, vertices); + return new ImageSamplingInstance(context, renderSize, m_imageViewType, m_imageFormat, m_imageSize, m_arraySize, componentMapping, subresourceRange, samplerParams, 0.0f, vertices); } std::string ImageTest::getGlslSamplerType (const tcu::TextureFormat& format, VkImageViewType type) @@ -421,10 +422,10 @@ tcu::TestCaseGroup* createImageTests (tcu::TestContext& testCtx) // All supported dEQP formats that are not intended for depth or stencil. const VkFormat formats[] = { - VK_FORMAT_R4G4_UNORM, - VK_FORMAT_R4G4B4A4_UNORM, - VK_FORMAT_R5G6B5_UNORM, - VK_FORMAT_R5G5B5A1_UNORM, + VK_FORMAT_R4G4_UNORM_PACK8, + VK_FORMAT_R4G4B4A4_UNORM_PACK16, + VK_FORMAT_R5G6B5_UNORM_PACK16, + VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_USCALED, @@ -453,9 +454,9 @@ tcu::TestCaseGroup* createImageTests (tcu::TestContext& testCtx) VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SRGB, - VK_FORMAT_R10G10B10A2_UNORM, - VK_FORMAT_R10G10B10A2_UINT, - VK_FORMAT_R10G10B10A2_USCALED, + VK_FORMAT_A2R10G10B10_UNORM_PACK32, + VK_FORMAT_A2R10G10B10_UINT_PACK32, + VK_FORMAT_A2R10G10B10_USCALED_PACK32, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_USCALED, @@ -496,50 +497,50 @@ tcu::TestCaseGroup* createImageTests (tcu::TestContext& testCtx) VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SFLOAT, - VK_FORMAT_R11G11B10_UFLOAT, - VK_FORMAT_R9G9B9E5_UFLOAT, - VK_FORMAT_B4G4R4A4_UNORM, - VK_FORMAT_B5G5R5A1_UNORM, + VK_FORMAT_B10G11R11_UFLOAT_PACK32, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + VK_FORMAT_B4G4R4A4_UNORM_PACK16, + VK_FORMAT_B5G5R5A1_UNORM_PACK16, // Compressed formats - VK_FORMAT_ETC2_R8G8B8_UNORM, - VK_FORMAT_ETC2_R8G8B8_SRGB, - VK_FORMAT_ETC2_R8G8B8A1_UNORM, - VK_FORMAT_ETC2_R8G8B8A1_SRGB, - VK_FORMAT_ETC2_R8G8B8A8_UNORM, - VK_FORMAT_ETC2_R8G8B8A8_SRGB, - VK_FORMAT_EAC_R11_UNORM, - VK_FORMAT_EAC_R11_SNORM, - VK_FORMAT_EAC_R11G11_UNORM, - VK_FORMAT_EAC_R11G11_SNORM, - VK_FORMAT_ASTC_4x4_UNORM, - VK_FORMAT_ASTC_4x4_SRGB, - VK_FORMAT_ASTC_5x4_UNORM, - VK_FORMAT_ASTC_5x4_SRGB, - VK_FORMAT_ASTC_5x5_UNORM, - VK_FORMAT_ASTC_5x5_SRGB, - VK_FORMAT_ASTC_6x5_UNORM, - VK_FORMAT_ASTC_6x5_SRGB, - VK_FORMAT_ASTC_6x6_UNORM, - VK_FORMAT_ASTC_6x6_SRGB, - VK_FORMAT_ASTC_8x5_UNORM, - VK_FORMAT_ASTC_8x5_SRGB, - VK_FORMAT_ASTC_8x6_UNORM, - VK_FORMAT_ASTC_8x6_SRGB, - VK_FORMAT_ASTC_8x8_UNORM, - VK_FORMAT_ASTC_8x8_SRGB, - VK_FORMAT_ASTC_10x5_UNORM, - VK_FORMAT_ASTC_10x5_SRGB, - VK_FORMAT_ASTC_10x6_UNORM, - VK_FORMAT_ASTC_10x6_SRGB, - VK_FORMAT_ASTC_10x8_UNORM, - VK_FORMAT_ASTC_10x8_SRGB, - VK_FORMAT_ASTC_10x10_UNORM, - VK_FORMAT_ASTC_10x10_SRGB, - VK_FORMAT_ASTC_12x10_UNORM, - VK_FORMAT_ASTC_12x10_SRGB, - VK_FORMAT_ASTC_12x12_UNORM, - VK_FORMAT_ASTC_12x12_SRGB, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + VK_FORMAT_EAC_R11_UNORM_BLOCK, + VK_FORMAT_EAC_R11_SNORM_BLOCK, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + VK_FORMAT_ASTC_4x4_SRGB_BLOCK, + VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + VK_FORMAT_ASTC_5x5_SRGB_BLOCK, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + VK_FORMAT_ASTC_6x5_SRGB_BLOCK, + VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + VK_FORMAT_ASTC_8x5_SRGB_BLOCK, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + VK_FORMAT_ASTC_8x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + VK_FORMAT_ASTC_10x5_SRGB_BLOCK, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + VK_FORMAT_ASTC_10x6_SRGB_BLOCK, + VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + VK_FORMAT_ASTC_10x10_SRGB_BLOCK, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + VK_FORMAT_ASTC_12x10_SRGB_BLOCK, + VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK, }; de::MovePtr imageTests (new tcu::TestCaseGroup(testCtx, "image", "Image tests")); diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp index 14484d6..43fc893 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp @@ -66,7 +66,7 @@ bool isSupportedSamplableFormat (const InstanceInterface& instanceInterface, VkP VkPhysicalDeviceFeatures physicalFeatures; const tcu::CompressedTexFormat compressedFormat = mapVkCompressedFormat(format); - VK_CHECK(instanceInterface.getPhysicalDeviceFeatures(device, &physicalFeatures)); + instanceInterface.getPhysicalDeviceFeatures(device, &physicalFeatures); if (tcu::isAstcFormat(compressedFormat)) { @@ -85,12 +85,7 @@ bool isSupportedSamplableFormat (const InstanceInterface& instanceInterface, VkP } VkFormatProperties formatProps; - const VkResult formatQueryResult = instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps); - - if (formatQueryResult == VK_UNSUPPORTED) - return false; - else - VK_CHECK(formatQueryResult); + instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps); return (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) != 0u; } @@ -135,8 +130,8 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v { Move buffer; de::MovePtr bufferAlloc; - Move cmdPool; - Move cmdBuffer; + Move cmdPool; + Move cmdBuffer; Move fence; const tcu::TextureFormat tcuFormat = mapVkFormat(format); const VkDeviceSize pixelDataSize = renderSize.x() * renderSize.y() * tcuFormat.getPixelSize(); @@ -148,12 +143,12 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - pixelDataSize, // VkDeviceSize size; - VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT, // VkBufferUsageFlags usage; 0u, // VkBufferCreateFlags flags; + pixelDataSize, // VkDeviceSize size; + VK_BUFFER_USAGE_TRANSFER_DST_BIT, // VkBufferUsageFlags usage; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 0u, // deUint32 queueFamilyCount; - DE_NULL, // const deUint32* pQueueFamilyIndices; + 0u, // deUint32 queueFamilyIndexCount; + DE_NULL // const deUint32* pQueueFamilyIndices; }; buffer = createBuffer(vk, device, &bufferParams); @@ -163,26 +158,26 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v // Create command pool and buffer { - const VkCmdPoolCreateInfo cmdPoolParams = + const VkCommandPoolCreateInfo cmdPoolParams = { - VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - queueFamilyIndex, // deUint32 queueFamilyIndex; - VK_CMD_POOL_CREATE_TRANSIENT_BIT // VkCmdPoolCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // VkCmdPoolCreateFlags flags; + queueFamilyIndex, // deUint32 queueFamilyIndex; }; cmdPool = createCommandPool(vk, device, &cmdPoolParams); - const VkCmdBufferCreateInfo cmdBufferParams = + const VkCommandBufferAllocateInfo cmdBufferAllocateInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *cmdPool, // VkCmdPool cmdPool; - VK_CMD_BUFFER_LEVEL_PRIMARY, // VkCmdBufferLevel level; - 0u, // VkCmdBufferCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *cmdPool, // VkCommandPool commandPool; + VK_COMMAND_BUFFER_LEVEL_PRIMARY, // VkCommandBufferLevel level; + 1u // deUint32 bufferCount; }; - cmdBuffer = createCommandBuffer(vk, device, &cmdBufferParams); + cmdBuffer = allocateCommandBuffer(vk, device, &cmdBufferAllocateInfo); } // Create fence @@ -203,12 +198,12 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType; DE_NULL, // const void* pNext; - VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT, // VkMemoryOutputFlags outputMask; - VK_MEMORY_INPUT_TRANSFER_BIT, // VkMemoryInputFlags inputMask; + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_TRANSFER_READ_BIT, // VkAccessFlags dstAccessMask; VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout oldLayout; - VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL, // VkImageLayout newLayout; + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, // VkImageLayout newLayout; VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 dstQueueFamilyIndex; image, // VkImage image; { // VkImageSubresourceRange subresourceRange; VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask; @@ -221,25 +216,28 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v const VkBufferMemoryBarrier bufferBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_MEMORY_OUTPUT_TRANSFER_BIT, // VkMemoryOutputFlags outputMask; - VK_MEMORY_INPUT_HOST_READ_BIT, // VkMemoryInputFlags inputMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - *buffer, // VkBuffer buffer; - 0u, // VkDeviceSize offset; - pixelDataSize // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 dstQueueFamilyIndex; + *buffer, // VkBuffer buffer; + 0u, // VkDeviceSize offset; + pixelDataSize // VkDeviceSize size; }; - const VkCmdBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT | VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL // VkFramebuffer framebuffer; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; + DE_NULL, // VkRenderPass renderPass; + 0u, // deUint32 subpass; + DE_NULL, // VkFramebuffer framebuffer; + false, // VkBool32 occlusionQueryEnable; + 0u, // VkQueryControlFlags queryFlags; + 0u // VkQueryPipelineStatisticFlags pipelineStatistics; }; const void* const imageBarrierPtr = &imageBarrier; @@ -252,18 +250,30 @@ de::MovePtr readColorAttachment (const vk::DeviceInterface& v 0u, // VkDeviceSize bufferOffset; (deUint32)renderSize.x(), // deUint32 bufferRowLength; (deUint32)renderSize.y(), // deUint32 bufferImageHeight; - { VK_IMAGE_ASPECT_COLOR, 0u, 0u, 1u }, // VkImageSubresourceCopy imageSubresource; + { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u }, // VkImageSubresourceLayers imageSubresource; { 0, 0, 0 }, // VkOffset3D imageOffset; { renderSize.x(), renderSize.y(), 1 } // VkExtent3D imageExtent; }; VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 1, &imageBarrierPtr); - vk.cmdCopyImageToBuffer(*cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL, *buffer, 1, ©Region); + vk.cmdCopyImageToBuffer(*cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1, ©Region); vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &bufferBarrierPtr); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); - VK_CHECK(vk.queueSubmit(queue, 1, &cmdBuffer.get(), *fence)); + const VkSubmitInfo submitInfo = + { + VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 commandBufferCount; + &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; + 0u, // deUint32 signalSemaphoreCount; + DE_NULL // const VkSemaphore* pSignalSemaphores; + }; + + VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *fence)); VK_CHECK(vk.waitForFences(device, 1, &fence.get(), 0, ~(0ull) /* infinity */)); // Read buffer data @@ -284,8 +294,8 @@ void uploadTestTexture (const DeviceInterface& vk, deUint32 bufferSize; Move buffer; de::MovePtr bufferAlloc; - Move cmdPool; - Move cmdBuffer; + Move cmdPool; + Move cmdBuffer; Move fence; std::vector levelDataSizes; @@ -298,11 +308,11 @@ void uploadTestTexture (const DeviceInterface& vk, { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - bufferSize, // VkDeviceSize size; - VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT, // VkBufferUsageFlags usage; 0u, // VkBufferCreateFlags flags; + bufferSize, // VkDeviceSize size; + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, // VkBufferUsageFlags usage; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 0u, // deUint32 queueFamilyCount; + 0u, // deUint32 queueFamilyIndexCount; DE_NULL, // const deUint32* pQueueFamilyIndices; }; @@ -313,26 +323,26 @@ void uploadTestTexture (const DeviceInterface& vk, // Create command pool and buffer { - const VkCmdPoolCreateInfo cmdPoolParams = + const VkCommandPoolCreateInfo cmdPoolParams = { - VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - queueFamilyIndex, // deUint32 queueFamilyIndex; - VK_CMD_POOL_CREATE_TRANSIENT_BIT // VkCmdPoolCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // VkCommandPoolCreateFlags flags; + queueFamilyIndex, // deUint32 queueFamilyIndex; }; cmdPool = createCommandPool(vk, device, &cmdPoolParams); - const VkCmdBufferCreateInfo cmdBufferParams = + const VkCommandBufferAllocateInfo cmdBufferAllocateInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *cmdPool, // VkCmdPool cmdPool; - VK_CMD_BUFFER_LEVEL_PRIMARY, // VkCmdBufferLevel level; - 0u, // VkCmdBufferCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *cmdPool, // VkCommandPool commandPool; + VK_COMMAND_BUFFER_LEVEL_PRIMARY, // VkCommandBufferLevel level; + 1u, // deUint32 bufferCount; }; - cmdBuffer = createCommandBuffer(vk, device, &cmdBufferParams); + cmdBuffer = allocateCommandBuffer(vk, device, &cmdBufferAllocateInfo); } // Create fence @@ -350,27 +360,27 @@ void uploadTestTexture (const DeviceInterface& vk, // Barriers for copying buffer to image const VkBufferMemoryBarrier preBufferBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_MEMORY_OUTPUT_HOST_WRITE_BIT, // VkMemoryOutputFlags outputMask; - VK_MEMORY_INPUT_TRANSFER_BIT, // VkMemoryInputFlags inputMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - *buffer, // VkBuffer buffer; - 0u, // VkDeviceSize offset; - bufferSize // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_HOST_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_TRANSFER_READ_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 dstQueueFamilyIndex; + *buffer, // VkBuffer buffer; + 0u, // VkDeviceSize offset; + bufferSize // VkDeviceSize size; }; const VkImageMemoryBarrier preImageBarrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType; DE_NULL, // const void* pNext; - 0u, // VkMemoryOutputFlags outputMask; - 0u, // VkMemoryInputFlags inputMask; + 0u, // VkAccessFlags srcAccessMask; + 0u, // VkAccessFlags dstAccessMask; VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout oldLayout; - VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, // VkImageLayout newLayout; + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, // VkImageLayout newLayout; VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 dstQueueFamilyIndex; destImage, // VkImage image; { // VkImageSubresourceRange subresourceRange; VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspect aspect; @@ -385,12 +395,12 @@ void uploadTestTexture (const DeviceInterface& vk, { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType; DE_NULL, // const void* pNext; - VK_MEMORY_OUTPUT_TRANSFER_BIT, // VkMemoryOutputFlags outputMask; - VK_MEMORY_INPUT_SHADER_READ_BIT, // VkMemoryInputFlags inputMask; - VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, // VkImageLayout oldLayout; + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_SHADER_READ_BIT, // VkAccessFlags dstAccessMask; + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, // VkImageLayout oldLayout; VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, // VkImageLayout newLayout; VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 dstQueueFamilyIndex; destImage, // VkImage image; { // VkImageSubresourceRange subresourceRange; VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspect aspect; @@ -401,14 +411,17 @@ void uploadTestTexture (const DeviceInterface& vk, } }; - const VkCmdBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT | VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL // VkFramebuffer framebuffer; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, // VkCommandBufferUsageFlags flags; + DE_NULL, // VkRenderPass renderPass; + 0u, // deUint32 subpass; + DE_NULL, // VkFramebuffer framebuffer; + false, // VkBool32 occlusionQueryEnable; + 0u, // VkQueryControlFlags queryFlags; + 0u // VkQueryPipelineStatisticFlags pipelineStatistics; }; const void* preCopyBarriers[2] = @@ -427,12 +440,24 @@ void uploadTestTexture (const DeviceInterface& vk, // Copy buffer to image VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo)); vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_FALSE, 2, preCopyBarriers); - vk.cmdCopyBufferToImage(*cmdBuffer, *buffer, destImage, VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL, (deUint32)copyRegions.size(), copyRegions.data()); + vk.cmdCopyBufferToImage(*cmdBuffer, *buffer, destImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)copyRegions.size(), copyRegions.data()); vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_FALSE, 1, &postCopyBarrier); VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); - VK_CHECK(vk.queueSubmit(queue, 1, &cmdBuffer.get(), *fence)); + const VkSubmitInfo submitInfo = + { + VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 commandBufferCount; + &cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; + 0u, // deUint32 signalSemaphoreCount; + DE_NULL // const VkSemaphore* pSignalSemaphores; + }; + + VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *fence)); VK_CHECK(vk.waitForFences(device, 1, &fence.get(), true, ~(0ull) /* infinity */)); } @@ -562,8 +587,8 @@ std::vector TestTexture::getBufferCopyRegions (void) const layerDataOffset, // VkDeviceSize bufferOffset; (deUint32)level.getWidth(), // deUint32 bufferRowLength; (deUint32)level.getHeight(), // deUint32 bufferImageHeight; - { // VkImageSubresourceCopy imageSubresource; - VK_IMAGE_ASPECT_COLOR, + { // VkImageSubresourceLayers imageSubresource; + VK_IMAGE_ASPECT_COLOR_BIT, (deUint32)levelNdx, (deUint32)layerNdx, 1u @@ -596,8 +621,8 @@ std::vector TestTexture::getBufferCopyRegions (void) const layerDataOffset, // VkDeviceSize bufferOffset; (deUint32)level.getWidth(), // deUint32 bufferRowLength; (deUint32)level.getHeight(), // deUint32 bufferImageHeight; - { // VkImageSubresourceCopy imageSubresource; - VK_IMAGE_ASPECT_COLOR, + { // VkImageSubresourceLayers imageSubresource; + VK_IMAGE_ASPECT_COLOR_BIT, (deUint32)levelNdx, (deUint32)layerNdx, 1u @@ -952,6 +977,16 @@ const tcu::Texture3D& TestTexture3D::getTexture (void) const // TestTextureCube +const static tcu::CubeFace tcuFaceMapping[tcu::CUBEFACE_LAST] = +{ + tcu::CUBEFACE_POSITIVE_X, + tcu::CUBEFACE_NEGATIVE_X, + tcu::CUBEFACE_POSITIVE_Y, + tcu::CUBEFACE_NEGATIVE_Y, + tcu::CUBEFACE_POSITIVE_Z, + tcu::CUBEFACE_NEGATIVE_Z +}; + TestTextureCube::TestTextureCube (const tcu::TextureFormat& format, int size) : TestTexture (format, size, size, 1) , m_texture (format, size) @@ -960,8 +995,8 @@ TestTextureCube::TestTextureCube (const tcu::TextureFormat& format, int size) { for (int faceNdx = 0; faceNdx < tcu::CUBEFACE_LAST; faceNdx++) { - m_texture.allocLevel((tcu::CubeFace)faceNdx, levelNdx); - TestTexture::fillWithGradient(m_texture.getLevelFace(levelNdx, (tcu::CubeFace)faceNdx)); + m_texture.allocLevel(tcuFaceMapping[faceNdx], levelNdx); + TestTexture::fillWithGradient(m_texture.getLevelFace(levelNdx, tcuFaceMapping[faceNdx])); } } } @@ -976,8 +1011,8 @@ TestTextureCube::TestTextureCube (const tcu::CompressedTexFormat& format, int si { for (int faceNdx = 0; faceNdx < tcu::CUBEFACE_LAST; faceNdx++) { - m_texture.allocLevel((tcu::CubeFace)faceNdx, levelNdx); - levels[levelNdx * tcu::CUBEFACE_LAST + faceNdx] = m_texture.getLevelFace(levelNdx, (tcu::CubeFace)faceNdx); + m_texture.allocLevel(tcuFaceMapping[faceNdx], levelNdx); + levels[levelNdx * tcu::CUBEFACE_LAST + faceNdx] = m_texture.getLevelFace(levelNdx, tcuFaceMapping[faceNdx]); } } @@ -1008,52 +1043,6 @@ int TestTextureCube::getArraySize (void) const return (int)tcu::CUBEFACE_LAST; } -void TestTextureCube::write (deUint8* destPtr) const -{ - const static tcu::CubeFace faceOrder[tcu::CUBEFACE_LAST] = - { - tcu::CUBEFACE_POSITIVE_X, - tcu::CUBEFACE_NEGATIVE_X, - tcu::CUBEFACE_POSITIVE_Y, - tcu::CUBEFACE_NEGATIVE_Y, - tcu::CUBEFACE_POSITIVE_Z, - tcu::CUBEFACE_NEGATIVE_Z, - }; - - deUint32 faceDataOffset = 0; - - if (isCompressed()) - { - for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) - { - for (int faceNdx = 0; faceNdx < tcu::CUBEFACE_LAST; faceNdx++) - { - const tcu::CompressedTexture& compressedTex = getCompressedLevel(levelNdx, faceOrder[faceNdx]); - - faceDataOffset = getNextMultiple<4>(faceDataOffset); - deMemcpy(destPtr + faceDataOffset, compressedTex.getData(), compressedTex.getDataSize()); - faceDataOffset += compressedTex.getDataSize(); - } - } - } - else - { - for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) - { - for (int faceNdx = 0; faceNdx < tcu::CUBEFACE_LAST; faceNdx++) - { - faceDataOffset = getNextMultiple<4>(faceDataOffset); - - const tcu::ConstPixelBufferAccess srcAccess = getLevel(levelNdx, faceOrder[faceNdx]); - const tcu::PixelBufferAccess destAccess (srcAccess.getFormat(), srcAccess.getSize(), srcAccess.getPitch(), destPtr + faceDataOffset); - - tcu::copy(destAccess, srcAccess); - faceDataOffset += srcAccess.getWidth() * srcAccess.getHeight() * srcAccess.getDepth() * srcAccess.getFormat().getPixelSize(); - } - } - } -} - const tcu::TextureCube& TestTextureCube::getTexture (void) const { return m_texture; @@ -1082,7 +1071,7 @@ TestTextureCubeArray::TestTextureCubeArray (const tcu::CompressedTexFormat& form for (int layerNdx = 0; layerNdx < m_texture.getDepth(); layerNdx++) layers.push_back(getLevel(levelNdx, layerNdx)); - TestTexture::populateLevels(layers); + TestTexture::populateCompressedLevels(format, layers); } TestTextureCubeArray::~TestTextureCubeArray (void) @@ -1122,53 +1111,5 @@ const tcu::TextureCubeArray& TestTextureCubeArray::getTexture (void) const return m_texture; } -void TestTextureCubeArray::write (deUint8* destPtr) const -{ - const static tcu::CubeFace faceOrder[tcu::CUBEFACE_LAST] = - { - tcu::CUBEFACE_POSITIVE_X, - tcu::CUBEFACE_NEGATIVE_X, - tcu::CUBEFACE_POSITIVE_Y, - tcu::CUBEFACE_NEGATIVE_Y, - tcu::CUBEFACE_POSITIVE_Z, - tcu::CUBEFACE_NEGATIVE_Z, - }; - - deUint32 faceDataOffset = 0; - - if (isCompressed()) - { - for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) - { - for (int faceNdx = 0; faceNdx < getArraySize(); faceNdx++) - { - const int cubeIndex = faceNdx / tcu::CUBEFACE_LAST; - const tcu::CompressedTexture& compressedTex = getCompressedLevel(levelNdx, cubeIndex * tcu::CUBEFACE_LAST + faceOrder[faceNdx % tcu::CUBEFACE_LAST]); - - faceDataOffset = getNextMultiple<4>(faceDataOffset); - deMemcpy(destPtr + faceDataOffset, compressedTex.getData(), compressedTex.getDataSize()); - faceDataOffset += compressedTex.getDataSize(); - } - } - } - else - { - for (int levelNdx = 0; levelNdx < getNumLevels(); levelNdx++) - { - for (int faceNdx = 0; faceNdx < getArraySize(); faceNdx++) - { - faceDataOffset = getNextMultiple<4>(faceDataOffset); - - const int cubeIndex = faceNdx / tcu::CUBEFACE_LAST; - const tcu::ConstPixelBufferAccess srcAccess = getLevel(levelNdx, cubeIndex * tcu::CUBEFACE_LAST + faceOrder[faceNdx % tcu::CUBEFACE_LAST]); - const tcu::PixelBufferAccess destAccess (srcAccess.getFormat(), srcAccess.getSize(), srcAccess.getPitch(), destPtr + faceDataOffset); - - tcu::copy(destAccess, srcAccess); - faceDataOffset += srcAccess.getWidth() * srcAccess.getHeight() * srcAccess.getDepth() * srcAccess.getFormat().getPixelSize(); - } - } - } -} - } // pipeline } // vkt diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp index f930cfe..3819b0c 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp @@ -224,7 +224,6 @@ public: virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; virtual int getArraySize (void) const; virtual const tcu::TextureCube& getTexture (void) const; - virtual void write (deUint8* destPtr) const; }; class TestTextureCubeArray: public TestTexture @@ -242,7 +241,6 @@ public: virtual const tcu::ConstPixelBufferAccess getLevel (int level, int layer) const; virtual int getArraySize (void) const; virtual const tcu::TextureCubeArray& getTexture (void) const; - virtual void write (deUint8* destPtr) const; }; } // pipeline diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp index d41eb0d..07ff6b1 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageViewTests.cpp @@ -69,7 +69,7 @@ public: VkImageViewType imageViewType, VkFormat imageFormat, float samplerLod, - const VkChannelMapping& channelMapping, + const VkComponentMapping& componentMapping, const VkImageSubresourceRange& subresourceRange); virtual ~ImageViewTest (void) {} @@ -84,7 +84,7 @@ private: VkImageViewType m_imageViewType; VkFormat m_imageFormat; float m_samplerLod; - VkChannelMapping m_channelMapping; + VkComponentMapping m_componentMapping; VkImageSubresourceRange m_subresourceRange; }; @@ -94,14 +94,14 @@ ImageViewTest::ImageViewTest (tcu::TestContext& testContext, VkImageViewType imageViewType, VkFormat imageFormat, float samplerLod, - const VkChannelMapping& channelMapping, + const VkComponentMapping& componentMapping, const VkImageSubresourceRange& subresourceRange) : vkt::TestCase (testContext, name, description) , m_imageViewType (imageViewType) , m_imageFormat (imageFormat) , m_samplerLod (samplerLod) - , m_channelMapping (channelMapping) + , m_componentMapping (componentMapping) , m_subresourceRange (subresourceRange) { } @@ -179,25 +179,26 @@ TestInstance* ImageViewTest::createInstance (Context& context) const const VkSamplerCreateInfo samplerParams = { - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_TEX_FILTER_NEAREST, // VkTexFilter magFilter; - VK_TEX_FILTER_NEAREST, // VkTexFilter minFilter; - VK_TEX_MIPMAP_MODE_NEAREST, // VkTexMipmapMode mipMode; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddressMode addressModeU; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddressMode addressModeV; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddressMode addressModeW; - 0.0f, // float mipLodBias; - 1.0f, // float maxAnisotropy; - false, // VkBool32 compareEnable; - VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; - 0.0f, // float minLod; - (float)(m_subresourceRange.mipLevels - 1), // float maxLod; - getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; - false // VkBool32 unnormalizedCoordinates; + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkSamplerCreateFlags flags; + VK_FILTER_NEAREST, // VkFilter magFilter; + VK_FILTER_NEAREST, // VkFilter minFilter; + VK_SAMPLER_MIPMAP_MODE_NEAREST, // VkSamplerMipmapMode mipmapMode; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeU; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeV; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW; + 0.0f, // float mipLodBias; + 1.0f, // float maxAnisotropy; + false, // VkBool32 compareEnable; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0.0f, // float minLod; + (float)(m_subresourceRange.levelCount - 1), // float maxLod; + getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; + false // VkBool32 unnormalizedCoordinates; }; - return new ImageSamplingInstance(context, renderSize, m_imageViewType, m_imageFormat, imageSize, arraySize, m_channelMapping, m_subresourceRange, samplerParams, m_samplerLod, vertices); + return new ImageSamplingInstance(context, renderSize, m_imageViewType, m_imageFormat, imageSize, arraySize, m_componentMapping, m_subresourceRange, samplerParams, m_samplerLod, vertices); } std::string ImageViewTest::getGlslSamplerType (const tcu::TextureFormat& format, VkImageViewType type) @@ -319,7 +320,7 @@ static de::MovePtr createSubresourceRangeTests(tcu::TestCont const deUint32 numLevels = ImageViewTest::getNumLevels(viewType); const deUint32 arraySize = ImageViewTest::getArraySize(viewType); const VkImageAspectFlags imageAspectFlags = VK_IMAGE_ASPECT_COLOR_BIT; - const VkChannelMapping channelMapping = getFormatChannelMapping(imageFormat); + const VkComponentMapping componentMapping = getFormatComponentMapping(imageFormat); de::MovePtr rangeTests (new tcu::TestCaseGroup(testCtx, "subresource_range", "")); @@ -331,7 +332,7 @@ static de::MovePtr createSubresourceRangeTests(tcu::TestCont const TestCaseConfig config = TEST_CASES[configNdx]; \ desc << "Samples level " << config.samplerLod << " with :\n" << config.subresourceRange; \ rangeTests->addChild(new ImageViewTest(testCtx, config.name, desc.str().c_str(), viewType, \ - imageFormat, config.samplerLod, channelMapping, \ + imageFormat, config.samplerLod, componentMapping, \ config.subresourceRange)); \ } \ } while (0) @@ -447,21 +448,21 @@ static de::MovePtr createSubresourceRangeTests(tcu::TestCont return rangeTests; } -static std::vector getChannelMappingPermutations (const VkChannelMapping& channelMapping) +static std::vector getComponentMappingPermutations (const VkComponentMapping& componentMapping) { - std::vector mappings; + std::vector mappings; - const VkChannelSwizzle channelSwizzles[4] = { channelMapping.r, channelMapping.g, channelMapping.b, channelMapping.a }; + const VkComponentSwizzle channelSwizzles[4] = { componentMapping.r, componentMapping.g, componentMapping.b, componentMapping.a }; // Rearranges the channels by shifting their positions. for (int firstChannelNdx = 0; firstChannelNdx < 4; firstChannelNdx++) { - VkChannelSwizzle currentChannel[4]; + VkComponentSwizzle currentChannel[4]; for (int channelNdx = 0; channelNdx < 4; channelNdx++) currentChannel[channelNdx] = channelSwizzles[(firstChannelNdx + channelNdx) % 4]; - const VkChannelMapping mappingPermutation = + const VkComponentMapping mappingPermutation = { currentChannel[0], currentChannel[1], @@ -475,28 +476,28 @@ static std::vector getChannelMappingPermutations (const VkChan return mappings; } -static std::string getChannelSwizzleCaseName (VkChannelSwizzle channelSwizzle) +static std::string getComponentSwizzleCaseName (VkComponentSwizzle componentSwizzle) { - const std::string fullName = getChannelSwizzleName(channelSwizzle); + const std::string fullName = getComponentSwizzleName(componentSwizzle); - DE_ASSERT(de::beginsWith(fullName, "VK_CHANNEL_SWIZZLE_")); + DE_ASSERT(de::beginsWith(fullName, "VK_COMPONENT_SWIZZLE_")); - return de::toLower(fullName.substr(19)); + return de::toLower(fullName.substr(21)); } -static std::string getChannelMappingCaseName (const VkChannelMapping& channelMapping) +static std::string getComponentMappingCaseName (const VkComponentMapping& componentMapping) { std::ostringstream name; - name << getChannelSwizzleCaseName(channelMapping.r) << "_" - << getChannelSwizzleCaseName(channelMapping.g) << "_" - << getChannelSwizzleCaseName(channelMapping.b) << "_" - << getChannelSwizzleCaseName(channelMapping.a); + name << getComponentSwizzleCaseName(componentMapping.r) << "_" + << getComponentSwizzleCaseName(componentMapping.g) << "_" + << getComponentSwizzleCaseName(componentMapping.b) << "_" + << getComponentSwizzleCaseName(componentMapping.a); return name.str(); } -static de::MovePtr createChannelSwizzleTests (tcu::TestContext& testCtx, VkImageViewType viewType, VkFormat imageFormat) +static de::MovePtr createComponentSwizzleTests (tcu::TestContext& testCtx, VkImageViewType viewType, VkFormat imageFormat) { deUint32 arraySize = 0; @@ -531,18 +532,18 @@ static de::MovePtr createChannelSwizzleTests (tcu::TestConte arraySize, // deUint32 arraySize; }; - const std::vector channelMappings = getChannelMappingPermutations(getFormatChannelMapping(imageFormat)); - de::MovePtr swizzleTests (new tcu::TestCaseGroup(testCtx, "channel_swizzle", "")); + const std::vector componentMappings = getComponentMappingPermutations(getFormatComponentMapping(imageFormat)); + de::MovePtr swizzleTests (new tcu::TestCaseGroup(testCtx, "component_swizzle", "")); - for (size_t mappingNdx = 0; mappingNdx < channelMappings.size(); mappingNdx++) + for (size_t mappingNdx = 0; mappingNdx < componentMappings.size(); mappingNdx++) { swizzleTests->addChild(new ImageViewTest(testCtx, - getChannelMappingCaseName(channelMappings[mappingNdx]).c_str(), + getComponentMappingCaseName(componentMappings[mappingNdx]).c_str(), "", viewType, imageFormat, 0.0f, - channelMappings[mappingNdx], + componentMappings[mappingNdx], subresourceRange)); } @@ -571,10 +572,10 @@ tcu::TestCaseGroup* createImageViewTests (tcu::TestContext& testCtx) const VkFormat formats[] = { - VK_FORMAT_R4G4_UNORM, - VK_FORMAT_R4G4B4A4_UNORM, - VK_FORMAT_R5G6B5_UNORM, - VK_FORMAT_R5G5B5A1_UNORM, + VK_FORMAT_R4G4_UNORM_PACK8, + VK_FORMAT_R4G4B4A4_UNORM_PACK16, + VK_FORMAT_R5G6B5_UNORM_PACK16, + VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_USCALED, @@ -603,9 +604,9 @@ tcu::TestCaseGroup* createImageViewTests (tcu::TestContext& testCtx) VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SRGB, - VK_FORMAT_R10G10B10A2_UNORM, - VK_FORMAT_R10G10B10A2_UINT, - VK_FORMAT_R10G10B10A2_USCALED, + VK_FORMAT_A2R10G10B10_UNORM_PACK32, + VK_FORMAT_A2R10G10B10_UINT_PACK32, + VK_FORMAT_A2B10G10R10_USCALED_PACK32, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_USCALED, @@ -646,50 +647,50 @@ tcu::TestCaseGroup* createImageViewTests (tcu::TestContext& testCtx) VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SFLOAT, - VK_FORMAT_R11G11B10_UFLOAT, - VK_FORMAT_R9G9B9E5_UFLOAT, - VK_FORMAT_B4G4R4A4_UNORM, - VK_FORMAT_B5G5R5A1_UNORM, + VK_FORMAT_B10G11R11_UFLOAT_PACK32, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + VK_FORMAT_B4G4R4A4_UNORM_PACK16, + VK_FORMAT_B5G5R5A1_UNORM_PACK16, // Compressed formats - VK_FORMAT_ETC2_R8G8B8_UNORM, - VK_FORMAT_ETC2_R8G8B8_SRGB, - VK_FORMAT_ETC2_R8G8B8A1_UNORM, - VK_FORMAT_ETC2_R8G8B8A1_SRGB, - VK_FORMAT_ETC2_R8G8B8A8_UNORM, - VK_FORMAT_ETC2_R8G8B8A8_SRGB, - VK_FORMAT_EAC_R11_UNORM, - VK_FORMAT_EAC_R11_SNORM, - VK_FORMAT_EAC_R11G11_UNORM, - VK_FORMAT_EAC_R11G11_SNORM, - VK_FORMAT_ASTC_4x4_UNORM, - VK_FORMAT_ASTC_4x4_SRGB, - VK_FORMAT_ASTC_5x4_UNORM, - VK_FORMAT_ASTC_5x4_SRGB, - VK_FORMAT_ASTC_5x5_UNORM, - VK_FORMAT_ASTC_5x5_SRGB, - VK_FORMAT_ASTC_6x5_UNORM, - VK_FORMAT_ASTC_6x5_SRGB, - VK_FORMAT_ASTC_6x6_UNORM, - VK_FORMAT_ASTC_6x6_SRGB, - VK_FORMAT_ASTC_8x5_UNORM, - VK_FORMAT_ASTC_8x5_SRGB, - VK_FORMAT_ASTC_8x6_UNORM, - VK_FORMAT_ASTC_8x6_SRGB, - VK_FORMAT_ASTC_8x8_UNORM, - VK_FORMAT_ASTC_8x8_SRGB, - VK_FORMAT_ASTC_10x5_UNORM, - VK_FORMAT_ASTC_10x5_SRGB, - VK_FORMAT_ASTC_10x6_UNORM, - VK_FORMAT_ASTC_10x6_SRGB, - VK_FORMAT_ASTC_10x8_UNORM, - VK_FORMAT_ASTC_10x8_SRGB, - VK_FORMAT_ASTC_10x10_UNORM, - VK_FORMAT_ASTC_10x10_SRGB, - VK_FORMAT_ASTC_12x10_UNORM, - VK_FORMAT_ASTC_12x10_SRGB, - VK_FORMAT_ASTC_12x12_UNORM, - VK_FORMAT_ASTC_12x12_SRGB, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + VK_FORMAT_EAC_R11_UNORM_BLOCK, + VK_FORMAT_EAC_R11_SNORM_BLOCK, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + VK_FORMAT_ASTC_4x4_SRGB_BLOCK, + VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + VK_FORMAT_ASTC_5x5_SRGB_BLOCK, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + VK_FORMAT_ASTC_6x5_SRGB_BLOCK, + VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + VK_FORMAT_ASTC_8x5_SRGB_BLOCK, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + VK_FORMAT_ASTC_8x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + VK_FORMAT_ASTC_10x5_SRGB_BLOCK, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + VK_FORMAT_ASTC_10x6_SRGB_BLOCK, + VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + VK_FORMAT_ASTC_10x10_SRGB_BLOCK, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + VK_FORMAT_ASTC_12x10_SRGB_BLOCK, + VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK, }; de::MovePtr imageTests (new tcu::TestCaseGroup(testCtx, "image_view", "Image tests")); @@ -715,9 +716,9 @@ tcu::TestCaseGroup* createImageViewTests (tcu::TestContext& testCtx) (std::string("Samples a texture of format ") + getFormatName(format)).c_str())); de::MovePtr subresourceRangeTests = createSubresourceRangeTests(testCtx, viewType, format); - de::MovePtr channelSwizzleTests = createChannelSwizzleTests(testCtx, viewType, format); + de::MovePtr componentSwizzleTests = createComponentSwizzleTests(testCtx, viewType, format); - formatGroup->addChild(channelSwizzleTests.release()); + formatGroup->addChild(componentSwizzleTests.release()); formatGroup->addChild(subresourceRangeTests.release()); formatTests->addChild(formatGroup.release()); } diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.cpp index 0af9c64..a32196b 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.cpp @@ -45,29 +45,29 @@ namespace pipeline using namespace vk; -rr::BlendFunc mapVkBlend (VkBlend blend) +rr::BlendFunc mapVkBlendFactor (VkBlendFactor blend) { switch (blend) { - case VK_BLEND_ZERO: return rr::BLENDFUNC_ZERO; - case VK_BLEND_ONE: return rr::BLENDFUNC_ONE; - case VK_BLEND_SRC_COLOR: return rr::BLENDFUNC_SRC_COLOR; - case VK_BLEND_ONE_MINUS_SRC_COLOR: return rr::BLENDFUNC_ONE_MINUS_SRC_COLOR; - case VK_BLEND_DEST_COLOR: return rr::BLENDFUNC_DST_COLOR; - case VK_BLEND_ONE_MINUS_DEST_COLOR: return rr::BLENDFUNC_ONE_MINUS_DST_COLOR; - case VK_BLEND_SRC_ALPHA: return rr::BLENDFUNC_SRC_ALPHA; - case VK_BLEND_ONE_MINUS_SRC_ALPHA: return rr::BLENDFUNC_ONE_MINUS_SRC_ALPHA; - case VK_BLEND_DEST_ALPHA: return rr::BLENDFUNC_DST_ALPHA; - case VK_BLEND_ONE_MINUS_DEST_ALPHA: return rr::BLENDFUNC_ONE_MINUS_DST_ALPHA; - case VK_BLEND_CONSTANT_COLOR: return rr::BLENDFUNC_CONSTANT_COLOR; - case VK_BLEND_ONE_MINUS_CONSTANT_COLOR: return rr::BLENDFUNC_ONE_MINUS_CONSTANT_COLOR; - case VK_BLEND_CONSTANT_ALPHA: return rr::BLENDFUNC_CONSTANT_ALPHA; - case VK_BLEND_ONE_MINUS_CONSTANT_ALPHA: return rr::BLENDFUNC_ONE_MINUS_CONSTANT_ALPHA; - case VK_BLEND_SRC_ALPHA_SATURATE: return rr::BLENDFUNC_SRC_ALPHA_SATURATE; - case VK_BLEND_SRC1_COLOR: return rr::BLENDFUNC_SRC1_COLOR; - case VK_BLEND_ONE_MINUS_SRC1_COLOR: return rr::BLENDFUNC_ONE_MINUS_SRC1_COLOR; - case VK_BLEND_SRC1_ALPHA: return rr::BLENDFUNC_SRC1_ALPHA; - case VK_BLEND_ONE_MINUS_SRC1_ALPHA: return rr::BLENDFUNC_ONE_MINUS_SRC1_ALPHA; + case VK_BLEND_FACTOR_ZERO: return rr::BLENDFUNC_ZERO; + case VK_BLEND_FACTOR_ONE: return rr::BLENDFUNC_ONE; + case VK_BLEND_FACTOR_SRC_COLOR: return rr::BLENDFUNC_SRC_COLOR; + case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR: return rr::BLENDFUNC_ONE_MINUS_SRC_COLOR; + case VK_BLEND_FACTOR_DST_COLOR: return rr::BLENDFUNC_DST_COLOR; + case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR: return rr::BLENDFUNC_ONE_MINUS_DST_COLOR; + case VK_BLEND_FACTOR_SRC_ALPHA: return rr::BLENDFUNC_SRC_ALPHA; + case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA: return rr::BLENDFUNC_ONE_MINUS_SRC_ALPHA; + case VK_BLEND_FACTOR_DST_ALPHA: return rr::BLENDFUNC_DST_ALPHA; + case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA: return rr::BLENDFUNC_ONE_MINUS_DST_ALPHA; + case VK_BLEND_FACTOR_CONSTANT_COLOR: return rr::BLENDFUNC_CONSTANT_COLOR; + case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR: return rr::BLENDFUNC_ONE_MINUS_CONSTANT_COLOR; + case VK_BLEND_FACTOR_CONSTANT_ALPHA: return rr::BLENDFUNC_CONSTANT_ALPHA; + case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA: return rr::BLENDFUNC_ONE_MINUS_CONSTANT_ALPHA; + case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE: return rr::BLENDFUNC_SRC_ALPHA_SATURATE; + case VK_BLEND_FACTOR_SRC1_COLOR: return rr::BLENDFUNC_SRC1_COLOR; + case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR: return rr::BLENDFUNC_ONE_MINUS_SRC1_COLOR; + case VK_BLEND_FACTOR_SRC1_ALPHA: return rr::BLENDFUNC_SRC1_ALPHA; + case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA: return rr::BLENDFUNC_ONE_MINUS_SRC1_ALPHA; default: DE_ASSERT(false); } @@ -89,26 +89,26 @@ rr::BlendEquation mapVkBlendOp (VkBlendOp blendOp) return rr::BLENDEQUATION_LAST; } -tcu::BVec4 mapVkChannelFlags (VkChannelFlags flags) +tcu::BVec4 mapVkColorComponentFlags (VkColorComponentFlags flags) { - return tcu::BVec4((flags & VK_CHANNEL_R_BIT) != 0, - (flags & VK_CHANNEL_G_BIT) != 0, - (flags & VK_CHANNEL_B_BIT) != 0, - (flags & VK_CHANNEL_A_BIT) != 0); + return tcu::BVec4((flags & VK_COLOR_COMPONENT_R_BIT) != 0, + (flags & VK_COLOR_COMPONENT_G_BIT) != 0, + (flags & VK_COLOR_COMPONENT_B_BIT) != 0, + (flags & VK_COLOR_COMPONENT_A_BIT) != 0); } rr::TestFunc mapVkCompareOp (VkCompareOp compareFunc) { switch (compareFunc) { - case VK_COMPARE_OP_NEVER: return rr::TESTFUNC_NEVER; - case VK_COMPARE_OP_LESS: return rr::TESTFUNC_LESS; - case VK_COMPARE_OP_EQUAL: return rr::TESTFUNC_EQUAL; - case VK_COMPARE_OP_LESS_EQUAL: return rr::TESTFUNC_LEQUAL; - case VK_COMPARE_OP_GREATER: return rr::TESTFUNC_GREATER; - case VK_COMPARE_OP_NOT_EQUAL: return rr::TESTFUNC_NOTEQUAL; - case VK_COMPARE_OP_GREATER_EQUAL: return rr::TESTFUNC_GEQUAL; - case VK_COMPARE_OP_ALWAYS: return rr::TESTFUNC_ALWAYS; + case VK_COMPARE_OP_NEVER: return rr::TESTFUNC_NEVER; + case VK_COMPARE_OP_LESS: return rr::TESTFUNC_LESS; + case VK_COMPARE_OP_EQUAL: return rr::TESTFUNC_EQUAL; + case VK_COMPARE_OP_LESS_OR_EQUAL: return rr::TESTFUNC_LEQUAL; + case VK_COMPARE_OP_GREATER: return rr::TESTFUNC_GREATER; + case VK_COMPARE_OP_NOT_EQUAL: return rr::TESTFUNC_NOTEQUAL; + case VK_COMPARE_OP_GREATER_OR_EQUAL: return rr::TESTFUNC_GEQUAL; + case VK_COMPARE_OP_ALWAYS: return rr::TESTFUNC_ALWAYS; default: DE_ASSERT(false); } @@ -119,16 +119,16 @@ rr::PrimitiveType mapVkPrimitiveTopology (VkPrimitiveTopology primitiveTopology) { switch (primitiveTopology) { - case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: return rr::PRIMITIVETYPE_POINTS; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: return rr::PRIMITIVETYPE_LINES; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: return rr::PRIMITIVETYPE_LINE_STRIP; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: return rr::PRIMITIVETYPE_TRIANGLES; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: return rr::PRIMITIVETYPE_TRIANGLE_FAN; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: return rr::PRIMITIVETYPE_TRIANGLE_STRIP; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ: return rr::PRIMITIVETYPE_LINES_ADJACENCY; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ: return rr::PRIMITIVETYPE_LINE_STRIP_ADJACENCY; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ: return rr::PRIMITIVETYPE_TRIANGLES_ADJACENCY; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ: return rr::PRIMITIVETYPE_TRIANGLE_STRIP_ADJACENCY; + case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: return rr::PRIMITIVETYPE_POINTS; + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: return rr::PRIMITIVETYPE_LINES; + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: return rr::PRIMITIVETYPE_LINE_STRIP; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: return rr::PRIMITIVETYPE_TRIANGLES; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: return rr::PRIMITIVETYPE_TRIANGLE_FAN; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: return rr::PRIMITIVETYPE_TRIANGLE_STRIP; + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: return rr::PRIMITIVETYPE_LINES_ADJACENCY; + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: return rr::PRIMITIVETYPE_LINE_STRIP_ADJACENCY; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: return rr::PRIMITIVETYPE_TRIANGLES_ADJACENCY; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: return rr::PRIMITIVETYPE_TRIANGLE_STRIP_ADJACENCY; default: DE_ASSERT(false); } @@ -139,14 +139,14 @@ rr::StencilOp mapVkStencilOp (vk::VkStencilOp stencilOp) { switch (stencilOp) { - case VK_STENCIL_OP_KEEP: return rr::STENCILOP_KEEP; - case VK_STENCIL_OP_ZERO: return rr::STENCILOP_ZERO; - case VK_STENCIL_OP_REPLACE: return rr::STENCILOP_REPLACE; - case VK_STENCIL_OP_INC_CLAMP: return rr::STENCILOP_INCR; - case VK_STENCIL_OP_DEC_CLAMP: return rr::STENCILOP_DECR; - case VK_STENCIL_OP_INVERT: return rr::STENCILOP_INVERT; - case VK_STENCIL_OP_INC_WRAP: return rr::STENCILOP_INCR_WRAP; - case VK_STENCIL_OP_DEC_WRAP: return rr::STENCILOP_DECR_WRAP; + case VK_STENCIL_OP_KEEP: return rr::STENCILOP_KEEP; + case VK_STENCIL_OP_ZERO: return rr::STENCILOP_ZERO; + case VK_STENCIL_OP_REPLACE: return rr::STENCILOP_REPLACE; + case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return rr::STENCILOP_INCR; + case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return rr::STENCILOP_DECR; + case VK_STENCIL_OP_INVERT: return rr::STENCILOP_INVERT; + case VK_STENCIL_OP_INCREMENT_AND_WRAP: return rr::STENCILOP_INCR_WRAP; + case VK_STENCIL_OP_DECREMENT_AND_WRAP: return rr::STENCILOP_DECR_WRAP; default: DE_ASSERT(false); } diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp index 96b0fe0..519b8dc 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineReferenceRenderer.hpp @@ -335,12 +335,12 @@ private: const rr::Program* m_program; }; -rr::TestFunc mapVkCompareOp (vk::VkCompareOp compareFunc); -rr::PrimitiveType mapVkPrimitiveTopology (vk::VkPrimitiveTopology primitiveTopology); -rr::BlendFunc mapVkBlend (vk::VkBlend blend); -rr::BlendEquation mapVkBlendOp (vk::VkBlendOp blendOp); -tcu::BVec4 mapVkChannelFlags (vk::VkChannelFlags flags); -rr::StencilOp mapVkStencilOp (vk::VkStencilOp stencilOp); +rr::TestFunc mapVkCompareOp (vk::VkCompareOp compareFunc); +rr::PrimitiveType mapVkPrimitiveTopology (vk::VkPrimitiveTopology primitiveTopology); +rr::BlendFunc mapVkBlendFactor (vk::VkBlendFactor blendFactor); +rr::BlendEquation mapVkBlendOp (vk::VkBlendOp blendOp); +tcu::BVec4 mapVkColorComponentFlags (vk::VkColorComponentFlags flags); +rr::StencilOp mapVkStencilOp (vk::VkStencilOp stencilOp); } // pipeline } // vkt diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp index 2f9c71d..6af5632 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp @@ -99,12 +99,12 @@ public: const char* description, VkImageViewType imageViewType, VkFormat imageFormat, - VkTexFilter magFilter); + VkFilter magFilter); virtual ~SamplerMagFilterTest (void) {} virtual VkSamplerCreateInfo getSamplerCreateInfo (void) const; private: - VkTexFilter m_magFilter; + VkFilter m_magFilter; }; class SamplerMinFilterTest : public SamplerTest @@ -115,32 +115,32 @@ public: const char* description, VkImageViewType imageViewType, VkFormat imageFormat, - VkTexFilter minFilter); + VkFilter minFilter); virtual ~SamplerMinFilterTest (void) {} virtual VkSamplerCreateInfo getSamplerCreateInfo (void) const; private: - VkTexFilter m_minFilter; + VkFilter m_minFilter; }; class SamplerLodTest : public SamplerTest { public: - SamplerLodTest (tcu::TestContext& testContext, - const char* name, - const char* description, - VkImageViewType imageViewType, - VkFormat imageFormat, - VkTexMipmapMode mipMode, - float minLod, - float maxLod, - float mipLodBias, - float samplerLod); + SamplerLodTest (tcu::TestContext& testContext, + const char* name, + const char* description, + VkImageViewType imageViewType, + VkFormat imageFormat, + VkSamplerMipmapMode mipmapMode, + float minLod, + float maxLod, + float mipLodBias, + float samplerLod); virtual ~SamplerLodTest (void) {} virtual VkSamplerCreateInfo getSamplerCreateInfo (void) const; private: - VkTexMipmapMode m_mipMode; + VkSamplerMipmapMode m_mipmapMode; float m_minLod; float m_maxLod; float m_mipLodBias; @@ -149,24 +149,24 @@ private: class SamplerAddressModesTest : public SamplerTest { public: - SamplerAddressModesTest (tcu::TestContext& testContext, - const char* name, - const char* description, - VkImageViewType imageViewType, - VkFormat imageFormat, - VkTexAddressMode addressU, - VkTexAddressMode addressV, - VkTexAddressMode addressW, - VkBorderColor borderColor); + SamplerAddressModesTest (tcu::TestContext& testContext, + const char* name, + const char* description, + VkImageViewType imageViewType, + VkFormat imageFormat, + VkSamplerAddressMode addressU, + VkSamplerAddressMode addressV, + VkSamplerAddressMode addressW, + VkBorderColor borderColor); virtual ~SamplerAddressModesTest (void) {} virtual tcu::IVec2 getRenderSize (VkImageViewType viewType) const; virtual std::vector createVertices (void) const; virtual VkSamplerCreateInfo getSamplerCreateInfo (void) const; private: - VkTexAddressMode m_addressU; - VkTexAddressMode m_addressV; - VkTexAddressMode m_addressW; + VkSamplerAddressMode m_addressU; + VkSamplerAddressMode m_addressV; + VkSamplerAddressMode m_addressW; VkBorderColor m_borderColor; }; @@ -257,7 +257,7 @@ TestInstance* SamplerTest::createInstance (Context& context) const const tcu::IVec2 renderSize = getRenderSize(m_imageViewType); const std::vector vertices = createVertices(); const VkSamplerCreateInfo samplerParams = getSamplerCreateInfo(); - const VkChannelMapping channelMapping = getFormatChannelMapping(m_imageFormat); + const VkComponentMapping componentMapping = getFormatComponentMapping(m_imageFormat); const VkImageSubresourceRange subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask; @@ -272,7 +272,7 @@ TestInstance* SamplerTest::createInstance (Context& context) const return new ImageSamplingInstance(context, renderSize, m_imageViewType, m_imageFormat, getImageSize(m_imageViewType, m_imageSize), getArraySize(m_imageViewType), - channelMapping, subresourceRange, + componentMapping, subresourceRange, samplerParams, m_samplerLod,vertices); } @@ -297,22 +297,23 @@ VkSamplerCreateInfo SamplerTest::getSamplerCreateInfo (void) const { const VkSamplerCreateInfo defaultSamplerParams = { - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_TEX_FILTER_NEAREST, // VkTexFilter magFilter; - VK_TEX_FILTER_NEAREST, // VkTexFilter minFilter; - VK_TEX_MIPMAP_MODE_BASE, // VkTexMipmapMode mipMode; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddressMode addressModeU; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddressMode addressModeV; - VK_TEX_ADDRESS_MODE_CLAMP, // VkTexAddressMode addressModeW; - 0.0f, // float mipLodBias; - 1.0f, // float maxAnisotropy; - false, // VkBool32 compareEnable; - VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; - 0.0f, // float minLod; - (float)deLog2Floor32(m_imageSize) + 1, // float maxLod; - getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; - false // VkBool32 unnormalizedCoordinates; + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkSamplerCreateFlags flags; + VK_FILTER_NEAREST, // VkFilter magFilter; + VK_FILTER_NEAREST, // VkFilter minFilter; + VK_SAMPLER_MIPMAP_MODE_BASE, // VkSamplerMipmapMode mipmapMode; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeU; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeV; + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, // VkSamplerAddressMode addressModeW; + 0.0f, // float mipLodBias; + 1.0f, // float maxAnisotropy; + false, // VkBool32 compareEnable; + VK_COMPARE_OP_NEVER, // VkCompareOp compareOp; + 0.0f, // float minLod; + (float)deLog2Floor32(m_imageSize) + 1, // float maxLod; + getFormatBorderColor(BORDER_COLOR_TRANSPARENT_BLACK, m_imageFormat), // VkBorderColor borderColor; + false // VkBool32 unnormalizedCoordinates; }; return defaultSamplerParams; @@ -410,7 +411,7 @@ SamplerMagFilterTest::SamplerMagFilterTest (tcu::TestContext& testContext, const char* description, VkImageViewType imageViewType, VkFormat imageFormat, - VkTexFilter magFilter) + VkFilter magFilter) : SamplerTest (testContext, name, description, imageViewType, imageFormat, 8, 0.0f) , m_magFilter (magFilter) { @@ -432,7 +433,7 @@ SamplerMinFilterTest::SamplerMinFilterTest (tcu::TestContext& testContext, const char* description, VkImageViewType imageViewType, VkFormat imageFormat, - VkTexFilter minFilter) + VkFilter minFilter) : SamplerTest (testContext, name, description, imageViewType, imageFormat, 32, 0.0f) , m_minFilter (minFilter) { @@ -454,13 +455,13 @@ SamplerLodTest::SamplerLodTest (tcu::TestContext& testContext, const char* description, VkImageViewType imageViewType, VkFormat imageFormat, - VkTexMipmapMode mipMode, + VkSamplerMipmapMode mipmapMode, float minLod, float maxLod, float mipLodBias, float samplerLod) : SamplerTest (testContext, name, description, imageViewType, imageFormat, 32, samplerLod) - , m_mipMode (mipMode) + , m_mipmapMode (mipmapMode) , m_minLod (minLod) , m_maxLod (maxLod) , m_mipLodBias (mipLodBias) @@ -471,7 +472,7 @@ VkSamplerCreateInfo SamplerLodTest::getSamplerCreateInfo (void) const { VkSamplerCreateInfo samplerParams = SamplerTest::getSamplerCreateInfo(); - samplerParams.mipMode = m_mipMode; + samplerParams.mipmapMode = m_mipmapMode; samplerParams.minLod = m_minLod; samplerParams.maxLod = m_maxLod; samplerParams.mipLodBias = m_mipLodBias; @@ -482,15 +483,15 @@ VkSamplerCreateInfo SamplerLodTest::getSamplerCreateInfo (void) const // SamplerAddressModesTest -SamplerAddressModesTest::SamplerAddressModesTest (tcu::TestContext& testContext, - const char* name, - const char* description, - VkImageViewType imageViewType, - VkFormat imageFormat, - VkTexAddressMode addressU, - VkTexAddressMode addressV, - VkTexAddressMode addressW, - VkBorderColor borderColor) +SamplerAddressModesTest::SamplerAddressModesTest (tcu::TestContext& testContext, + const char* name, + const char* description, + VkImageViewType imageViewType, + VkFormat imageFormat, + VkSamplerAddressMode addressU, + VkSamplerAddressMode addressV, + VkSamplerAddressMode addressW, + VkBorderColor borderColor) : SamplerTest (testContext, name, description, imageViewType, imageFormat, 8, 0.0f) , m_addressU (addressU) , m_addressV (addressV) @@ -567,8 +568,8 @@ MovePtr createSamplerMagFilterTests (tcu::TestContext& testC { MovePtr samplerMagFilterTests (new tcu::TestCaseGroup(testCtx, "mag_filter", "Tests for magnification filter")); - samplerMagFilterTests->addChild(new SamplerMagFilterTest(testCtx, "linear", "Magnifies image using VK_TEX_FILTER_LINEAR", imageViewType, imageFormat, VK_TEX_FILTER_LINEAR)); - samplerMagFilterTests->addChild(new SamplerMagFilterTest(testCtx, "nearest", "Magnifies image using VK_TEX_FILTER_NEAREST", imageViewType, imageFormat, VK_TEX_FILTER_NEAREST)); + samplerMagFilterTests->addChild(new SamplerMagFilterTest(testCtx, "linear", "Magnifies image using VK_TEX_FILTER_LINEAR", imageViewType, imageFormat, VK_FILTER_LINEAR)); + samplerMagFilterTests->addChild(new SamplerMagFilterTest(testCtx, "nearest", "Magnifies image using VK_TEX_FILTER_NEAREST", imageViewType, imageFormat, VK_FILTER_NEAREST)); return samplerMagFilterTests; } @@ -577,13 +578,13 @@ MovePtr createSamplerMinFilterTests (tcu::TestContext& testC { MovePtr samplerMinFilterTests (new tcu::TestCaseGroup(testCtx, "min_filter", "Tests for minification filter")); - samplerMinFilterTests->addChild(new SamplerMinFilterTest(testCtx, "linear", "Minifies image using VK_TEX_FILTER_LINEAR", imageViewType, imageFormat, VK_TEX_FILTER_LINEAR)); - samplerMinFilterTests->addChild(new SamplerMinFilterTest(testCtx, "nearest", "Minifies image using VK_TEX_FILTER_NEAREST", imageViewType, imageFormat, VK_TEX_FILTER_NEAREST)); + samplerMinFilterTests->addChild(new SamplerMinFilterTest(testCtx, "linear", "Minifies image using VK_TEX_FILTER_LINEAR", imageViewType, imageFormat, VK_FILTER_LINEAR)); + samplerMinFilterTests->addChild(new SamplerMinFilterTest(testCtx, "nearest", "Minifies image using VK_TEX_FILTER_NEAREST", imageViewType, imageFormat, VK_FILTER_NEAREST)); return samplerMinFilterTests; } -MovePtr createSamplerLodTests (tcu::TestContext& testCtx, VkImageViewType imageViewType, VkFormat imageFormat, VkTexMipmapMode mipmapMode) +MovePtr createSamplerLodTests (tcu::TestContext& testCtx, VkImageViewType imageViewType, VkFormat imageFormat, VkSamplerMipmapMode mipmapMode) { struct TestCaseConfig { @@ -624,18 +625,18 @@ MovePtr createSamplerMipmapTests (tcu::TestContext& testCtx, // Mipmap mode: nearest MovePtr mipmapNearestTests (new tcu::TestCaseGroup(testCtx, "nearest", "Uses VK_TEX_MIPMAP_MODE_NEAREST")); - mipmapNearestTests->addChild(createSamplerLodTests(testCtx, imageViewType, imageFormat, VK_TEX_MIPMAP_MODE_NEAREST).release()); + mipmapNearestTests->addChild(createSamplerLodTests(testCtx, imageViewType, imageFormat, VK_SAMPLER_MIPMAP_MODE_NEAREST).release()); samplerMipmapTests->addChild(mipmapNearestTests.release()); // Mipmap mode: linear MovePtr mipmapLinearTests (new tcu::TestCaseGroup(testCtx, "linear", "Uses VK_TEX_MIPMAP_MODE_LINEAR")); - mipmapLinearTests->addChild(createSamplerLodTests(testCtx, imageViewType, imageFormat, VK_TEX_MIPMAP_MODE_LINEAR).release()); + mipmapLinearTests->addChild(createSamplerLodTests(testCtx, imageViewType, imageFormat, VK_SAMPLER_MIPMAP_MODE_LINEAR).release()); samplerMipmapTests->addChild(mipmapLinearTests.release()); return samplerMipmapTests; } -std::string getAddressModesCaseName (VkTexAddressMode u, VkTexAddressMode v, VkTexAddressMode w, BorderColor border) +std::string getAddressModesCaseName (VkSamplerAddressMode u, VkSamplerAddressMode v, VkSamplerAddressMode w, BorderColor border) { static const char* borderColorNames[BORDER_COLOR_COUNT] = { @@ -648,31 +649,31 @@ std::string getAddressModesCaseName (VkTexAddressMode u, VkTexAddressMode v, VkT if (u == v && v == w) { - const std::string fullName = getTexAddressModeName(u); - DE_ASSERT(de::beginsWith(fullName, "VK_TEX_ADDRESS_")); + const std::string fullName = getSamplerAddressModeName(u); + DE_ASSERT(de::beginsWith(fullName, "VK_SAMPLER_ADDRESS_")); caseName << "all_"; - caseName << de::toLower(fullName.substr(15)); + caseName << de::toLower(fullName.substr(19)); - if (u == VK_TEX_ADDRESS_MODE_CLAMP_BORDER) + if (u == VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER) { caseName << "_" << borderColorNames[border]; } } else { - const std::string fullNameU = getTexAddressModeName(u); - const std::string fullNameV = getTexAddressModeName(v); - const std::string fullNameW = getTexAddressModeName(w); + const std::string fullNameU = getSamplerAddressModeName(u); + const std::string fullNameV = getSamplerAddressModeName(v); + const std::string fullNameW = getSamplerAddressModeName(w); - DE_ASSERT(de::beginsWith(fullNameU, "VK_TEX_ADDRESS_")); - DE_ASSERT(de::beginsWith(fullNameV, "VK_TEX_ADDRESS_")); - DE_ASSERT(de::beginsWith(fullNameW, "VK_TEX_ADDRESS_")); + DE_ASSERT(de::beginsWith(fullNameU, "VK_SAMPLER_ADDRESS_")); + DE_ASSERT(de::beginsWith(fullNameV, "VK_SAMPLER_ADDRESS_")); + DE_ASSERT(de::beginsWith(fullNameW, "VK_SAMPLER_ADDRESS_")); caseName << "uvw" - << "_" << de::toLower(fullNameU.substr(15)) - << "_" << de::toLower(fullNameV.substr(15)) - << "_" << de::toLower(fullNameW.substr(15)); + << "_" << de::toLower(fullNameU.substr(19)) + << "_" << de::toLower(fullNameV.substr(19)) + << "_" << de::toLower(fullNameW.substr(19)); } return caseName.str(); @@ -682,48 +683,48 @@ MovePtr createSamplerAddressModesTests (tcu::TestContext& te { struct TestCaseConfig { - VkTexAddressMode u; - VkTexAddressMode v; - VkTexAddressMode w; - BorderColor border; + VkSamplerAddressMode u; + VkSamplerAddressMode v; + VkSamplerAddressMode w; + BorderColor border; }; const TestCaseConfig testCaseConfigs[] = { // All address modes equal - { VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_CLAMP, BORDER_COLOR_TRANSPARENT_BLACK }, - { VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_WRAP, BORDER_COLOR_TRANSPARENT_BLACK }, - { VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_MIRROR, BORDER_COLOR_TRANSPARENT_BLACK }, - { VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, BORDER_COLOR_TRANSPARENT_BLACK }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, BORDER_COLOR_TRANSPARENT_BLACK }, + { VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_REPEAT, BORDER_COLOR_TRANSPARENT_BLACK }, + { VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, BORDER_COLOR_TRANSPARENT_BLACK }, + { VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, BORDER_COLOR_TRANSPARENT_BLACK }, // All address modes equal using border color - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_TRANSPARENT_BLACK }, - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_OPAQUE_BLACK }, - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_TRANSPARENT_BLACK }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_OPAQUE_BLACK }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_OPAQUE_WHITE }, // Pairwise combinations of address modes not covered by previous tests - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_WRAP, BORDER_COLOR_OPAQUE_WHITE}, - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_MIRROR, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_CLAMP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_MIRROR, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_WRAP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_CLAMP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_WRAP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_CLAMP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_MIRROR, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_CLAMP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_CLAMP_BORDER, VK_TEX_ADDRESS_MODE_WRAP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_WRAP, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_MIRROR, VK_TEX_ADDRESS_MODE_CLAMP, BORDER_COLOR_OPAQUE_WHITE }, - { VK_TEX_ADDRESS_MODE_CLAMP, VK_TEX_ADDRESS_MODE_MIRROR_ONCE, VK_TEX_ADDRESS_MODE_MIRROR, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_REPEAT, BORDER_COLOR_OPAQUE_WHITE}, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, BORDER_COLOR_OPAQUE_WHITE }, + { VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, BORDER_COLOR_OPAQUE_WHITE }, }; MovePtr samplerAddressModesTests (new tcu::TestCaseGroup(testCtx, "address_modes", "Tests for address modes")); @@ -767,16 +768,16 @@ tcu::TestCaseGroup* createSamplerTests (tcu::TestContext& testCtx) const VkFormat formats[] = { // Packed formats - VK_FORMAT_R4G4_UNORM, - VK_FORMAT_R4G4B4A4_UNORM, - VK_FORMAT_R5G6B5_UNORM, - VK_FORMAT_R5G5B5A1_UNORM, - VK_FORMAT_R10G10B10A2_UNORM, - VK_FORMAT_R10G10B10A2_UINT, - VK_FORMAT_R11G11B10_UFLOAT, - VK_FORMAT_R9G9B9E5_UFLOAT, - VK_FORMAT_B4G4R4A4_UNORM, - VK_FORMAT_B5G5R5A1_UNORM, + VK_FORMAT_R4G4_UNORM_PACK8, + VK_FORMAT_R4G4B4A4_UNORM_PACK16, + VK_FORMAT_R5G6B5_UNORM_PACK16, + VK_FORMAT_R5G5B5A1_UNORM_PACK16, + VK_FORMAT_A2B10G10R10_UNORM_PACK32, + VK_FORMAT_A2R10G10B10_UINT_PACK32, + VK_FORMAT_B10G11R11_UFLOAT_PACK32, + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + VK_FORMAT_B4G4R4A4_UNORM_PACK16, + VK_FORMAT_B5G5R5A1_UNORM_PACK16, // Pairwise combinations of 8-bit channel formats, UNORM/SNORM/SINT/UINT/SRGB type x 1-to-4 channels x RGBA/BGRA order VK_FORMAT_R8_SRGB, @@ -816,29 +817,29 @@ tcu::TestCaseGroup* createSamplerTests (tcu::TestContext& testCtx) // Scaled formats VK_FORMAT_R8G8B8A8_SSCALED, - VK_FORMAT_R10G10B10A2_USCALED, + VK_FORMAT_A2R10G10B10_USCALED_PACK32, // Compressed formats - VK_FORMAT_ETC2_R8G8B8_UNORM, - VK_FORMAT_ETC2_R8G8B8_SRGB, - VK_FORMAT_ETC2_R8G8B8A1_UNORM, - VK_FORMAT_ETC2_R8G8B8A1_SRGB, - VK_FORMAT_ETC2_R8G8B8A8_UNORM, - VK_FORMAT_ETC2_R8G8B8A8_SRGB, - VK_FORMAT_EAC_R11_UNORM, - VK_FORMAT_EAC_R11_SNORM, - VK_FORMAT_EAC_R11G11_UNORM, - VK_FORMAT_EAC_R11G11_SNORM, - VK_FORMAT_ASTC_4x4_UNORM, - VK_FORMAT_ASTC_5x4_SRGB, - VK_FORMAT_ASTC_6x5_UNORM, - VK_FORMAT_ASTC_6x6_SRGB, - VK_FORMAT_ASTC_8x6_UNORM, - VK_FORMAT_ASTC_8x8_SRGB, - VK_FORMAT_ASTC_10x6_UNORM, - VK_FORMAT_ASTC_10x8_SRGB, - VK_FORMAT_ASTC_12x10_UNORM, - VK_FORMAT_ASTC_12x12_SRGB, + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + VK_FORMAT_EAC_R11_UNORM_BLOCK, + VK_FORMAT_EAC_R11_SNORM_BLOCK, + VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + VK_FORMAT_ASTC_12x12_SRGB_BLOCK, }; de::MovePtr samplerTests (new tcu::TestCaseGroup(testCtx, "sampler", "Sampler tests")); diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp index 6346300..df4c3c3 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp @@ -70,7 +70,7 @@ bool isSupportedDepthStencilFormat (const InstanceInterface& instanceInterface, { VkFormatProperties formatProps; - VK_CHECK(instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps)); + instanceInterface.getPhysicalDeviceFormatProperties(device, format, &formatProps); return (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) != 0; } @@ -167,8 +167,6 @@ private: Move m_vertexShaderModule; Move m_fragmentShaderModule; - Move m_vertexShader; - Move m_fragmentShader; Move m_vertexBuffer; std::vector m_vertices; @@ -177,8 +175,8 @@ private: Move m_pipelineLayout; Move m_graphicsPipelines[StencilTest::QUAD_COUNT]; - Move m_cmdPool; - Move m_cmdBuffer; + Move m_cmdPool; + Move m_cmdBuffer; Move m_fence; }; @@ -191,11 +189,11 @@ const VkStencilOp StencilOpStateUniqueRandomIterator::m_stencilOps[] = VK_STENCIL_OP_KEEP, VK_STENCIL_OP_ZERO, VK_STENCIL_OP_REPLACE, - VK_STENCIL_OP_INC_CLAMP, - VK_STENCIL_OP_DEC_CLAMP, + VK_STENCIL_OP_INCREMENT_AND_CLAMP, + VK_STENCIL_OP_DECREMENT_AND_CLAMP, VK_STENCIL_OP_INVERT, - VK_STENCIL_OP_INC_WRAP, - VK_STENCIL_OP_DEC_WRAP + VK_STENCIL_OP_INCREMENT_AND_WRAP, + VK_STENCIL_OP_DECREMENT_AND_WRAP }; const VkCompareOp StencilOpStateUniqueRandomIterator::m_compareOps[] = @@ -203,10 +201,10 @@ const VkCompareOp StencilOpStateUniqueRandomIterator::m_compareOps[] = VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, - VK_COMPARE_OP_LESS_EQUAL, + VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, - VK_COMPARE_OP_GREATER_EQUAL, + VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS }; @@ -236,13 +234,13 @@ VkStencilOpState StencilOpStateUniqueRandomIterator::getIndexedValue (deUint32 i const VkStencilOpState stencilOpState = { - m_stencilOps[stencilFailOpIndex], // VkStencilOp stencilFailOp; - m_stencilOps[stencilPassOpIndex], // VkStencilOp stencilPassOp; - m_stencilOps[stencilDepthFailOpIndex], // VkStencilOp stencilDepthFailOp; - m_compareOps[stencilCompareOpIndex], // VkCompareOp stencilCompareOp; - 0x0, // deUint32 stencilCompareMask; - 0x0, // deUint32 stencilWriteMask; - 0x0 // deUint32 stencilReference; + m_stencilOps[stencilFailOpIndex], // VkStencilOp failOp; + m_stencilOps[stencilPassOpIndex], // VkStencilOp passOp; + m_stencilOps[stencilDepthFailOpIndex], // VkStencilOp depthFailOp; + m_compareOps[stencilCompareOpIndex], // VkCompareOp compareOp; + 0x0, // deUint32 compareMask; + 0x0, // deUint32 writeMask; + 0x0 // deUint32 reference; }; return stencilOpState; @@ -327,31 +325,31 @@ StencilTestInstance::StencilTestInstance (Context& context, , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_stencilFormat (stencilFormat) { - const DeviceInterface& vk = context.getDeviceInterface(); - const VkDevice vkDevice = context.getDevice(); - const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); - SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); - const VkChannelMapping channelMappingRGBA = { VK_CHANNEL_SWIZZLE_R, VK_CHANNEL_SWIZZLE_G, VK_CHANNEL_SWIZZLE_B, VK_CHANNEL_SWIZZLE_A }; + const DeviceInterface& vk = context.getDeviceInterface(); + const VkDevice vkDevice = context.getDevice(); + const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); + SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); + const VkComponentMapping componentMappingRGBA = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A }; // Create color image { const VkImageCreateInfo colorImageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_IMAGE_TYPE_2D, // VkImageType imageType; - m_colorFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; - 1u, // deUint32 mipLevels; - 1u, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT, // VkImageUsageFlags usage; - 0u, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageCreateFlags flags; + VK_IMAGE_TYPE_2D, // VkImageType imageType; + m_colorFormat, // VkFormat format; + { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + 1u, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; m_colorImageCreateInfo = colorImageParams; @@ -370,21 +368,21 @@ StencilTestInstance::StencilTestInstance (Context& context, const VkImageCreateInfo stencilImageParams = { - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_IMAGE_TYPE_2D, // VkImageType imageType; - m_stencilFormat, // VkFormat format; - { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; - 1u, // deUint32 mipLevels; - 1u, // deUint32 arraySize; - 1u, // deUint32 samples; - VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, // VkImageUsageFlags usage; - 0u, // VkImageCreateFlags flags; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; - VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageCreateFlags flags; + VK_IMAGE_TYPE_2D, // VkImageType imageType; + m_stencilFormat, // VkFormat format; + { m_renderSize.x(), m_renderSize.y(), 1u }, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + 1u, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 1u, // deUint32 queueFamilyIndexCount; + &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; m_stencilImage = createImage(vk, vkDevice, &stencilImageParams); @@ -398,14 +396,14 @@ StencilTestInstance::StencilTestInstance (Context& context, { const VkImageViewCreateInfo colorAttachmentViewParams = { - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_colorImage, // VkImage image; - VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; - m_colorFormat, // VkFormat format; - channelMappingRGBA, // VkChannelMapping channels; - { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; + *m_colorImage, // VkImage image; + VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; + m_colorFormat, // VkFormat format; + componentMappingRGBA, // VkComponentMapping components; + { VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u } // VkImageSubresourceRange subresourceRange; }; m_colorAttachmentView = createImageView(vk, vkDevice, &colorAttachmentViewParams); @@ -415,14 +413,14 @@ StencilTestInstance::StencilTestInstance (Context& context, { const VkImageViewCreateInfo stencilAttachmentViewParams = { - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_stencilImage, // VkImage image; - VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; - m_stencilFormat, // VkFormat format; - channelMappingRGBA, // VkChannelMapping channels; - { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; - 0u // VkImageViewCreateFlags flags; + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkImageViewCreateFlags flags; + *m_stencilImage, // VkImage image; + VK_IMAGE_VIEW_TYPE_2D, // VkImageViewType viewType; + m_stencilFormat, // VkFormat format; + componentMappingRGBA, // VkComponentMapping components; + { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 1u, 0u, 1u }, // VkImageSubresourceRange subresourceRange; }; m_stencilAttachmentView = createImageView(vk, vkDevice, &stencilAttachmentViewParams); @@ -432,32 +430,28 @@ StencilTestInstance::StencilTestInstance (Context& context, { const VkAttachmentDescription colorAttachmentDescription = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; + 0u, // VkAttachmentDescriptionFlags flags; m_colorFormat, // VkFormat format; - 1u, // deUint32 samples; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; - 0u // VkAttachmentDescriptionFlags flags; }; const VkAttachmentDescription stencilAttachmentDescription = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; + 0u, // VkAttachmentDescriptionFlags flags; m_stencilFormat, // VkFormat format; - 1u, // deUint32 samples; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp storeOp; VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp stencilLoadOp; VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout initialLayout; VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; - 0u // VkAttachmentDescriptionFlags flags; }; const VkAttachmentDescription attachments[2] = @@ -480,17 +474,15 @@ StencilTestInstance::StencilTestInstance (Context& context, const VkSubpassDescription subpassDescription = { - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; 0u, // VkSubpassDescriptionFlags flags; - 0u, // deUint32 inputCount; + VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; + 0u, // deUint32 inputAttachmentCount; DE_NULL, // const VkAttachmentReference* pInputAttachments; - 1u, // deUint32 colorCount; + 1u, // deUint32 colorAttachmentCount; &colorAttachmentReference, // const VkAttachmentReference* pColorAttachments; - DE_NULL, // const VkAttachmentReference* resolveAttachments; - stencilAttachmentReference, // VkAttachmentReference depthStencilAttachment; - 0u, // deUint32 preserveCount; + DE_NULL, // const VkAttachmentReference* pResolveAttachments; + &stencilAttachmentReference, // const VkAttachmentReference* pDepthStencilAttachment; + 0u, // deUint32 preserveAttachmentCount; DE_NULL // const VkAttachmentReference* pPreserveAttachments; }; @@ -498,6 +490,7 @@ StencilTestInstance::StencilTestInstance (Context& context, { VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkRenderPassCreateFlags flags; 2u, // deUint32 attachmentCount; attachments, // const VkAttachmentDescription* pAttachments; 1u, // deUint32 subpassCount; @@ -515,14 +508,15 @@ StencilTestInstance::StencilTestInstance (Context& context, const VkFramebufferCreateInfo framebufferParams = { - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_renderPass, // VkRenderPass renderPass; - 2u, // deUint32 attachmentCount; - attachmentBindInfos, // const VkImageView* pAttachments; - (deUint32)m_renderSize.x(), // deUint32 width; - (deUint32)m_renderSize.y(), // deUint32 height; - 1u // deUint32 layers; + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkFramebufferCreateFlags flags; + *m_renderPass, // VkRenderPass renderPass; + 2u, // deUint32 attachmentCount; + attachmentBindInfos, // const VkImageView* pAttachments; + (deUint32)m_renderSize.x(), // deUint32 width; + (deUint32)m_renderSize.y(), // deUint32 height; + 1u // deUint32 layers; }; m_framebuffer = createFramebuffer(vk, vkDevice, &framebufferParams); @@ -534,7 +528,8 @@ StencilTestInstance::StencilTestInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 0u, // deUint32 descriptorSetCount; + 0u, // VkPipelineLayoutCreateFlags flags; + 0u, // deUint32 setLayoutCount; DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; 0u, // deUint32 pushConstantRangeCount; DE_NULL // const VkPushConstantRange* pPushConstantRanges; @@ -543,52 +538,30 @@ StencilTestInstance::StencilTestInstance (Context& context, m_pipelineLayout = createPipelineLayout(vk, vkDevice, &pipelineLayoutParams); } - // Create shaders - { - m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_vert"), 0); - m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_frag"), 0); - - const VkShaderCreateInfo vertexShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_vertexShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_VERTEX // VkShaderStage stage; - }; - - const VkShaderCreateInfo fragmentShaderParams = - { - VK_STRUCTURE_TYPE_SHADER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_fragmentShaderModule, // VkShaderModule module; - "main", // const char* pName; - 0u, // VkShaderCreateFlags flags; - VK_SHADER_STAGE_FRAGMENT // VkShaderStage stage; - }; - - m_vertexShader = createShader(vk, vkDevice, &vertexShaderParams); - m_fragmentShader = createShader(vk, vkDevice, &fragmentShaderParams); - } + m_vertexShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_vert"), 0); + m_fragmentShaderModule = createShaderModule(vk, vkDevice, m_context.getBinaryCollection().get("color_frag"), 0); // Create pipeline { - const VkPipelineShaderStageCreateInfo shaderStageParams[2] = + const VkPipelineShaderStageCreateInfo shaderStages[2] = { { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_VERTEX, // VkShaderStage stage; - *m_vertexShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_VERTEX_BIT, // VkShaderStageFlagBits stage; + *m_vertexShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; }, { - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_SHADER_STAGE_FRAGMENT, // VkShaderStage stage; - *m_fragmentShader, // VkShader shader; - DE_NULL // const VkSpecializationInfo* pSpecializationInfo; + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineShaderStageCreateFlags flags; + VK_SHADER_STAGE_FRAGMENT_BIT, // VkShaderStageFlagBits stage; + *m_fragmentShaderModule, // VkShaderModule module; + "main", // const char* pName; + DE_NULL // const VkSpecializationInfo* pSpecializationInfo; } }; @@ -596,7 +569,7 @@ StencilTestInstance::StencilTestInstance (Context& context, { 0u, // deUint32 binding; sizeof(Vertex4RGBA), // deUint32 strideInBytes; - VK_VERTEX_INPUT_STEP_RATE_VERTEX // VkVertexInputStepRate stepRate; + VK_VERTEX_INPUT_RATE_VERTEX // VkVertexInputStepRate inputRate; }; const VkVertexInputAttributeDescription vertexInputAttributeDescriptions[2] = @@ -619,24 +592,26 @@ StencilTestInstance::StencilTestInstance (Context& context, { VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 1u, // deUint32 bindingCount; + 0u, // VkPipelineVertexInputStateCreateFlags flags; + 1u, // deUint32 vertexBindingDescriptionCount; &vertexInputBindingDescription, // const VkVertexInputBindingDescription* pVertexBindingDescriptions; - 2u, // deUint32 attributeCount; + 2u, // deUint32 vertexAttributeDescriptionCount; vertexInputAttributeDescriptions // const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; }; const VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; - false // VkBool32 primitiveRestartEnable; + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineInputAssemblyStateCreateFlags flags; + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, // VkPrimitiveTopology topology; + false // VkBool32 primitiveRestartEnable; }; const VkViewport viewport = { - 0.0f, // float originX; - 0.0f, // float originY; + 0.0f, // float x; + 0.0f, // float y; (float)m_renderSize.x(), // float width; (float)m_renderSize.y(), // float height; 0.0f, // float minDepth; @@ -647,106 +622,113 @@ StencilTestInstance::StencilTestInstance (Context& context, const VkPipelineViewportStateCreateInfo viewportStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 viewportCount; - &viewport, // const VkViewport* pViewports; - 1u, // deUint32 scissorCount; - &scissor, // const VkRect2D* pScissors; + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineViewportStateCreateFlags flags; + 1u, // deUint32 viewportCount; + &viewport, // const VkViewport* pViewports; + 1u, // deUint32 scissorCount; + &scissor, // const VkRect2D* pScissors; }; - const VkPipelineRasterStateCreateInfo rasterStateParams = + const VkPipelineRasterizationStateCreateInfo rasterStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - false, // VkBool32 depthClipEnable; - false, // VkBool32 rasterizerDiscardEnable; - VK_FILL_MODE_SOLID, // VkFillMode fillMode; - VK_CULL_MODE_NONE, // VkCullMode cullMode; - VK_FRONT_FACE_CCW, // VkFrontFace frontFace; - VK_FALSE, // VkBool32 depthBiasEnable; - 0.0f, // float depthBias; - 0.0f, // float depthBiasClamp; - 0.0f, // float slopeScaledDepthBias; - 1.0f // float lineWidth; + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineRasterizationStateCreateFlags flags; + false, // VkBool32 depthClampEnable; + false, // VkBool32 rasterizerDiscardEnable; + VK_POLYGON_MODE_FILL, // VkPolygonMode polygonMode; + VK_CULL_MODE_NONE, // VkCullModeFlags cullMode; + VK_FRONT_FACE_COUNTER_CLOCKWISE, // VkFrontFace frontFace; + false, // VkBool32 depthBiasEnable; + 0.0f, // float depthBiasConstantFactor; + 0.0f, // float depthBiasClamp; + 0.0f, // float depthBiasSlopeFactor; + 1.0f // float lineWidth; }; const VkPipelineColorBlendAttachmentState colorBlendAttachmentState = { - false, // VkBool32 blendEnable; - VK_BLEND_ONE, // VkBlend srcBlendColor; - VK_BLEND_ZERO, // VkBlend destBlendColor; - VK_BLEND_OP_ADD, // VkBlendOp blendOpColor; - VK_BLEND_ONE, // VkBlend srcBlendAlpha; - VK_BLEND_ZERO, // VkBlend destBlendAlpha; - VK_BLEND_OP_ADD, // VkBlendOp blendOpAlpha; - VK_CHANNEL_R_BIT | VK_CHANNEL_G_BIT | VK_CHANNEL_B_BIT | VK_CHANNEL_A_BIT // VkChannelFlags channelWriteMask; + false, // VkBool32 blendEnable; + VK_BLEND_FACTOR_ONE, // VkBlendFactor srcColorBlendFactor; + VK_BLEND_FACTOR_ZERO, // VkBlendFactor dstColorBlendFactor; + VK_BLEND_OP_ADD, // VkBlendOp colorBlendOp; + VK_BLEND_FACTOR_ONE, // VKBLENDFACTOR SRCALPHABLENDFACTOR; + VK_BLEND_FACTOR_ZERO, // VkBlendFactor dstAlphaBlendFactor; + VK_BLEND_OP_ADD, // VkBlendOp alphaBlendOp; + VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | // VkColorComponentFlags colorWriteMask; + VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT }; const VkPipelineColorBlendStateCreateInfo colorBlendStateParams = { VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - false, // VkBool32 alphaToCoverageEnable; - false, // VkBool32 alphaToOneEnable; + 0u, // VkPipelineColorBlendStateCreateFlags flags; false, // VkBool32 logicOpEnable; VK_LOGIC_OP_COPY, // VkLogicOp logicOp; 1u, // deUint32 attachmentCount; &colorBlendAttachmentState, // const VkPipelineColorBlendAttachmentState* pAttachments; - { 0.0f, 0.0f, 0.0f, 0.0f } // float blendConst[4]; + { 0.0f, 0.0f, 0.0f, 0.0f } // float blendConstants[4]; }; const VkPipelineMultisampleStateCreateInfo multisampleStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 1u, // deUint32 rasterSamples; - false, // VkBool32 sampleShadingEnable; - 0.0f, // float minSampleShading; - DE_NULL // const VkSampleMask* sampleMask; + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineMultisampleStateCreateFlags flags; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits rasterizationSamples; + false, // VkBool32 sampleShadingEnable; + 0.0f, // float minSampleShading; + DE_NULL, // const VkSampleMask* pSampleMask; + false, // VkBool32 alphaToCoverageEnable; + false // VkBool32 alphaToOneEnable; }; const bool isDepthEnabled = (vk::mapVkFormat(m_stencilFormat).order != tcu::TextureFormat::S); VkPipelineDepthStencilStateCreateInfo depthStencilStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - isDepthEnabled, // VkBool32 depthTestEnable; - isDepthEnabled, // VkBool32 depthWriteEnable; - VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; - false, // VkBool32 depthBoundsEnable; - true, // VkBool32 stencilTestEnable; - m_stencilOpStateFront, // VkStencilOpState front; - m_stencilOpStateBack, // VkStencilOpState back; - -1.0f, // float minDepthBounds; - +1.0f // float maxDepthBounds; + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDepthStencilStateCreateFlags flags; + isDepthEnabled, // VkBool32 depthTestEnable; + isDepthEnabled, // VkBool32 depthWriteEnable; + VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; + false, // VkBool32 depthBoundsTestEnable; + true, // VkBool32 stencilTestEnable; + m_stencilOpStateFront, // VkStencilOpState front; + m_stencilOpStateBack, // VkStencilOpState back; + -1.0f, // float minDepthBounds; + +1.0f // float maxDepthBounds; }; const VkPipelineDynamicStateCreateInfo dynamicStateParams = { - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // deUint32 dynamicStateCount; - DE_NULL // const VkDynamicState* pDynamicStates; + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkPipelineDynamicStateCreateFlags flags; + 0u, // deUint32 dynamicStateCount; + DE_NULL // const VkDynamicState* pDynamicStates; }; const VkGraphicsPipelineCreateInfo graphicsPipelineParams = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkPipelineCreateFlags flags; 2u, // deUint32 stageCount; - shaderStageParams, // const VkPipelineShaderStageCreateInfo* pStages; + shaderStages, // const VkPipelineShaderStageCreateInfo* pStages; &vertexInputStateParams, // const VkPipelineVertexInputStateCreateInfo* pVertexInputState; &inputAssemblyStateParams, // const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; DE_NULL, // const VkPipelineTessellationStateCreateInfo* pTessellationState; &viewportStateParams, // const VkPipelineViewportStateCreateInfo* pViewportState; - &rasterStateParams, // const VkPipelineRasterStateCreateInfo* pRasterState; + &rasterStateParams, // const VkPipelineRasterizationStateCreateInfo* pRasterizationState; &multisampleStateParams, // const VkPipelineMultisampleStateCreateInfo* pMultisampleState; &depthStencilStateParams, // const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; &colorBlendStateParams, // const VkPipelineColorBlendStateCreateInfo* pColorBlendState; &dynamicStateParams, // const VkPipelineDynamicStateCreateInfo* pDynamicState; - 0u, // VkPipelineCreateFlags flags; *m_pipelineLayout, // VkPipelineLayout layout; *m_renderPass, // VkRenderPass renderPass; 0u, // deUint32 subpass; @@ -761,13 +743,13 @@ StencilTestInstance::StencilTestInstance (Context& context, VkStencilOpState& front = depthStencilStateParams.front; VkStencilOpState& back = depthStencilStateParams.back; - front.stencilCompareMask = config.frontReadMask; - front.stencilWriteMask = config.frontWriteMask; - front.stencilReference = config.frontRef; + front.compareMask = config.frontReadMask; + front.writeMask = config.frontWriteMask; + front.reference = config.frontRef; - back.stencilCompareMask = config.backReadMask; - back.stencilWriteMask = config.backWriteMask; - back.stencilReference = config.backRef; + back.compareMask = config.backReadMask; + back.writeMask = config.backWriteMask; + back.reference = config.backRef; m_graphicsPipelines[quadNdx] = createGraphicsPipeline(vk, vkDevice, DE_NULL, &graphicsPipelineParams); } @@ -780,11 +762,11 @@ StencilTestInstance::StencilTestInstance (Context& context, { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; + 0u, // VkBufferCreateFlags flags; 1024u, // VkDeviceSize size; VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, // VkBufferUsageFlags usage; - 0u, // VkBufferCreateFlags flags; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyCount; + 1u, // deUint32 queueFamilyIndexCount; &queueFamilyIndex // const deUint32* pQueueFamilyIndices; }; @@ -806,7 +788,7 @@ StencilTestInstance::StencilTestInstance (Context& context, { VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, // VkStructureType sType; DE_NULL, // const void* pNext; - m_vertexBufferAlloc->getMemory(), // VkDeviceMemory mem; + m_vertexBufferAlloc->getMemory(), // VkDeviceMemory memory; m_vertexBufferAlloc->getOffset(), // VkDeviceSize offset; vertexBufferParams.size // VkDeviceSize size; }; @@ -816,12 +798,12 @@ StencilTestInstance::StencilTestInstance (Context& context, // Create command pool { - const VkCmdPoolCreateInfo cmdPoolParams = + const VkCommandPoolCreateInfo cmdPoolParams = { - VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - queueFamilyIndex, // deUint32 queueFamilyIndex; - VK_CMD_POOL_CREATE_TRANSIENT_BIT // VkCmdPoolCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, // VkCommandPoolCreateFlags flags; + queueFamilyIndex, // deUint32 queueFamilyIndex; }; m_cmdPool = createCommandPool(vk, vkDevice, &cmdPoolParams); @@ -829,23 +811,26 @@ StencilTestInstance::StencilTestInstance (Context& context, // Create command buffer { - const VkCmdBufferCreateInfo cmdBufferParams = + const VkCommandBufferAllocateInfo cmdBufferAllocateInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *m_cmdPool, // VkCmdPool cmdPool; - VK_CMD_BUFFER_LEVEL_PRIMARY, // VkCmdBufferLevel level; - 0u // VkCmdBufferCreateFlags flags; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *m_cmdPool, // VkCommandPool commandPool; + VK_COMMAND_BUFFER_LEVEL_PRIMARY, // VkCommandBufferLevel level; + 1u // deUint32 bufferCount; }; - const VkCmdBufferBeginInfo cmdBufferBeginInfo = + const VkCommandBufferBeginInfo cmdBufferBeginInfo = { - VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - 0u, // VkCmdBufferOptimizeFlags flags; - DE_NULL, // VkRenderPass renderPass; - 0u, // deUint32 subpass; - DE_NULL // VkFramebuffer framebuffer; + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkCommandBufferUsageFlags flags; + DE_NULL, // VkRenderPass renderPass; + 0u, // deUint32 subpass; + DE_NULL, // VkFramebuffer framebuffer; + false, // VkBool32 occlusionQueryEnable; + 0u, // VkQueryControlFlags queryFlags; + 0u // VkQueryPipelineStatisticFlags pipelineStatistics; }; const VkClearValue attachmentClearValues[2] = @@ -865,10 +850,10 @@ StencilTestInstance::StencilTestInstance (Context& context, attachmentClearValues // const VkClearValue* pClearValues; }; - m_cmdBuffer = createCommandBuffer(vk, vkDevice, &cmdBufferParams); + m_cmdBuffer = allocateCommandBuffer(vk, vkDevice, &cmdBufferAllocateInfo); VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo)); - vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_RENDER_PASS_CONTENTS_INLINE); + vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); const VkDeviceSize quadOffset = (m_vertices.size() / StencilTest::QUAD_COUNT) * sizeof(Vertex4RGBA); @@ -907,9 +892,20 @@ tcu::TestStatus StencilTestInstance::iterate (void) const DeviceInterface& vk = m_context.getDeviceInterface(); const VkDevice vkDevice = m_context.getDevice(); const VkQueue queue = m_context.getUniversalQueue(); + const VkSubmitInfo submitInfo = + { + VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // deUint32 waitSemaphoreCount; + DE_NULL, // const VkSemaphore* pWaitSemaphores; + 1u, // deUint32 commandBufferCount; + &m_cmdBuffer.get(), // const VkCommandBuffer* pCommandBuffers; + 0u, // deUint32 signalSemaphoreCount; + DE_NULL // const VkSemaphore* pSignalSemaphores; + }; VK_CHECK(vk.resetFences(vkDevice, 1, &m_fence.get())); - VK_CHECK(vk.queueSubmit(queue, 1, &m_cmdBuffer.get(), *m_fence)); + VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *m_fence)); VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity*/)); return verifyImage(); @@ -937,15 +933,15 @@ tcu::TestStatus StencilTestInstance::verifyImage (void) rr::StencilState& refStencilFront = renderState.fragOps.stencilStates[rr::FACETYPE_FRONT]; rr::StencilState& refStencilBack = renderState.fragOps.stencilStates[rr::FACETYPE_BACK]; - refStencilFront.sFail = mapVkStencilOp(m_stencilOpStateFront.stencilFailOp); - refStencilFront.dpFail = mapVkStencilOp(m_stencilOpStateFront.stencilDepthFailOp); - refStencilFront.dpPass = mapVkStencilOp(m_stencilOpStateFront.stencilPassOp); - refStencilFront.func = mapVkCompareOp(m_stencilOpStateFront.stencilCompareOp); + refStencilFront.sFail = mapVkStencilOp(m_stencilOpStateFront.failOp); + refStencilFront.dpFail = mapVkStencilOp(m_stencilOpStateFront.depthFailOp); + refStencilFront.dpPass = mapVkStencilOp(m_stencilOpStateFront.passOp); + refStencilFront.func = mapVkCompareOp(m_stencilOpStateFront.compareOp); - refStencilBack.sFail = mapVkStencilOp(m_stencilOpStateBack.stencilFailOp); - refStencilBack.dpFail = mapVkStencilOp(m_stencilOpStateBack.stencilDepthFailOp); - refStencilBack.dpPass = mapVkStencilOp(m_stencilOpStateBack.stencilPassOp); - refStencilBack.func = mapVkCompareOp(m_stencilOpStateBack.stencilCompareOp); + refStencilBack.sFail = mapVkStencilOp(m_stencilOpStateBack.failOp); + refStencilBack.dpFail = mapVkStencilOp(m_stencilOpStateBack.depthFailOp); + refStencilBack.dpPass = mapVkStencilOp(m_stencilOpStateBack.passOp); + refStencilBack.func = mapVkCompareOp(m_stencilOpStateBack.compareOp); // Reverse winding of vertices, as Vulkan screen coordinates start at upper left std::vector cwVertices(m_vertices); @@ -1016,14 +1012,14 @@ const char* getShortName (VkStencilOp stencilOp) { switch (stencilOp) { - case VK_STENCIL_OP_KEEP: return "keep"; - case VK_STENCIL_OP_ZERO: return "zero"; - case VK_STENCIL_OP_REPLACE: return "repl"; - case VK_STENCIL_OP_INC_CLAMP: return "incc"; - case VK_STENCIL_OP_DEC_CLAMP: return "decc"; - case VK_STENCIL_OP_INVERT: return "inv"; - case VK_STENCIL_OP_INC_WRAP: return "wrap"; - case VK_STENCIL_OP_DEC_WRAP: return "decw"; + case VK_STENCIL_OP_KEEP: return "keep"; + case VK_STENCIL_OP_ZERO: return "zero"; + case VK_STENCIL_OP_REPLACE: return "repl"; + case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "incc"; + case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "decc"; + case VK_STENCIL_OP_INVERT: return "inv"; + case VK_STENCIL_OP_INCREMENT_AND_WRAP: return "wrap"; + case VK_STENCIL_OP_DECREMENT_AND_WRAP: return "decw"; default: DE_FATAL("Invalid VkStencilOpState value"); @@ -1035,10 +1031,10 @@ std::string getStencilName(const VkStencilOpState& stencilOpState) { std::ostringstream name; - name << "fail_" << getShortName(stencilOpState.stencilFailOp) - << "_pass_" << getShortName(stencilOpState.stencilPassOp) - << "_dfail_" << getShortName(stencilOpState.stencilDepthFailOp) - << "_comp_" << getShortName(stencilOpState.stencilCompareOp); + name << "fail_" << getShortName(stencilOpState.failOp) + << "_pass_" << getShortName(stencilOpState.passOp) + << "_dfail_" << getShortName(stencilOpState.depthFailOp) + << "_comp_" << getShortName(stencilOpState.compareOp); return name.str(); } diff --git a/external/vulkancts/modules/vulkan/vktTestPackage.cpp b/external/vulkancts/modules/vulkan/vktTestPackage.cpp index 8840ccf..00754e3 100644 --- a/external/vulkancts/modules/vulkan/vktTestPackage.cpp +++ b/external/vulkancts/modules/vulkan/vktTestPackage.cpp @@ -48,7 +48,7 @@ #include "vktInfo.hpp" #include "vktApiTests.hpp" -// #include "vktPipelineTests.hpp" +#include "vktPipelineTests.hpp" #include "vktBindingModelTests.hpp" #include "vktSpvAsmTests.hpp" #include "vktShaderLibrary.hpp" @@ -288,7 +288,7 @@ void TestPackage::init (void) { addChild(createInfoTests (m_testCtx)); addChild(api::createTests (m_testCtx)); -// addChild(pipeline::createTests (m_testCtx)); + addChild(pipeline::createTests (m_testCtx)); addChild(BindingModel::createTests (m_testCtx)); addChild(SpirVAssembly::createTests (m_testCtx)); addChild(new GlslGroup (m_testCtx)); -- 2.7.4