00:19 imirkin: anholt: let me know how the nouveau shim goes if you decide to use it
00:20 anholt: imirkin: definitely looking forward to trying it!
00:20 anholt: hitting some more cleanups of the gtn-ntt branch
00:20 imirkin: anholt: to get maximum feature coverage, use like a chipset=124 override. but there's various generations in between which are variously different. i tried to cover it in the README but i didn't want to write a long book :)
00:21 anholt: loved seeing a good readme like that
00:46 alyssa: Long books are nice
00:46 alyssa: Although perhaps unweildy in print.
02:19 imirkin: gitlab having issues?
02:21 jenatali: Looks that way to me
08:49 danvet: airlied, I have some core mm patches that jason gunthorpe suggestd I send as a topic branch directly to linus next merge window
08:49 danvet: ok if I stuff that into drm.git so I can use dim and all?
08:49 danvet: also need to ping sfr to include it
08:53 airlied: danvet: sounds good
09:07 MrCooper: HdkR: you can get ops from ChanServ anytime
09:14 HdkR: MrCooper: Aye, I just didn't deop from last time
10:27 daniels: imirkin, jenatali: can you be more specific? what's failing?
12:27 karolherbst: ehhh... mtx_timedlock is broken :/
12:31 karolherbst: or well.. the both implementations differ in their behaviour
12:31 karolherbst: I think.. :D
14:32 jenatali: daniels: MR pages were only partially loading. It recovered
14:34 danvet: emersion, I think chen doesn't have commit rights, so feel like also pushing that little fix?
14:36 emersion: danvet: sure
14:41 alyssa: who's the right cc for a mesa/st patch?
14:41 alyssa: (https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8300 -- last thing we're blocking on for GL3.1)
14:43 daniels: jenatali: given the time of day, it may have been a window for a kernel upgrade
14:46 danvet: emersion, thx
14:46 danvet: emersion, for next time around https://people.freedesktop.org/~seanpaul/whomisc.html
14:46 emersion: oh, nice
14:51 tzimmermann: danvet, since we're not taking the dma_resv lock within shmem; could we go through all drivers one-by-one and replace the local lock with the resv lock semi-mechanically? this way we can tackle drivers individually
14:59 danvet: tzimmermann, yeah I think that's the only feasible approach
14:59 danvet: the problem is, it's not mechanical in many cases, since they do use dma_resv already for some things
14:59 danvet: just not as the general per-obj lock
15:00 danvet: but for any driver that doesn't use dma_resv anywhere it should be mechanical replacement
15:00 danvet: also once we have all callers of a given function converted, we could add dma_resv_assert_lock already
15:01 danvet: with a comment saying it's just to make sure the partial conversion isn't broken, not that it does protect actual state yet
15:01 tzimmermann: danvet, that's quite a bit of work. but i think i'd prefer that over the dma-buf-passthrough.
15:01 danvet: I'd guesstimate its about half a year of full time work to convert all shmem users over
15:02 tzimmermann: lol, damnit
15:02 tzimmermann: i guess i'll put the vmap_local aside for now and take a look at the shmem drivers
15:03 danvet: tzimmermann, imo do the pass-through
15:03 danvet: it's not the prettiest, but it's fairly ok
15:03 danvet: and it's what I've done for get/put_pages too iirc
15:03 tzimmermann: it's papering over the issue ... :/
15:03 danvet: maybe add a comment or todo.rst
15:03 tzimmermann: i think about it
15:03 danvet: nah, just trying to dissect the problem into incremental steps we can actually pull off
15:03 danvet: without holding up features
15:04 danvet: I mean the vmap_local stuff is meant to unblock some feature work
15:04 danvet: so doing that + todo.rst entry with fairly detailed plan is plenty good enough
15:04 tzimmermann: hmm...
15:04 danvet: then chip away at it over the next year as a side project
15:04 danvet: or find a gsoc to do it for you :-)
15:05 tzimmermann: unfortunately, that's probably the more realistic approach
15:05 tzimmermann: still, not my favorite
15:06 danvet: yeah, but pragmatic&gradual approaches have value in themselves
15:06 danvet: as long as we have a clear enough idea where we want to head towards, to avoid pulling in different directions
15:48 danvet: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c: In function ‘amdgpu_device_resize_fb_bar’:
15:48 danvet: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1109:6: warning: unused variable ‘space_needed’ [-Wunused-variable]
15:48 danvet: 1109 | u64 space_needed = roundup_pow_of_two(adev->gmc.real_vram_size);
15:49 danvet: agd5f, ^^ just spotted this one, not sure you have a fix already somewhere
16:22 kisak: Friendly reminder that the mesa 21.0 branchpoint is scheduled for tomorrow. At least it's harder to swamp the CI and marge-bot these days.
16:44 karolherbst: uhm....
16:44 karolherbst: we overflow shader_info.system_values_read
16:45 karolherbst: so we have more than 64 system values
16:45 jenatali: karolherbst: In what content? Is that CL?
16:45 karolherbst: jekstrand: what's the proper way of checking if a system value is actually used by the nir?
16:45 karolherbst: jenatali: GL
16:46 karolherbst: doing a for (uint8_t i = 0; i < SYSTEM_VALUE_MAX; ++i) if (!(nir->info.system_values_read & 1ull << i)) continue; loop
16:46 karolherbst: but that doesn't work obviously
16:50 jekstrand: karolherbst: system_values_read is the way but it doesn't have enough bits
16:51 dj-death: we started reusing inputs/outputs
17:15 karolherbst: jekstrand: ehhh :/
17:16 karolherbst: jekstrand: so anything I can do to workaround it?
17:17 jekstrand: Make system_values_read a BITSET_WORD[4]?
17:22 alyssa: kisak: You haven't noticed the flurry of features getting flipped on?=)
17:22 karolherbst: I am actually annoyed by the fact that nobody feels responsible for actually fixing it, but still adding more and more system values :/
17:22 karolherbst: seriously
17:25 kisak: alyssa: am I allowed to lie and act all surprised?
17:26 karolherbst: dj-death: what do you mean by using inputs/outputs?
17:28 Kayden: we're using uint64_t for inputs/outputs these days, should probably do that for system values
17:29 karolherbst: Kayden: we have more than 64 system values
17:29 karolherbst: SYSTEM_VALUE_MAX is 75
17:29 Kayden: yikes
17:29 karolherbst: yes
17:29 karolherbst: and it seems like to be this way since may
17:30 karolherbst: and I only noticed because tgsi_get_sysval_semantic asserted
17:33 dj-death: karolherbst: https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/src/compiler/shader_enums.h#L291
17:33 karolherbst: dj-death: how is that even related?
17:34 alyssa: kisak: sure
17:35 dj-death: karolherbst: just mentioning we're running out of bits everywhere ;)
17:38 karolherbst: dj-death: well.. then fix it instead of adding workarounds?
17:38 karolherbst: anyway, system values are now just broken as it seems
17:40 karolherbst: okay.. actually just for two months
17:40 karolherbst: jekstrand: do you want to fix it as I am pretty sure your raytracing MR broke it or should somebody else do it?
17:50 alyssa: Don't go blaming raytracing ;P
17:50 hakzsam: dcbaker: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8412#note_759989 why did Marge fail again?
17:50 HdkR: alyssa: Ray tracing solves all the problems. It "Just works"
17:51 jekstrand: karolherbst: I don't think I totally broke it
17:51 jekstrand: I tried pretty hard not to
17:51 dcbaker: hakzsam: I think because it didn't need to rebase, so it assumes that the results it has are still valid
17:51 karolherbst: jekstrand: right.. but that loop doesn't work anymore
17:51 dcbaker: It's going to fail on freedreno anyway I think
17:52 dcbaker: oh, maybe not
17:52 karolherbst: so if there is a better way of knowing what system values are enabled, fine, if not.. then not
17:52 karolherbst: anyway, I hit an assert
17:52 dcbaker: hakzsam: I've got the CS:GO fix staging, and I'll get yours next
17:52 dcbaker: s/staging/ci-ing/
17:52 hakzsam: dcbaker: great, thanks
17:53 jekstrand: karolherbst: Who's doing that loop?
17:53 karolherbst: nouveau does
17:53 jekstrand: why?
17:54 jekstrand: What are you checking for?
17:54 karolherbst: because we need to know what system values are enabled
17:54 jekstrand: In what way is it failing now? You should never see anything above 64 set
17:55 karolherbst: jekstrand: wrap around
17:55 jekstrand: Replacing it with a proper bitset will take surgery across all of Mesa. Fixing nouveau won't.
17:56 jekstrand: On the upside, the surgery would be the type that compile fails every place you have to touch
17:57 karolherbst: yep
17:57 karolherbst: which I value more important than the amount of time any fix needs
17:58 karolherbst: but mhh.. maybe I could rework nouveau, but it's also not as trivial
17:58 karolherbst: I could just ignore every value above 63 though
18:04 karolherbst: jekstrand: seems like I will rework that bit for nouveau anyway as the current code is suboptimal and probably would be able to get rid of the loop
18:04 jekstrand: dool
18:04 jekstrand: *cool
18:04 jekstrand: But, yeah, we should make it a proper bitset eventually
18:04 jekstrand: I'll stick that on my back-burner todo
18:27 zackr: danvet: Hi, could you give me the submit access to drm-misc? I need to push some of our changes out so if we can't get access to drm-misc I'll have to go back to bothering airlied to pull from us directly
18:28 danvet: zackr, do you have a fd.o shell account?
18:28 zackr: danvet: zack on fdo
18:29 danvet: mripard, ack for adding zack for vmwgfx stuff ^^ ?
18:29 danvet: hm I thought we've also added roland, but seems to not have happened
18:29 danvet: seanpaul, or is your whomisc not up to date anymore?
18:29 seanpaul: danvet: mm, not sure should run each night
18:30 seanpaul: i'll see if i can kick it
18:30 danvet: zackr, happen to know whether roland has an fdo shell account too?
18:31 danvet: seanpaul, I think it's all ok
18:31 zackr: danvet: he should have. it should be "sroland"
18:31 daniels: danvet: sroland?
18:31 daniels: zackr: we are of one mind
18:31 zackr: daniels: haha, one mind, two accents
18:31 daniels: *three
18:32 zackr: are you bundling?
18:32 danvet: hm getent on gabe finds neither
18:32 daniels: yeah, I've got a pretty strong hybrid going on
18:32 daniels: danvet: they're both there, I can add them as soon as someone tells me yes
18:33 danvet: waiting for some drm-misc maintainer ack for formality's sake
18:33 daniels: only a very limited number of people are on gabe - annarchy and kemper have everyone
18:33 danvet: ah
18:33 danvet: zackr, tomorrow also good enough?
18:33 zackr: danvet: sure, sounds great
18:34 zackr: i'll get everything ready here then. i'll switch our internal ci to drm-tip tomorrow too then
20:47 jekstrand: ngcortes: Can you get cwabbott set up on Intel CI, please?
21:05 ngcortes: jekstrand, can do
21:36 agd5f: danvet, yeah, Nirmoy is sending out a fix
22:12 mripard: danvet: yep, ack-by: me
22:12 danvet: mripard, also ack for roland from vmwgfx?
22:14 mripard: yep
22:21 mareko: I've been considering this idea I call "super draws", an evolution of multi draws. It's a multi draw where the following 3 variables vary: start, count, vertex buffers (but not their count). u_threaded_context would generate them from its batch buffers. I think this is the future of super low overhead gallium drivers.
22:26 alyssa: How would the driver make use of that?
22:28 zmike: I'm all for lowering overhead with tc 👍
22:28 mareko: drivers would have a small inner-most loop that sets vertex buffer bindings and generates draws, skipping expensive draw time validation that slows drivers down
22:29 alyssa: Ah
22:30 mareko: draw time validation is a big obstacle if you want to execute hundreds of thousands or millions of draws per frame
22:31 zmike: not to mention stuff like batch-based tracking for lifetimes
22:32 alyssa: Fair enough
22:34 mareko: it's not really a proposal or ask, it's an annoucement that it might happen because only our driver uses u_threaded_context, so we have the freedom to change it however we want
22:35 zmike: technically not entirely accurate since I'm using it, but that isn't in master so I guess it's not wrong either
22:35 jekstrand: Kayden: ^^
22:35 jekstrand: mareko: That doesn't seem crazy, TBH.
22:36 imirkin: mareko: when you say "vertex buffers", do you really mean the buffers, or just the mappings of inputs to things in those buffers?
22:37 jekstrand: mareko: We'd like to enable it in iris, we just haven't yet.
22:39 mareko: imirkin: the most common pattern is set_vertex_buffers and draw_vbo interleaved; tc can combine consecutive draw_vbo calls into a multi draw with a constant draw ID (typically 0), this will just extend it by folding set_vertex_buffers in there
22:40 imirkin: i see
22:40 imirkin: makes sense
22:40 jenatali: We'd like to use u_threaded_context too I think
22:41 jekstrand: mareko: If we can have a tight loop and not re-validate all state, that'd probably help.
22:42 jekstrand: Swapping out vertex buffers is simple enough
22:42 jenatali: jekstrand: Are you still interested in using CL programs with global variables shared between kernels? I think !8133 probably broke that for you. I seem to recall you were looking at that functionality a while ago
22:44 ngcortes: cwabbott, per jekstrand I've gone ahead and set you up on the mesa CI here: http://otc-mesa-ci.jf.intel.com/job/cwabbott/
22:45 jekstrand: jenatali: It may have. It's not a shipping feature so I don't care that much.
22:45 jenatali: Fair enough, just happened to see it
22:47 alyssa: mareko: Giving it some thought I think that makes sense 👍
22:49 ngcortes: cwabbott, anyway it looks like your jenkins job is set up to just test out vulkan. so of course that'll only run on platforms that support that API
22:49 karolherbst: jenatali: btw, anything in particular I should take a look at, now that I am more or less back from PTO? :D
22:50 jenatali: karolherbst: Nah, I don't have anything in flight at the moment
22:50 jenatali: Eventually I'd like to get around to merging our clang invocation stuff with Clover, and moving our SPIR-V metadata parsing into vtn, but I don't have cycles for that atm
22:52 karolherbst: yeah.. sounds like good ideas
22:57 mareko: recently we started using a C++ template for our draw_vbo function with template parameters <hw_generation, has_tess, has_gs, ...> and we change the draw_vbo callback according to bound shaders. This means we have the optimal draw function when e.g. tessellation is enabled and also when it's disabled.
22:58 jenatali: mareko: I'm curious, did you measure the impact on code size?
22:59 imirkin: mareko: cool - i think swr does something similar
23:01 mareko: jenatali: we don't know, it's just the compile time that got a little worse, we only did CPU profiling with it and it was really worth whatever the code size cost is, it's not much code, just 1 source file
23:03 jenatali: Cool, makes sense, I can see how that'd make a big difference
23:15 bnieuwenhuizen: emersion: did you push the changes for the new libdrm release? I can't find them here : https://gitlab.freedesktop.org/mesa/drm/
23:15 emersion: bnieuwenhuizen: you mean this? https://gitlab.freedesktop.org/mesa/drm/-/commit/cdd14e92e9bd11e7307512b81b9ce26dd5ee2bce
23:16 bnieuwenhuizen: bleh, confused by the date of the last patch :(
23:41 idr: mareko: I tried a similar thing a few years ago in C using various __attribute__ options to force inlining. Basically, the "real" function has all those things as parameters, and it is only called directly by functions that pass constants for those parameters and force it to inline.
23:41 idr: tl;dr: It did not work out. :(
23:43 idr: There's some stuff in the various Intel drivers now that do some similar kinds of things using #define for generation / #include of "real" source file.
23:45 idr: It means that your template looks like "define_function(function_name, GEN)" (that's not what's actually used, but it's the same idea) instead of "function_name<GEN>".
23:49 Kayden: I am planning to use u_threaded_context, and I had code working towards that, but it now requires multidraw, so my code is broken and I have to get it back up to functioning agian