virtual void setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const;
virtual VkDeviceAddress getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
virtual void cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const;
-virtual void resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
virtual VkResult getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const;
virtual VkResult getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const;
virtual VkResult getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
m_vk.cmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
}
-void DeviceDriver::resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const
-{
- m_vk.resetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
-}
-
VkResult DeviceDriver::getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const
{
return m_vk.getAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
"VK_KHR_buffer_device_address",
"VK_EXT_host_query_reset",
"VK_KHR_separate_depth_stencil_layouts",
+ "VK_KHR_timeline_semaphore",
+ "VK_KHR_spirv_1_4",
+ "VK_EXT_separate_stencil_usage",
"VK_KHR_pipeline_executable_properties",
};
SetLocalDimmingAMDFunc setLocalDimmingAMD;
GetBufferDeviceAddressEXTFunc getBufferDeviceAddressEXT;
CmdSetLineStippleEXTFunc cmdSetLineStippleEXT;
-ResetQueryPoolEXTFunc resetQueryPoolEXT;
GetAndroidHardwareBufferPropertiesANDROIDFunc getAndroidHardwareBufferPropertiesANDROID;
GetMemoryAndroidHardwareBufferANDROIDFunc getMemoryAndroidHardwareBufferANDROID;
GetMemoryWin32HandleKHRFunc getMemoryWin32HandleKHR;
if (!m_vk.cmdEndRenderPass2)
m_vk.cmdEndRenderPass2 = (CmdEndRenderPass2Func) GET_PROC_ADDR("vkCmdEndRenderPass2KHR");
m_vk.resetQueryPool = (ResetQueryPoolFunc) GET_PROC_ADDR("vkResetQueryPool");
+if (!m_vk.resetQueryPool)
+ m_vk.resetQueryPool = (ResetQueryPoolFunc) GET_PROC_ADDR("vkResetQueryPoolEXT");
m_vk.getSemaphoreCounterValue = (GetSemaphoreCounterValueFunc) GET_PROC_ADDR("vkGetSemaphoreCounterValue");
if (!m_vk.getSemaphoreCounterValue)
m_vk.getSemaphoreCounterValue = (GetSemaphoreCounterValueFunc) GET_PROC_ADDR("vkGetSemaphoreCounterValueKHR");
m_vk.setLocalDimmingAMD = (SetLocalDimmingAMDFunc) GET_PROC_ADDR("vkSetLocalDimmingAMD");
m_vk.getBufferDeviceAddressEXT = (GetBufferDeviceAddressEXTFunc) GET_PROC_ADDR("vkGetBufferDeviceAddressEXT");
m_vk.cmdSetLineStippleEXT = (CmdSetLineStippleEXTFunc) GET_PROC_ADDR("vkCmdSetLineStippleEXT");
-m_vk.resetQueryPoolEXT = (ResetQueryPoolEXTFunc) GET_PROC_ADDR("vkResetQueryPoolEXT");
m_vk.getAndroidHardwareBufferPropertiesANDROID = (GetAndroidHardwareBufferPropertiesANDROIDFunc) GET_PROC_ADDR("vkGetAndroidHardwareBufferPropertiesANDROID");
m_vk.getMemoryAndroidHardwareBufferANDROID = (GetMemoryAndroidHardwareBufferANDROIDFunc) GET_PROC_ADDR("vkGetMemoryAndroidHardwareBufferANDROID");
m_vk.getMemoryWin32HandleKHR = (GetMemoryWin32HandleKHRFunc) GET_PROC_ADDR("vkGetMemoryWin32HandleKHR");
DE_UNREF(lineStipplePattern);
}
-VKAPI_ATTR void VKAPI_CALL resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount)
-{
- DE_UNREF(device);
- DE_UNREF(queryPool);
- DE_UNREF(firstQuery);
- DE_UNREF(queryCount);
-}
-
VKAPI_ATTR VkResult VKAPI_CALL getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties)
{
DE_UNREF(device);
VK_NULL_FUNC_ENTRY(vkSetLocalDimmingAMD, setLocalDimmingAMD),
VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressEXT, getBufferDeviceAddressEXT),
VK_NULL_FUNC_ENTRY(vkCmdSetLineStippleEXT, cmdSetLineStippleEXT),
- VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT, resetQueryPoolEXT),
+ VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT, resetQueryPool),
VK_NULL_FUNC_ENTRY(vkGetAndroidHardwareBufferPropertiesANDROID, getAndroidHardwareBufferPropertiesANDROID),
VK_NULL_FUNC_ENTRY(vkGetMemoryAndroidHardwareBufferANDROID, getMemoryAndroidHardwareBufferANDROID),
VK_NULL_FUNC_ENTRY(vkGetMemoryWin32HandleKHR, getMemoryWin32HandleKHR),
dst.push_back("VK_KHR_driver_properties");
dst.push_back("VK_KHR_shader_float_controls");
dst.push_back("VK_KHR_depth_stencil_resolve");
+ dst.push_back("VK_KHR_timeline_semaphore");
dst.push_back("VK_KHR_vulkan_memory_model");
+ dst.push_back("VK_KHR_spirv_1_4");
dst.push_back("VK_KHR_separate_depth_stencil_layouts");
dst.push_back("VK_KHR_uniform_buffer_standard_layout");
dst.push_back("VK_KHR_buffer_device_address");
dst.push_back("VK_EXT_sampler_filter_minmax");
dst.push_back("VK_EXT_shader_viewport_index_layer");
dst.push_back("VK_EXT_scalar_block_layout");
+ dst.push_back("VK_EXT_separate_stencil_usage");
dst.push_back("VK_EXT_host_query_reset");
}
if (coreVersion >= VK_API_VERSION_1_1)
virtual void setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const = 0;
virtual VkDeviceAddress getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
virtual void cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const = 0;
-virtual void resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
virtual VkResult getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const = 0;
virtual VkResult getMemoryAndroidHardwareBufferANDROID (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const = 0;
virtual VkResult getMemoryWin32HandleKHR (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
configCommandBuffer();
if (m_hostQueryReset)
{
- vk.resetQueryPoolEXT(vkDevice, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
+ vk.resetQueryPool(vkDevice, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
}
submitCommandsAndWait(vk, vkDevice, queue, m_cmdBuffer.get());
}
// Host resets the query pool
- vk.resetQueryPoolEXT(vkDevice, *m_queryPool, 0u, stageSize);
+ vk.resetQueryPool(vkDevice, *m_queryPool, 0u, stageSize);
// Get timestamp value from query pool
vk::VkResult res = vk.getQueryPoolResults(vkDevice, *m_queryPool, 0u, stageSize, sizeof(deUint64) * stageSize * 2, (void*)m_timestampValuesHostQueryReset, sizeof(deUint64) * 2, VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT);
if (m_hostQueryReset)
{
// Only reset the pool for the primary command buffer, the secondary command buffer will reset the pool by itself.
- vk.resetQueryPoolEXT(m_context.getDevice(), *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
+ vk.resetQueryPool(m_context.getDevice(), *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
}
VK_CHECK(vk.queueSubmit(queue, 1u, &submitInfo, DE_NULL));
endCommandBuffer(vk, *cmdBuffer);
if (m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
- vk.resetQueryPoolEXT(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
+ vk.resetQueryPool(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
submitCommandsAndWait(vk, device, queue, cmdBuffer.get());
};
if (!hasSeparateResetCmdBuf() && m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
- vk.resetQueryPoolEXT(m_context.getDevice(), m_queryPool, 0, NUM_QUERIES_IN_POOL);
+ vk.resetQueryPool(m_context.getDevice(), m_queryPool, 0, NUM_QUERIES_IN_POOL);
vk.queueSubmit(queue, 1, &submitInfoRender, DE_NULL);
}
if (m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
{
- vk.resetQueryPoolEXT(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
+ vk.resetQueryPool(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
vk::VkResult queryResult = vk.getQueryPoolResults(device, m_queryPool, 0, NUM_QUERIES_IN_POOL, resultsBuffer.size(), &resultsBuffer[0], m_testVector.queryResultsStride, m_queryResultFlags);
if (queryResult != vk::VK_NOT_READY)
if (m_testVector.queryResultsAvailability && *(srcPtrTyped + 1) != 0)
{
- TCU_FAIL("resetQueryPoolEXT did not disable availability bit");
+ TCU_FAIL("resetQueryPool did not disable availability bit");
}
}
else if (m_testVector.queryResultSize == RESULT_SIZE_64_BIT)
if (m_testVector.queryResultsAvailability && *(srcPtrTyped + 1) != 0)
{
- TCU_FAIL("resetQueryPoolEXT did not disable availability bit");
+ TCU_FAIL("resetQueryPool did not disable availability bit");
}
}
else
m_context.getTestContext().getLog() << tcu::TestLog::Message << "Compute shader invocations: " << getComputeExecution(m_parameters[parametersNdx]) << tcu::TestLog::EndMessage;
if (m_parameters[0].resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+ vk.resetQueryPool(device, *queryPool, 0u, 1u);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = data[0].first;
- vk.resetQueryPoolEXT(device, *queryPool, 0, 1u);
+ vk.resetQueryPool(device, *queryPool, 0, 1u);
vk::VkResult res = GetQueryPoolResultsVector(data, vk, device, *queryPool, 0u, 1u, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
// Secondary buffer is emitted only once, so it is safe to reset the query pool here.
if (m_parameters[0].resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+ vk.resetQueryPool(device, *queryPool, 0u, 1u);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0u, 1u);
+ vk.resetQueryPool(device, queryPool, 0u, 1u);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, 1u, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parameters[0].resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+ vk.resetQueryPool(device, *queryPool, 0u, 1u);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+ vk.resetQueryPool(device, queryPool, 0, queryCount);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+ vk.resetQueryPool(device, queryPool, 0, queryCount);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
deUint64 temp = results[0].first;
- vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+ vk.resetQueryPool(device, queryPool, 0, queryCount);
vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
/* From Vulkan spec:
*
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *primaryCmdBuffer);
if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
- vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+ vk.resetQueryPool(device, *queryPool, 0u, queryCount);
// Wait for completion
submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
endCommandBuffer(vk, *cmdBuffer);
if (m_parameters.testType == TEST_TYPE_QUERY_RESET)
- vk.resetQueryPoolEXT(device, *queryPool, queryIndex, queryCountersNumber);
+ vk.resetQueryPool(device, *queryPool, queryIndex, queryCountersNumber);
submitCommandsAndWait(vk, device, queue, *cmdBuffer);
{
queryResults->elements32[2] = 1u; // Availability bit
}
- vk.resetQueryPoolEXT(device, *queryPool, queryIndex, queryCountersNumber);
+ vk.resetQueryPool(device, *queryPool, queryIndex, queryCountersNumber);
vk::VkResult res = vk.getQueryPoolResults(device, *queryPool, queryIndex, queryCountersNumber, queryDataAvailSize, queryData.data(), queryDataAvailSize, (vk::VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | queryExtraFlags));
const deUint64 numPrimitivesWritten = (m_parameters.query64bits ? queryResults->elements64[0] : queryResults->elements32[0]);
]
EXTENSION_POSTFIXES = ["KHR", "EXT", "NV", "NVX", "KHX", "NN", "MVK", "FUCHSIA", "GGP", "AMD"]
-EXTENSION_POSTFIXES_STANDARD = ["KHR"]
+EXTENSION_POSTFIXES_STANDARD = ["KHR", "EXT"]
def prefixName (prefix, name):
name = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', name[2:])
return name[0:-len(extPostfix)]
return None
-def populateAliases (objects):
- objectsByName = {}
- for object in objects:
- objectsByName[object.name] = object
- for object in objects:
+def populateExtensionAliases(allObjects, extensionObjects):
+ for object in extensionObjects:
withoutPostfix = removeTypeExtPostfix(object.name)
- if withoutPostfix != None and withoutPostfix in objectsByName:
- objectsByName[withoutPostfix].alias = object
+ if withoutPostfix != None and withoutPostfix in allObjects:
+ # max 1 alias is assumed by functions in this file
+ assert allObjects[withoutPostfix].alias == None
+ allObjects[withoutPostfix].alias = object
object.isAlias = True
- for object in objects:
+ for object in extensionObjects:
object.checkAliasValidity()
def populateAliasesWithTypedefs (objects, src):
extHandles = [handlesByName[handle.name] for handle in handles]
extDefinitions = [definitionsByName[definition.name] for definition in definitions]
+ if extCoreVersion != None:
+ populateExtensionAliases(functionsByName, extFunctions)
+ populateExtensionAliases(handlesByName, extHandles)
+ populateExtensionAliases(enumsByName, extEnums)
+ populateExtensionAliases(bitfieldsByName, extBitfields)
+ populateExtensionAliases(compositeTypesByName, extCompositeTypes)
+
+
extensions.append(Extension(extensionName, extHandles, extEnums, extBitfields, extCompositeTypes, extFunctions, extDefinitions, additionalDefinitions, extCoreVersion))
return extensions
# Add empty bitfield
bitfields.append(Bitfield(bitfieldName, []))
+ extensions = parseExtensions(src, versions, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
+
# Populate alias fields
populateAliasesWithTypedefs(compositeTypes, src)
populateAliasesWithTypedefs(enums, src)
populateAliasesWithTypedefs(bitfields, src)
- populateAliases(allFunctions)
- populateAliases(handles)
- populateAliases(enums)
- populateAliases(bitfields)
- populateAliases(compositeTypes)
for enum in enums:
removeAliasedValues(enum)
- extensions = parseExtensions(src, versions, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
-
return API(
versions = versions,
definitions = definitions,
VK_KHR_buffer_device_address DEVICE 1_2_0
VK_EXT_host_query_reset DEVICE 1_2_0
VK_KHR_separate_depth_stencil_layouts DEVICE 1_2_0
-VK_KHR_pipeline_executable_properties DEVICE
\ No newline at end of file
+VK_KHR_timeline_semaphore DEVICE 1_2_0
+VK_KHR_spirv_1_4 DEVICE 1_2_0
+VK_EXT_separate_stencil_usage DEVICE 1_2_0
+VK_KHR_pipeline_executable_properties DEVICE