Merge vk-gl-cts/vulkan-cts-1.2.8 into vk-gl-cts/vulkan-cts-1.3.0
Change-Id: I70f2eff0aee69bc3ed882d1ad4f6fc9ffb4b10b6
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 00dcc13..6d940b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -282,7 +282,7 @@
if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
# Executable target
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
- target_link_libraries(${MODULE_NAME} tcutil-platform "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
+ target_link_libraries(${MODULE_NAME} PUBLIC tcutil-platform "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
target_copy_files(${MODULE_NAME} platform-libs-${MODULE_NAME} "${DEQP_PLATFORM_COPY_LIBRARIES}")
endif ()
diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp
index b9f1781..424ef41 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp
@@ -667,14 +667,19 @@
tcu::TestStatus testLargeBuffer(Context& context, LargeBufferParameters params)
{
- const DeviceInterface& vk = context.getDeviceInterface();
- const VkDevice vkDevice = context.getDevice();
- const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex();
- VkBuffer rawBuffer = DE_NULL;
+ const DeviceInterface& vk = context.getDeviceInterface();
+ const VkDevice vkDevice = context.getDevice();
+ const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex();
+ const VkPhysicalDeviceLimits limits = getPhysicalDeviceProperties(context.getInstanceInterface(),
+ context.getPhysicalDevice()).limits;
+ VkBuffer rawBuffer = DE_NULL;
if (params.useMaxBufferSize)
params.bufferSize = context.getMaintenance4Properties().maxBufferSize;
+ if ((params.flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) != 0)
+ params.bufferSize = std::min(params.bufferSize, limits.sparseAddressSpaceSize);
+
VkBufferCreateInfo bufferParams =
{
VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType;
diff --git a/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp
index be26400..ea6d18e 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp
@@ -2644,7 +2644,6 @@
&secBufferInheritInfo,
};
- // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set
const VkQueryPoolCreateInfo queryPoolCreateInfo =
{
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, // sType
@@ -2662,7 +2661,7 @@
VK_CHECK(vk.beginCommandBuffer(primCmdBuf.get(), &primBufferBeginInfo));
{
vk.cmdResetQueryPool(primCmdBuf.get(), queryPool.get(), 0u, 1u);
- vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, VK_QUERY_CONTROL_PRECISE_BIT);
+ vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, 0u);
{
vk.cmdExecuteCommands(primCmdBuf.get(), 1u, &secCmdBuf.get());
}
@@ -2670,7 +2669,7 @@
}
endCommandBuffer(vk, primCmdBuf.get());
- return tcu::TestStatus::pass("Successfully recorded a secondary command buffer allowing a precise occlusion query.");
+ return tcu::TestStatus::pass("Successfully recorded an imprecise query with a secondary command buffer allowing a precise occlusion query.");
}
tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context)
@@ -2740,7 +2739,6 @@
&secBufferInheritInfo,
};
- // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set
const VkQueryPoolCreateInfo queryPoolCreateInfo =
{
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, // sType
@@ -2758,7 +2756,7 @@
VK_CHECK(vk.beginCommandBuffer(primCmdBuf.get(), &primBufferBeginInfo));
{
vk.cmdResetQueryPool(primCmdBuf.get(), queryPool.get(), 0u, 1u);
- vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, VK_QUERY_CONTROL_PRECISE_BIT);
+ vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, 0u);
{
vk.cmdExecuteCommands(primCmdBuf.get(), 1u, &secCmdBuf.get());
}
@@ -2766,7 +2764,7 @@
}
endCommandBuffer(vk, primCmdBuf.get());
- return tcu::TestStatus::pass("Successfully recorded a secondary command buffer allowing a precise occlusion query.");
+ return tcu::TestStatus::pass("Successfully recorded an imprecise query with a secondary command buffer not allowing a precise occlusion query.");
}
/******** 19.4. Command Buffer Submission (5.4 in VK 1.0 Spec) ****************/
diff --git a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
index 0270c29..4fce063 100644
--- a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
+++ b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
@@ -554,20 +554,23 @@
bool optional = (m_testParams.additionalDescriptorBinding != BINDING_Undefined) && (m_testParams.additionalDescriptorType != VK_DESCRIPTOR_TYPE_UNDEFINED);
+ const VkShaderStageFlags bindingStageFlags = (m_testParams.descriptorType == VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT) ?
+ VkShaderStageFlags{VK_SHADER_STAGE_FRAGMENT_BIT} : m_testParams.stageFlags;
+
const VkDescriptorSetLayoutBinding bindings[] =
{
{
m_testParams.descriptorBinding, // binding
m_testParams.descriptorType, // descriptorType
descriptorCount, // descriptorCount
- m_testParams.stageFlags, // stageFlags
+ bindingStageFlags, // stageFlags
DE_NULL, // pImmutableSamplers
},
{
m_testParams.additionalDescriptorBinding, // binding
m_testParams.additionalDescriptorType, // descriptorType
1, // descriptorCount
- m_testParams.stageFlags, // stageFlags
+ bindingStageFlags, // stageFlags
DE_NULL, // pImmutableSamplers
}
};
diff --git a/external/vulkancts/modules/vulkan/texture/vktTextureConversionTests.cpp b/external/vulkancts/modules/vulkan/texture/vktTextureConversionTests.cpp
index 1fe7c8e..6038031 100644
--- a/external/vulkancts/modules/vulkan/texture/vktTextureConversionTests.cpp
+++ b/external/vulkancts/modules/vulkan/texture/vktTextureConversionTests.cpp
@@ -32,6 +32,7 @@
#include "tcuVectorUtil.hpp"
#include "deSharedPtr.hpp"
+#include <cmath>
#include <memory>
namespace vkt
@@ -62,6 +63,7 @@
virtual tcu::TestStatus iterate (void) override;
protected:
+ tcu::IVec4 computeColorDistance () const;
bool verifyPixels (const tcu::PixelBufferAccess& rendered,
const tcu::PixelBufferAccess& reference,
const ReferenceParams& samplerParams,
@@ -78,6 +80,7 @@
tcu::Texture2D m_swTexture;
TextureRenderer m_renderer;
+ const tcu::IVec4 m_cd;
const tcu::IVec4 m_a;
const tcu::IVec4 m_b;
const tcu::IVec4 m_c;
@@ -96,10 +99,11 @@
, m_hwTexture (TestTexture2DSp(new pipeline::TestTexture2D(m_inFormat, textureWidth, textureHeight)))
, m_swTexture (m_inFormat, textureWidth, textureHeight, 1)
, m_renderer (context, VK_SAMPLE_COUNT_1_BIT, m_params->width, m_params->height, 1u, makeComponentMappingRGBA(), VK_IMAGE_TYPE_2D, VK_IMAGE_VIEW_TYPE_2D, m_outFormat)
- , m_a (lim(m_inFormat, 0), lim(m_inFormat, 1)+2, lim(m_inFormat, 2), lim(m_inFormat, 3)+2)
- , m_b (lim(m_inFormat, 0)+2, lim(m_inFormat, 1), lim(m_inFormat, 2)+2, lim(m_inFormat, 3) )
- , m_c (lim(m_inFormat, 0)+1, lim(m_inFormat, 1)+1, lim(m_inFormat, 2)+1, lim(m_inFormat, 3)+1)
- , m_d (lim(m_inFormat, 0), lim(m_inFormat, 1), lim(m_inFormat, 2), lim(m_inFormat, 3) )
+ , m_cd (computeColorDistance())
+ , m_a (lim(m_inFormat, 0), lim(m_inFormat, 1)+m_cd[1]*2, lim(m_inFormat, 2), lim(m_inFormat, 3)+m_cd[3]*2)
+ , m_b (lim(m_inFormat, 0)+m_cd[0]*2, lim(m_inFormat, 1), lim(m_inFormat, 2)+m_cd[2]*2, lim(m_inFormat, 3) )
+ , m_c (lim(m_inFormat, 0)+m_cd[0]*1, lim(m_inFormat, 1)+m_cd[1]*1, lim(m_inFormat, 2)+m_cd[2]*1, lim(m_inFormat, 3)+m_cd[3]*1)
+ , m_d (lim(m_inFormat, 0), lim(m_inFormat, 1), lim(m_inFormat, 2), lim(m_inFormat, 3) )
{
tcu::IVec4 data[textureWidth * textureHeight] =
{
@@ -135,6 +139,17 @@
return channelBits[channelIdx] ? (-deIntMaxValue32(channelBits[channelIdx])) : (-1);
}
+tcu::IVec4 SnormLinearClampInstance::computeColorDistance () const
+{
+ return tcu::IVec4
+ (
+ static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f)),
+ static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f)),
+ static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f)),
+ static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f))
+ );
+}
+
bool SnormLinearClampInstance::verifyPixels (const tcu::PixelBufferAccess& rendered, const tcu::PixelBufferAccess& reference, const ReferenceParams& samplerParams, const std::vector<float>& texCoords) const
{
tcu::LodPrecision lodPrec;
@@ -144,6 +159,7 @@
const int width (m_renderer.getRenderWidth());
const int height (m_renderer.getRenderHeight());
+ const tcu::IVec4 colorDistance (computeColorDistance());
std::unique_ptr<deUint8[]> errorMaskData (new deUint8[width * height * 4 * 4]);
tcu::PixelBufferAccess errorMask (mapVkFormat(m_outFormat), width, height, 1, errorMaskData.get());
@@ -154,10 +170,10 @@
lookupPrec.uvwBits = tcu::IVec3(5,5,0);
lookupPrec.coordBits = tcu::IVec3(20,20,0);
lookupPrec.colorMask = tcu::BVec4(nuc >= 1, nuc >= 2, nuc >=3, nuc >= 4);
- lookupPrec.colorThreshold = tcu::Vec4(0.9f/float(-lim(m_inFormat, 0)),
- 0.9f/float(-lim(m_inFormat, 1)),
- 0.9f/float(-lim(m_inFormat, 2)),
- 0.9f/float(-lim(m_inFormat, 3)));
+ lookupPrec.colorThreshold = tcu::Vec4(0.9f/float(colorDistance[0]),
+ 0.9f/float(colorDistance[1]),
+ 0.9f/float(colorDistance[2]),
+ 0.9f/float(colorDistance[3]));
const int numFailedPixels = glu::TextureTestUtil::computeTextureLookupDiff(rendered, reference, errorMask,
m_swTexture, texCoords.data(), samplerParams,