02:47 lemonpy: hey everyone, I'm trying to give some help in this task for panfrost/midgard https://gitlab.freedesktop.org/mesa/mesa/issues/2264, I have no experience in drivers. I've read this http://www.jlekstrand.net/jason/projects/mesa/nir-notes/ but I need more lecture about the subject. Can someone point me some lecture/info/book to understand the basis of nir and ops in mesa?
02:48 imirkin: there's a bunch of comments in the code, i think esp the nir core is moderately well documented
02:48 imirkin: but if you're a developer, it shouldn't be incredibly difficult to pick up, i think
02:48 imirkin: no real driver experience necessary
02:49 imirkin: the simplest approach would be to add the relevant nir opcodes, add algebraic opts for that pattern to be converted into those ops, and you're done
02:53 lemonpy: thanks for the reply, I'll take another look to the nir core code
04:29 imirkin: do we really not have tests that stick GL_NONE into a glDrawBuffers() array element?
04:31 imirkin: i could have sworn there was something in piglit, but now i can't find it =/
04:34 imirkin: aha - there it is - tests/spec/arb_framebuffer_object/fbo-drawbuffers-none.c
04:36 imirkin: oh, but that one still has the *shader* thinking all the outputs are there
04:36 imirkin: but just binds GL_NONE to those locations ... hm.
04:40 imirkin: [naturally, it seems like there's some sort of issue with rendering to MRT2 when the shader doesn't know about MRT0/MRT1...
04:56 imirkin: oh ffs. i bet i just figured it out. if you only have RT[2], we're not treating it as "mrt", but probably should be.
04:57 imirkin: yeah. according to the docs, mrt disabled means RT[0] result is used. sigh.
05:01 anholt_: imirkin: thanks for the fixes! Squashed into the MR.
05:02 imirkin: np, always happy to provide c++ assistance :)
05:03 imirkin: took me a while to get it right too -- forgot to properly qualify the return arg type
09:39 udovdh: the vt420 setup works; the crash/hang produces a kernel panic which is logged on the screen. I only have to capture a full one and be able to scroll through the whole panic dump and I will adapt the bug accordingly
09:39 udovdh: @Venemo, MrCooper, bnieuwenhuizen
11:52 jcdutton: Hi. Are there any instructions on how to get opencl working on amd vega GPU and Linux kernel 5.4.x
11:52 jcdutton: rocminfo is giving output, but clinfo is not finding the GPU.
17:14 imirkin: daniels: got the following when pushing to piglit: https://pastebin.com/xVECFnkG
17:14 imirkin: feels like something is misconfigured somewhere. but perhaps it's all expected.
18:10 daniels: imirkin: no that's broken, please file an issue
18:27 imirkin: daniels: ok, will try to remember to do that later on
18:30 robclark: anholt_, tomeu, seems like at some point preservation of testlog css/xsl (for browsing xml results) broke: cp: cannot stat '/deqp/testlog.{css,xsl}': No such file or directory
18:59 danyspin97: About zink, could be a gl pkg-config file added along with it?
19:03 airlied: why? it just operates like a GL driver
19:04 danyspin97: to build programs that requires GL
19:05 danyspin97: zink should work even without xorg and libGLX.so, right?
19:07 airlied: danyspin97: it doesn't yet
19:07 airlied: since at least on Linux GL, requires GLX
19:07 airlied: and that has nothing to do with zin
19:07 airlied: zink
19:07 airlied: any GL driver on Linux should work without xorg and libGLX
19:10 airlied: at the moment zink just operates like any Mesa GL driver, and uses the DRI3 infrastructure, it's not quite at the layering everything over vulkan api stage yet
19:21 danyspin97: airlied: I see, thanks for the explanation
19:23 danyspin97: so right now there is no way to use OpenGL without Xorg, only GLES and EGL can be used
19:23 danyspin97: will this change in the future? Or it is not possible to current design?
19:24 danyspin97: due to*
19:26 airlied: danyspin97: I'm not sure of kusma plans for zink, but there has been interest shown on zink on other platforms, in which case this would change
19:26 airlied: also to make it run on top of the nvidia driver on Linux would need this
19:28 danyspin97: I see, zink is the component that can make this possible
19:29 danyspin97: right now I am on a system with i965 enabled and with GLES/GLES2/EGL/wayland support, so I am pretty interested into having a OpenGL impl available
19:30 airlied: danyspin97: the problem for not having Xorg isn't zink
19:30 airlied: the Linux GL library has a hard ABI dependency on having GLX support
19:31 airlied: the new glvnd libraries can work around that, but no apps are using those new APIs yet
19:31 danyspin97: so apps using libOpenGL.so instead of libGLX.so?
19:32 airlied: instead of libGL.so
19:33 danyspin97: I see
20:11 anarsoul: hey folks -- I'm trying to fix texture filtering on lima and I'm seeing weird behavior of vendor driver
20:11 anarsoul: it seems to set lod_bias depending on combination of min/mag/mipmap filtering
20:11 anarsoul: i.e. lod_bias can be 0, -1/16, 1/2
20:12 anarsoul: deqp texture filtering tests do not pass if it's not set
20:12 anarsoul: any ideas why?
20:29 anarsoul: oh, I think I found it in panfrost code
21:27 imirkin_: anarsoul: it may be necessary to mess with lod_bias if you want GL_CLAMP to work correctly
21:28 anarsoul: *sigh*
21:28 imirkin_: since it's supposed to alternate between GL_CLAMP_TO_BORDER and GL_CLAMP_TO_EDGE depending on ... something
21:29 imirkin_: i'm a bit weak on the details - i tend to deal in hardware where this is all just natively supported :)
21:31 anarsoul: gles2 supports only CLAMP TO EDGE
21:31 imirkin_: and you're seeing lod_bias games being played even with that?
21:33 anarsoul: yeah
21:33 imirkin_: fun!
21:33 anarsoul: not really, I don't see the pattern
21:33 imirkin_: and if you copy what they're doing for certain specific cases, that makes it work?
21:34 anarsoul: yes
21:35 imirkin_: i'd look at min/mag filters, coordinate settings
21:37 imirkin_: sometimes there's just weird hardware flaws that are being worked around by these
21:38 imirkin_: i never quite figured out how to get the sampler to fully work to GL3 standards on the original G80
21:38 imirkin_: the blob driver does it, but it feels like a ton of special cases
21:40 anarsoul: well, looks like it adds 1/2 to lod_bias if min filter is nearest
21:41 imirkin_: is there a place to set all this filter stuff?
21:41 imirkin_: could be that the lod bias is just there to make the filters work
21:41 anarsoul: there're bits in texture descriptor to select different filtering modes
21:41 imirkin_: so "nearest" is in there somewhere?
21:42 imirkin_: the min filter, btw? or the mip filter?
21:42 anarsoul: min filter
21:42 imirkin_: huh.
21:42 anarsoul: yeah
21:43 Kayden: can always use nir_lower_tex to emulate gl_clamp
21:43 anarsoul: no mipmapping is enabled but it still changes lod_bias
21:43 Kayden: (that's what intel drivers do pre-gen8)
21:43 imirkin_: probably not required though
21:43 anarsoul: Kayden: probably not a good idea with fp16-only fragment shader
21:43 imirkin_: Kayden: turns out that's not it -- this is in GLES2-land, so nothing like that
21:45 anarsoul: darn, it's not only nearest min filter :\
21:45 anarsoul: and actually doing that breaks more tests
21:45 imirkin_: take a step back -- if you do none of that, what's actually broken?
21:46 anarsoul: lots of dEQP-GLES2.functional.texture.filtering.*
21:46 imirkin_: do an analysis of which ones pass and which ones fial
21:46 anarsoul: yeah, that's what I'm doing
21:52 imirkin_: if you have the full list, with pass/fail next to each one, i can have a look to see if anything pops out
21:55 anarsoul: that's all mipmapping tests that now fail
21:58 imirkin_: hm. i wonder what min_mipfilter_1 and _2 mean
21:59 anarsoul: that's old TD
21:59 anarsoul: well, wrong :)
21:59 imirkin_: "TD"?
21:59 anarsoul: texture descriptor
21:59 anarsoul: let me push my changes somewhere
21:59 imirkin_: ah ok
22:04 anarsoul: imirkin_: https://gitlab.freedesktop.org/anarsoul/mesa/tree/lima-deqp-texture-fixes
22:07 anarsoul: actually this version is better
22:08 imirkin_: so ... one thing to point out ... CLAMP_TO_EDGE != CLAMP_TO_BORDER :) but you only run into that with the border color stuff, which isn't in core ES2
22:09 anarsoul: imirkin_: yeah, I'll play with TD bits later to figure out whether we support clamp to edge and clamp to border
22:09 anarsoul: so far it's based on dumps of GLES2 blob
22:09 imirkin_: right
22:09 imirkin_: you need to stuff the border colors somewhere too
22:09 imirkin_: usually they're attached to the sampler or texture descriptors
22:09 imirkin_: but sometimes they're separate
22:09 anarsoul: I doubt that they used single bits to specify wrapping
22:10 anarsoul: it's likely to be enum
22:10 anarsoul: and thus 8 values, not 3
22:10 anarsoul: could be matching midgard :)
22:10 anarsoul: but one thing at a time
22:10 imirkin_: sure
22:11 imirkin_: i'd have a much easier time believing that mip_filter linear == lod bias +1/2 or something
22:13 anarsoul: imirkin_: so far with this code texture.mipmap.* and texture.filtering.* behaves identical to the blob
22:13 anarsoul: but there's a lot of failures in dEQP-GLES2.functional.texture.specification.*
22:13 anarsoul: looking into it
22:29 anarsoul: OK, it's "Failed: 48/946" now, 792 passed, 90 not supported, 16 quality warning
22:29 anarsoul: that's on par with blob so I doubt I can get it better
22:30 imirkin_: nice!
22:30 imirkin_: sounds like the hardware is just non-conformant, so you're trying to make the best of a bad situation
22:31 anarsoul: likely
22:31 anarsoul: I don't really understand all this magic with lod_bias with min_lod and max_lod are 0
22:31 anarsoul: *when
22:41 anarsoul: imirkin_: thanks a lot once again :)
22:41 imirkin_: not sure i did anything, but you're welcome :)
23:46 imirkin_: anarsoul: i'm confused by your setting of max_lod for TEX_MIPFILTER_NONE
23:46 imirkin_: min/max_lod is relative to the first_level of the texture object
23:47 imirkin_: so why are you setting min_lod = 0 unconditionally, and then setting max_lod to the sampler->min_lod in the NONE case?
23:48 imirkin_: (that said, not 100% sure this funcitonality is accessible via ES2, just seems inconsistent.)
23:48 imirkin_: i would imagine that you should set desc->min_lod = sampler->min_lod, max_lod = sampler->max_lod, and then fix up max_lod = min_lod for the NONE case