ChanServ changed the topic of #zink to: official development channel for the mesa3d zink driver || https://docs.mesa3d.org/drivers/zink.html
omegatron has quit [Quit: What happened? You quit!]
pendingchaos has quit [Read error: Connection reset by peer]
pendingchaos has joined #zink
kusma has quit []
kusma has joined #zink
kusma-test has joined #zink
kusma has quit []
kusma has joined #zink
<kusma> airlied: That test (dEQP-VK.rasterization.interpolation.projected.line_strip) passes on my branch, which implements strictLines...
kusma-test has quit []
<kusma> I don't think messing with the start/end points is going to be the right solution, as I can't see how this differs from the VK and GL specs.
<airlied> kusma: so with master there are 4 fails on dEQP-VK.rasterization.interpolation.* I think
<airlied> if they pass with your branch then great
<kusma> airlied: That particular test doesn't run on main, it seems...
<airlied> we don't hit in CI afaik due to the slicing
<kusma> Right now, I think all that remains is CTS bugs TBH. I really wonder how anyone passes these tests, because they're fundamentally broken.
<kusma> airlied: No, I mean the test reports "NotSupported (Strict rasterization is not supported at vktRasterizationTests.cpp:4467)"
<kusma> My guess would be that you're trying to enable strictLines without doing all the work needed first?
<airlied> nope this is just master
<airlied> dEQP-VK.rasterization.interpolation.projected.lines
<kusma> airlied: Strange, that shouldn't even run. Maybe you're on the wrong CTS version?
<airlied> shouldn't care about strict_lines
<airlied> dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
<airlied> I'm testing with VK-GL-CTS master
<kusma> Oh, wait. I might be confusing my results slightly here.
<kusma> Yeah, OK. Yep, that one fails before.
<kusma> airlied: All of those pass on my branch.
<airlied> yay win
<kusma> I'm a bit unhappy that non-strict lines doen't work. My OCD might want to get to the bottom of that before disabling them ;)
<kusma> airlied: We still have some new failures, though: https://gitlab.freedesktop.org/kusma/mesa/-/jobs/11599277#L5133
<kusma> But that's what I believe is CTS bugs, as I said.
<kusma> Still need to fix that, though :(
<kusma> Hmm, no. There's some more issues than that... Missing alpha transparency for the VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT-case...
<kusma> airlied: Does Lavapipe even use the draw-module? If not, that would probably explain something ;)
<airlied> kusma: nope lines are all done in llvmpipe afaik
<airlied> but I'm not 100% confident in that statement
<kusma> airlied: apart from line_smooth, I think?
<airlied> yes I think smooth is the draw module stage
<kusma> Ah, nevermind. I guess llvmpipe uses the draw module, so lavapipe doesn't have to.
<airlied> yeah it's all hidden from lavapipe
<kusma> Ah, maybe I finally have a test-case I can use to fix the needless trig in draw_pipe_aaline.c then!
<kusma> I mean:
<kusma> float a = atan2f(dy, dx);
<kusma> float c_a = cosf(a), s_a = sinf(a);
<kusma> That's a long way of writing a vector normalize ;)
<kusma> Or at least a slow way.
<kusma> (we're already calculating the length of the vector)
<kusma> Doh, OK. Gallium semantics is "if we have multisampling, ignore line smoothing", it seems.
<kusma> I'm not really sure why, though. The OpenGL spec literally says " If only points or lines are being rendered, the β€œsmooth” antialiasing mechanism provided by the base GL may result in a higher quality image. This mechanism is designed to allow multisample and smooth antialiasing techniques to be alternated during the rendering of a single scene".
<kusma> OK, no. Disabling that is the right thing to do, after reading the spec again.
<kusma> We can solve this for Lavapipe with more disable_multisample tweaks.
omegatron has joined #zink
<kusma> How are we feeling about emoji in comments? πŸ˜†
hch12907 has joined #zink
<zmike> πŸ‘
<kusma> That condition can only be expressed in emoji, I think.
<kusma> eh, emotion, not condition.
<zmike> yea not great
<kusma> When putting up the actual MR, I need to add some complaining if those extensions are missing etc also anyway.
<kusma> Eh, if that extension and any of those features are missing
<kusma> Because we need all of them until we start using the draw-module or something instead.
<kusma> For D3D12 we use util_pstipple_update_stipple_texture + nir_lower_pstipple_fs for this stuff. But... meh.
<zmike> hmm this means I'm gonna need another bit for the rasterizer state
* omegatron hands over a shiny, new Bit to zmike
<zmike> ooh shiny!
<zmike> kusma: didn't you recently say that anv supports advanced blend?
<zmike> that doesn't seem to be the case
<kusma> Don't remember, I'm often talking out of my ass
<zmike> haha oh ok
<kusma> Now I'm watching demos on my brand new Amiga 500, good times
<zmike> good day for it
<jekstrand> We don't support those silly adobe blend modes
<zmike> yeah that's what I thought
<jekstrand> AFAIK, Nvidia's the only driver that does
<zmike> yep
<jekstrand> But it's an EXT. *sigh*
<jekstrand> They tried to make it KHR
<jekstrand> I think they tried to get it in core, even
<zmike> I don't understand how it made it through as EXT even if it's just nvidia supporting it
<zmike> shouldn't it be NV at that point?
<jekstrand> Yes, it should have
<jekstrand> But it's in GLES 3.2 so, clearly, must be useful, right?
<jekstrand> That and ASTC were the two biggest mistakes in 3.2
<zmike> given that it's the only thing keeping zink from 3.2, I agree
<jekstrand> That's the thing. You can totally do it in Zink.
<zmike> ?
<zmike> if you're talking fbfetch, that's not legally portable
<jekstrand> You just have to use an input attachment to implement framebuffer_fetch_non_coherent and core Mesa will give it to you for free.
<jekstrand> You don't need full fbfetch, just the non-coherent version
<zmike> huh
<zmike> I thought I needed full fbfetch
<jekstrand> Nope
<jekstrand> blend advanced requires barriers between every draw
<jekstrand> precisely because no one but nvidia and tilers can do that nonsense
<zmike> well shit
<kusma> There's two extensions, one for coherent and one without. I think sadly the wrong one is required for es 3.2?
<jekstrand> I mean, we can do it without the barrier on SKL+ with a combination of "real" FB fetch and interlock, I think.
<jekstrand> But not on older hardware and AMD can't do "real" FB fetch at all.
<jekstrand> kusma: No, es 3.2 has the one that non-coherent version so it's fine.
<jekstrand> kusma: We support ES 3.2 on hardware that can't do coherent FB fetch.
<zmike> ughhh this is gonna suck to jam into the current architecture though
<zmike> unless...
<zmike> gonna need to hit the gym to get my brain swole enough to comprehend this idea
<kusma> Just say we support it and start formatting the hard drive of the user if they try using it
<zmike> jekstrand: which nir pass does the lowering for that?
<jekstrand> zmike: nir_format_hdd()
<jekstrand> Or are you referring to ARB_blend_stupid?
<zmike> yes
<zmike> not getting any matches for nir_format_hdd in the tree either though
<jekstrand> It's not in NIR. It's a GLSL IR pass.
<zmike> oh
<zmike> πŸ€”
<jekstrand> Yet another reason why I refuse to implement it in Vulkan
<jekstrand> It could be ported to NIR these days but, at the time, lots of drivers were still very non-NIR
<zmike> so how does this work exactly? just advertise fbfetch and then magically adobe blend? trying to find the code that actually handles it to read through
<jekstrand> Yup
<jekstrand> And whether you advertise coherent or not determines whether you get coherent blend or not, IIRC
<zmike> but then what do I do with the advanced blend functions? or do I not get them at all then?
<jekstrand> You get them if you have non-coherent fb fetch
<jekstrand> which should be implementable as an input attachment
* jekstrand is confused
<zmike> I meant like in gallium blend state, if you enable advanced blend, you get the advanced blend funcs in the state; but if I use fbfetch instead of vk advanced blend, I can't handle those
<zmike> so my question was whether having only fbfetch means that I just get normal blend funcs
<jekstrand> I don't know off-hand. You'd have to look at what happens when you throw a test at iris
<zmike> I'm getting v deep into git log right now
<zmike> jekstrand: ok, one last question then: which op does load_output translate to? SpvOpImageRead?
<jekstrand> yes
<jekstrand> because input attachments are storage images, according to SPIR-V. :-(
<zmike> that's how I read it
<zmike> this is some wild code
<jekstrand> And, IIRC, you're supposed to use a coordinate of (0,0) because it's all relative to the current pixel
<zmike> makes sense
caseif has quit [Quit: ZNC 1.8.2+deb2+b1 - https://znc.in]
caseif has joined #zink