There seems to be a problem with timestamp queries when using more than one query at a time. I've attached a sample-program to this discussion. It's an adaptation of the cube demo from the Vulkan SDK, I've marked all of my changes in the code with "/* TIMESTAMP QUERY */". What I've changed is:
1) Creating a new query pool with a query count of 2 in demo_create_device
2) Reset and write both queries in demo_draw_build_cmd
3) Retrieve the query results in demo_draw
It's supposed to print "Result 1 available" and "Result 2 available" for each query when they become available.
This works fine on NVIDIA hardware, both results are available immediately. However, on AMD hardware, only query result #2 becomes available and query result #1 stays unavailable indefinitely.
I've tested this on 2 different NVIDIA systems, and 2 AMD systems with consistent outcomes.
I've also noticed that if query #2 is not reset, both results become available. This doesn't make sense, since resetting query #2 should have no effect on query #1 (And a query has to be reset before being written to, according to the specification). Here's a video of what I mean: bandicam 2016 05 19 18 24 38 716 - YouTube
I've also noticed that if only 1 query is being created, and everything else stays the same, the result does become available just fine. The problem only occurs if more than 1 query is created.
I have the latest Vulkan beta drivers (Version 16.15.2401.1001 Public Vulkan Beta), my card is a Radeon R9 280, and I'm on Windows 10 x64.