<chadmed>
alyssa: lgtm, no noticeable regressions so far
<alyssa>
*sparkles*
<alyssa>
"noticeable" mood
<chadmed>
actually even better than no noticeable regressions, there has been a noticeable improvement
<alyssa>
ye?
<chadmed>
previously i was getting some artefacting around window borders that looked kinda like memory leaking across from other windows but thats gone now
<alyssa>
woo!
amarioguy has quit [Remote host closed the connection]
cylm_ has quit [Ping timeout: 480 seconds]
<alyssa>
lina: BTW, I think the "write" field in FaultInfo is wrong
<alyssa>
as in, I see it set sometimes when it's a read instead
<alyssa>
I'm also suspicious about the unit names
<lina>
alyssa: The lod_bias assert has been firing all along as far as I remember ^^
<lina>
I think the unit names make sense, at least some of them match
<lina>
write is definitely suspicious though
<alyssa>
lina: Nod
<alyssa>
My buffer texture code is causing faults but dmesg isn't much help figuring out why
<alyssa>
Somehow I don't think the issue is a write from DCMP
<alyssa>
err... a "write" from UL1C to 0xc021
<alyssa>
UL1C sounds like L1 for the USC
<alyssa>
maybe
<alyssa>
which I would believe
<lina>
Yeah, I think r/w is definitely backwards for UL1C and I think that's the L1 cache yes
<lina>
Those are the faults you get with bad vertex fetches
<alyssa>
ahaha yeah
<alyssa>
Oh nooooooooo
<alyssa>
>________<
<alyssa>
NOOOooooOo
<alyssa>
I thought if I just ignored that bug it would go away! :(
<lina>
;;
<lina>
Which bug?
<alyssa>
nir_opt_preamble is fundamentally unsound.
<alyssa>
It will hapilly rewrite "if (x) { load(address) }" to "if (x) { uniform }
<alyssa>
errr
<alyssa>
It will hapilly rewrite "if (x) { load(address) }" to "uniform = load(address); if (x) { uniform }"
<alyssa>
It only moves stuff that doesn't have side effects
<alyssa>
trouble is, load does have a side effect ... faulting if the address is invalid
<alyssa>
and if "x
<alyssa>
" is a condition that's only true if the address is valid
<alyssa>
suddenly you've introduced faulting into a working program
<alyssa>
(That can happen with a completely in-spec program that doesn't do any funny UB, like "if (has foo) { load(foo) }
<alyssa>
" and only binding foo if needed for the material)
<alyssa>
that seems like a very blunt hammer to work around a fundamentally unsound compiler pass
<alyssa>
what it SHOULD be doing is instead writing "if (x) { uniform = load(address) }"
<lina>
^^
<alyssa>
btw, is "asahi.fault_control=0xb" something that could be toggled at the process level?
<alyssa>
what about at the context level?
hampus has joined #asahi-gpu
<alyssa>
would be a cheap way to implement robustness
<alyssa>
(gles3.2 or vulkan)
<TellowKrinkle>
Doesn't robustness have to work with out of bounds reads too? That doesn't sound like it would protect against accidentally reading from another valid buffer that happened to be nearby
<alyssa>
TellowKrinkle: There are 2 definitions of robustness
<alyssa>
One is "out of bounds reads return 0" the other is weaker "out of bounds reads return undefined values but will not fault"
<TellowKrinkle>
ahh
<alyssa>
without the fault control flag, both of those require wrapping loads in if(..) { }
<alyssa>
with the fault control flag, the former is an unconditional load followed by a cheap conditional select or iand
<alyssa>
and the latter is free
<alyssa>
IIRC GLES3.2 only needs the weak one, and Vulkan lets you pick which of the two you want
<TellowKrinkle>
True. You don't have to do the load itself conditionally if it won't fault
<alyssa>
hampus: Do you have an M1/M2 with Asahi Linux installed?
<alyssa>
oh I see yes, reading #asahi-dev now
<alyssa>
You'll want to setup the OpenGL ES conformance tests
<alyssa>
Writing up a "How to contribute to Alyssa's drivers" doc now
<hampus>
oh ok! great :)
<lina>
alyssa: No, it's global and I'm not even sure if it can be changed at runtime at all (I think it might work but with a GPU reconfigure command, which is a relatively big hammer)
<lina>
We probably want to default to 0xb once things are relatively stable, and tell people to switch to 0 to debug faults
<lina>
There are still things we don't know about fault handling though, including all that software fault handling path thing and what the bits in that field mean...
hightower2 has quit [Remote host closed the connection]
hightower2 has joined #asahi-gpu
chadmed has quit [Remote host closed the connection]
<alyssa>
lina: ^^ don't think there's anything in there that you haven't extracted from me over months of signal chats but finally bothered to get it central
<alyssa>
hampus: I hope there's a lot helpful in there if not everything
<alyssa>
hampus: But concretely how to test texture size changes, you want dEQP-GLES3.functional.shaders.texture_functions.texturesize.sampler2darrayshadow_fragment
<alyssa>
it's a bit harder but now you're setup ;)
<alyssa>
At this point, any other questions/review/etc should be directed at Lina
<alyssa>
and I think that's all I have to say :-)
<alyssa>
good luck!
alyssa has quit [Quit: leaving]
possiblemeatball has quit [Quit: Leaving]
dadwadw has joined #asahi-gpu
SSJ_GZ has joined #asahi-gpu
chadmed has joined #asahi-gpu
dadwadw has quit []
SSJ_GZ has quit [Ping timeout: 480 seconds]
SSJ_GZ has joined #asahi-gpu
chadmed has quit [Remote host closed the connection]
cylm_ has joined #asahi-gpu
kit_ty_kate has quit [Quit: WeeChat 3.4.1]
chadmed has joined #asahi-gpu
MajorBiscuit has joined #asahi-gpu
chadmed_ has joined #asahi-gpu
hertz has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
chadmed_ has quit [Remote host closed the connection]
MajorBiscuit has quit [Quit: WeeChat 3.6]
possiblemeatball has joined #asahi-gpu
ChaosPrincess has quit [Quit: WeeChat 3.7.1]
ChaosPrincess has joined #asahi-gpu
Dementor has quit [Remote host closed the connection]
Dementor has joined #asahi-gpu
DragoonAethis has quit [Quit: hej-hej!]
DragoonAethis has joined #asahi-gpu
chengsun has joined #asahi-gpu
chengsun_ has quit [Ping timeout: 480 seconds]
alyssa has joined #asahi-gpu
<alyssa>
hampus: oh, one more thing, to run the gles3 tests on asahi you'll want to set the `ASAHI_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.0` env vars, since asahi/mesa only advertises gles2 support
<alyssa>
(if you do a full deqp-gles3 run, you'll see why ;) )
<alyssa>
if you're having troubles beyond that, lina can help ou