Fix one pipeline barrier and stop allocating unneeded fragment outputs.
Tests with multiple outputs were allocating one color target for each,
but self-checking tests combine their results down to a single yes/no
color write. For these tests, only allocate one output target.
Components: Vulkan
Affects: dEQP-VK.glsl.*
Change-Id: Icb97091e9de7e58e3751f0a5c4f9a19a6894f085
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
**m_resolveImage, colorSubresourceRange);
- vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0,
+ vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0,
0u, DE_NULL, 0u, DE_NULL, 1u, &barrier);
}
else
, m_uniformMem (m_uniformLayout.size > 0 ? allocateAndBindMemory(context, *m_uniformBuffer, vk::MemoryRequirement::HostVisible) : MovePtr<vk::Allocation>())
, m_rtFormat (getRenderTargetFormat(spec.outputFormat))
- , m_outputCount ((deUint32)m_spec.values.outputs.size() == 0 ? 1 : (deUint32)m_spec.values.outputs.size())
+ , m_outputCount (((deUint32)m_spec.values.outputs.size() == 0 || m_spec.outputType == glu::sl::OUTPUT_RESULT) ? 1 : (deUint32)m_spec.values.outputs.size())
, m_rtImage ()
, m_rtMem ()
, m_rtView ()