AdvancedVulkanFallbackSmoke.kt
src/jvmMain/kotlin/afield/graphics/render/AdvancedVulkanFallbackSmoke.kt · 36 lines
package afield.graphics.render
import afield.graphics.scene.main
import afield.document.graph.Box
import afield.graphics.vulkan.Renderer
import afield.graphics.shader.learning.GpuShaderTraining
import afield.graphics.shader.learning.LearnedShader
import afield.media.reconstruction.ReconstructionCapture
import afield.graphics.vulkan.util.Options
import afield.graphics.vulkan.util.Window
import kotlin.system.exitProcess
object AdvancedVulkanFallbackSmoke
Force optional feature gates off on a supporting device and exercise ordinary shader inference.
@JvmStatic fun main(args: Array<String>)
@JvmStatic fun main(args: Array<String>) {
System.setProperty("afield.clusterAccelerationStructure.disabled","true")
System.setProperty("afield.cooperativeVector.disabled","true")
Options.enableVR=false;Options.enableHDR=false;Options.doVulkanSDK()
val window=Window("Field optional features disabled");val renderer=Renderer(window)
val box=Box("advanced-fallback");box.setPropertyRaw("renderer",renderer,doResync=false)
try { Box.withBoxContextNow(box) {
check(!renderer.device.supportsClusterAccelerationStructure && !renderer.device.supportsCooperativeVectorTraining)
check(runCatching { ClusterGeometry(renderer,1) }.exceptionOrNull()?.message?.contains("not enabled")==true)
check(runCatching { GpuShaderTraining(renderer,64,48) }.exceptionOrNull()?.message?.contains("not enabled")==true)
LearnedShader(renderer,320,180,cooperative=false).use { learned ->
val end=renderer.frameCounter+12
while(renderer.frameCounter<end){window.pollEvents();renderer.render()}
val pixels=ReconstructionCapture.read(renderer,learned.output)
check(pixels.all { it.isFinite() } && pixels.max()>.1f)
}
}} finally {renderer.cleanup();window.cleanup()}
println("ADVANCED VULKAN FALLBACK CHECK DONE");exitProcess(0)
}
}