test(agc): skip the exec host lanes vertex draw without vertex subgroups

This commit is contained in:
Zheorgyan 2026-10-08 14:43:17 +02:00
parent 3c4bdda47a
commit ed14c24bd7
3 changed files with 7 additions and 0 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);