ChanServ changed the topic of #zink to: official development channel for the mesa3d zink driver || https://docs.mesa3d.org/drivers/zink.html
cheako has quit [Quit: Connection closed for inactivity]
fahien has joined #zink
fahien has quit [Ping timeout: 480 seconds]
<kusma> Hmm. Just did a full GL 4.6 CTS run on Zink + RADV... Seems to pass 100%, including GTF :)
<zmike> yup
<kusma> zmike: Great work! Are you planning on submitting a CTS result?
<zmike> radv team 💪💪💪
<zmike> no, cts needs a new release first
<kusma> Are you planning on doing that once they release?
<zmike> yes
<kusma> Awesome :)
<kusma> I guess we need one more HW and one SW submission, and the whole mapping layer is considered conformant, then :)
<zmike> it's 1 and 1
<kusma> Ah
<kusma> My bad
<zmike> lavapipe almost passes except for subgroup
<kusma> Fantastic :)
<zmike> which has test bugs
<kusma> :(
<zmike> and lavapipe/llvmpipe bugs I think
<zmike> but it's legal to use any version of the driver, so I can just use one from before subgroups were implemented
<zmike> or disable it entirely
<kusma> Right.
<kusma> Haha :)
<kusma> Yeah, true.
<kusma> The future is bright, gotta start wearing sunglasses
<zmike> I wake up wearing them, I go to sleep wearing them
<ajax> wtf is !18736 trying to do
<zmike> see discussion from last night
<zmike> trying to hook up zs invalidates
<ajax> what is the source of this "in EGL" comment
<ajax> why not in glx too
<zmike> it's not legal in glx I guess
<ajax> don't threaten me with etc
<zmike> if you have a better way of getting that info through I'm all ears
<ajax> well i've been nerdsniped about it, curse you
<ajax> but i'm also technically listening to a meeting so i don't have a full brain on it
<zmike> such is life
<zmike> it really is a shame these interfaces are so obfuscated, otherwise it would be much more trivial to handle something like this
<zmike> I'll leave it with you then, and you can punt it back to me if you get busy
<ajax> i'm trying to make this whole layer something that isn't "an interface" that anything other than mesa cares about
<zmike> would be nice
<ajax> mmm. why did egl decide to add that.
<ajax> i mean, obviously because performance, but
<ajax> so there _is_ a way, kind of
<ajax> GLX says this:
<ajax> Ancillary buffers are associated with a GLXDrawable, not with a rendering
<ajax> context. If several rendering contexts are all writing to the same window, they
<ajax> will share those buffers. Rendering operations to one window never affect the
<ajax> unobscured pixels of another window, or the corresponding pixels of ancillary
<ajax> buffers of that window. If an Expose event is received by the client, the
<ajax> values in the ancillary buffers and in the back buffers for regions
<ajax> corresponding to the exposed region become undefined.
<zmike> 🤔
<ajax> which is sort of a legacy of how early hardware worked, i think
<ajax> your display was exactly this resolution, so you had exactly this much memory, which means you have exactly this much Z buffer RAM
<ajax> and all of it corresponds to an on-screen pixel
<ajax> so when your GLX window gets obscured, the Expose event that the server was going to send you anyway (when the occlusion is removed) is overloaded to invalidate the ancillary buffers as well as the obvious front buffer
<ajax> and this is pre-fbo so it's not like there's any other Z buffer to talk about
<ajax> which means! if we could coerce the server to send an Expose event for the window, we would be Technically Correct™ in blowing away zs if we wanted
<zmike> but this wouldn't apply to all scenarios
<ajax> but _probably_ there are apps not expecting to notice that Expose event bit and think they get preserved zs all the time?
<zmike> yeah probably
<ajax> but uh. i feel like this is more a property of the swap than of the context?
<ajax> and there's already variations in the SwapBuffers path for how much to flush
<ajax> ugh. right. GLX has working swap-at-msc, EGL has working swap-with-dirty-rects.
<ajax> so what i'm hearing is, we need a new SwapBuffersWithIcing hook
<zmike> I guess?
<zmike> that'd certainly be one way to do it
<ajax> except someone had an MR up for EGL for swap timing, i though
<ajax> lol. the EGL 1.4 spec footnotes the ancillary buffer thing as just acknowledging what implementations do, and says it's developing an extension to let you query/control thta
<zmike> classic
<ajax> 1.5 promotes most of that footnote to the text, but no longer claims to be developing such an extension, and indeed the registry does not contain one
<ajax> hastily sweeping things under rug
<zmike> oof relatable
<anholt_> ajax: you can already explicitly invalidate Z before glXSwapBuffers if you'd like, no need for new ext
<ajax> true
<ajax> though if that's true, is that something the egl frontend could just, like, do?
<anholt_> I thought we got all the GL calls out of the winsys frontend in favor of loader method calls?
<ajax> i mean. src/egl/main/ calling GL API feels pretty innocuous to me, esp if you wrap it behind GetProcAddress
<anholt_> would take a bit of digging to make sure that the API is the same across various GL versions, but sounds good
<ajax> forgive me, dumb brain moment, what API were you thinking of "explicitly invalidate Z"?
<anholt_> _mesa_InvalidateFramebuffer
<anholt_> there's also _mesa_DiscardFramebufferEXT
<ajax> yeah, just found the latter
<ajax> thanks
* ajax pokes
<ajax> did not expect to wake up wishing there was another dsa function but here we are
orbea has quit [Quit: You defeated orbea! 2383232 XP gained!]
orbea has joined #zink
<ajax> delightful. InvalidateFramebuffer will nuke the whole fb, InvalidateSubFramebuffer will not even when given the whole fb's size as the argument rect
<zmike> ajax: incredible
<zmike> horrendous
<zmike> ajax airlied anyone: can I get a quick rb on the zink patch in https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18724
<ajax> donk
<zmike> hero
* zmike tries to unstick hundreds of blocked zink patches
<ajax> deqp-egl: ../src/mesa/main/glthread_shaderobj.c:55: wait_for_glLinkProgram: Assertion `p_atomic_read(&ctx->GLThread.LastProgramChangeBatch) == -1' failed.
<zmike> 🤔
<zmike> what's this
<ajax> just me trying to run deqp-egl against radeonsi to test some changes
<zmike> hah
<ajax> randomly fell over in the middle of the run
<zmike> well
<zmike> radeonsi isn't passing conformance, so this isn't surprising
<ajax> interestingly i think it's crashing in the same place every time
<ajax> that rarest of unicorns, the stable race condition
<zmike> that is pretty incredible tbh
<zmike> and with glthread no less
<ajax> something about this machine is really very good at provoking races
cheako has joined #zink
LexSfX has quit []
LexSfX has joined #zink