raster has quit [Remote host closed the connection]
afaerber has quit [Quit: Leaving]
<HdkR>
alyssa: Having fun of course
yann has joined #panfrost
<HdkR>
Was actually curious about what all was required to kick off the beginnings of a vulkan driver in mesa. Definitely some duplication of scripts and things from anv
<HdkR>
Which is what radv did as well
<HdkR>
Also compute is like a core feature of Vulkan. Might be nice for testing things
<HdkR>
:P
<HdkR>
Zink is an interesting prospect as well
belgin has joined #panfrost
<robclark>
alyssa, btw, did you look at intel genxml? iirc it was generating bitpacked structs, so might be a better fit for you? If not, that kinda sucks, I might still be tempted to invent something to autogen encoding vs decoding from to avoid keeping both in sync..
belgin has quit [Quit: leaving]
<Lyude>
robclark: what's this about it you don't mind me asking?
* robclark
just mixing mediums and replying to email on irc :-P
<robclark>
re: somehow generating cmdstream encode and decode from single hw db
<robclark>
(ie. xml or whatever you care to invent.. although genxml and rnndb both use xml and that more or less seems to work ok)
tgall_foo has joined #panfrost
<cwabbott>
robclark: I don't know too much about the intel thing, but the tricky thing about it is that there are lots of variable-length structs
<cwabbott>
and of course, everything is done with structs pointing to other structs instead of a single cmdstream
<robclark>
I guess the question is whether something can't be represented as structs.. packed structs vs what rnndb gets rid of the restriction that things are packed in multiple of 32b, which seems useful for you.. but not sure if that is all you need
<cwabbott>
they're usually aligned to at least 16 bytes iirc
<cwabbott>
there's the framebuffer struct, where a bit set somewhere means that there's a whole section between the main struct and the array of render targets
<robclark>
I mean't whether some field can span dwords, mostly.. which is awkward w/ envytools/rnndb.
<cwabbott>
oh, I've never seen that yet
<cwabbott>
I suspect they use actual C structs in their driver
<cwabbott>
everything is always aligned
<cwabbott>
gotta have dat cmdstream building efficiency!
<robclark>
anyways, when I come across a new gen, I tend to go thru many iterations of updating xml and re-running decoder + regen headers when I'm debugging things.. so keeping the two sides in sync *somehow* seems like a useful thing..
<robclark>
maybe there is something for dealing w/ network protocols that would be a better fit, idk..
<krh>
if you think they're using C structs, you should take a look at genxml
<krh>
it started as "lets use structs and bitfields for the intel command stream"
<krh>
and then it turned out that compilers still generate terrible code for bitfields
<krh>
what genxml gives you is autogenerated "templace structs" that you fill out, then pass to an autogenerated pack function that then shifts and masks the values into place
<krh>
this sounds slow, but it generates about as good code as manual shifting and or'ing the values together, since the compiler propagates the values from the template struct
<krh>
as a bonus you can compile it in debug mode, which gives you a place to hook in range checks (where bitfields silently truncate), valgrind checks or even automatic conversion from float to, say, fixed point S8.2 or whatever for linewidth
<krh>
it doesn't handle the "if bit is set, add another optional struct" case, but it's easy enough to handle that by hand