<alyssa>
"Because this bit is render pass state, we can’t use it to change the clip space between draws. That’s okay for baseline OpenGL and Vulkan, but it prevents us from efficiently implementing the ARB_clip_control and VK_EXT_depth_clip_control extensions. There are at least three (inefficient) implementations."
seeeath has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
seeeath has joined #asahi-gpu
<alyssa>
Honestly unsure which approach I hate least (shader variants, dynamic state, flushing)
<alyssa>
For VK_EXT_depth_clip_control, the bit is pipeline state. Flushing isn't an option but there's no dynamic state needed: just fix the [0, 1] clip space by default and insert the fix up code for Zink.
<alyssa>
And then Zink on top of a VK_EXT_depth_clip_control driver will end up creating pipeline variants
<alyssa>
For native GL, the flush is a bit cleaner but would require caution to ensure we don't flush unnecessarily with stuff like u_blitter
<alyssa>
Tempted to just go the shader variant + lower_clip_halfz route since it would be parity with Zink
<alyssa>
the annoyance there is that it would then add overhead to all GL apps
<alyssa>
which violates the "only pay for what you use" rule
<alyssa>
Meh. Will do the flushing option to light up the CAP and then when we actually have workloads we can optimize
<alyssa>
The fighting comes with something like glBitmap + glClipControl used together
<alyssa>
which isn't ideal
<alyssa>
yeah I am still waffling
<alyssa>
damned if you do, damned if you dont
<alyssa>
kicking the can down the line until we have 4K pages
<alyssa>
lest this all be purely theoretical
nopeslide1 has quit []
nopeslide1 has joined #asahi-gpu
nopeslide1 has quit []
nopeslide1 has joined #asahi-gpu
Cyrinux has quit []
Cyrinux has joined #asahi-gpu
Cyrinux has quit [Remote host closed the connection]
seeeath has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]