test(agc): skip the exec host lanes vertex draw without vertex subgroups
This commit is contained in:
parent
3c4bdda47a
commit
ed14c24bd7
|
|
@ -162,6 +162,7 @@ public:
|
|||
bool PrimitiveListRestart() const;
|
||||
bool SamplerFilterMinmax() const;
|
||||
bool ConservativeRasterization() const;
|
||||
VkShaderStageFlags SubgroupStages() const;
|
||||
// A presentation is a few steps so the presenter holds GuestMemory::GpuMutex only while it
|
||||
// touches the queue. Presentations are slots (FlipInFlight() + 1, each with its own command
|
||||
// buffer, fence, kept resident image and dump buffer): RetirePresents(keep) (no mutex) retires
|
||||
|
|
|
|||
|
|
@ -2450,6 +2450,10 @@ bool VulkanDevice::ConservativeRasterization() const {
|
|||
return state->conservativeRasterization;
|
||||
}
|
||||
|
||||
VkShaderStageFlags VulkanDevice::SubgroupStages() const {
|
||||
return state->subgroup.supportedStages;
|
||||
}
|
||||
|
||||
Graphics::Context VulkanDevice::graphicsContext() const {
|
||||
static const bool noCache = std::getenv("APS5_NO_CONTEXT_CACHE") != nullptr;
|
||||
if (state->contextReady && !noCache) return state->context;
|
||||
|
|
|
|||
|
|
@ -169,6 +169,8 @@ int main() {
|
|||
Check("compute lane", Threads);
|
||||
if (device->Target().subgroupSize < 32u) {
|
||||
std::printf("vertex draw skipped, subgroup size %u cannot hold a wave32\n", device->Target().subgroupSize);
|
||||
} else if ((device->SubgroupStages() & VK_SHADER_STAGE_VERTEX_BIT) == 0u) {
|
||||
std::puts("vertex draw skipped, the device has no subgroup operations in vertex shaders");
|
||||
} else {
|
||||
Draw(*device);
|
||||
Check("vertex", Vertices);
|
||||
|
|
|
|||
Loading…
Reference in New Issue