<bnieuwenhuizen>
sylware: you might actually want to comment on the bug since the original reporter said it went away after deleting the shader cache
<sylware>
I cannot, gitlab does not support noscript/basic (x)html browsers, I deleted my shader cache and glitched were less obvious but still around
<sylware>
s/glitched/glitches/
<bnieuwenhuizen>
ok
<gawin>
I've been wondering if it's possible to do compile time evalution with NIR/TGSI when all arguments are const? something like constexpr from c++
<robclark>
you mean nir_opt_constant_folding() ?
dllud has quit [Ping timeout: 480 seconds]
dllud has joined #dri-devel
<gawin>
looks like this. :) the pass has to enabled manually? (been running tests on emma's branch with nir to tgsi, and found it's still happening)
<robclark>
it's a pretty standard opt pass.. I'd be surprised if there was any driver (that uses nir) which isn't using this pass
<robclark>
mesa/st calls that pass itself as part of opt loop
<gawin>
r300 doesn't, also bc cannot use 2 consts in one command, it introduces extra MOV.
<gawin>
overall I'm happy this is already covered
<robclark>
ir3 (adreno 3xx+) also cannot use 2 consts in a single instruction.. otoh that isn't a thing that is very common (for all 2-src alu instructions, why wouldn't you just optimize out the instuction at compile time)
<sylware>
bnieuwenhuizen, yeah re-tested today-git, glitches are still around.
<imirkin>
robclark: how can you optimize consts at compile time?
<robclark>
imirkin: constant folding.. but I guess you are asking about push consts (uniforms)?
<robclark>
for that there is work on shader preamble
<imirkin>
anyways, i think gawin is talking about uniforms
tarceri has quit [Remote host closed the connection]
tarceri has joined #dri-devel
sdutt has joined #dri-devel
adjtm is now known as Guest3952
Guest3952 has quit [Remote host closed the connection]
adjtm has joined #dri-devel
<gawin>
perhaps_cow.jpg
<robclark>
he was asking about compile time, so I was assuming immediates.. the best you can do with uniforms is draw-time (either on CPU or possibly on GPU if hw supports it)
<imirkin>
i suspect r300's GPU capabilities are somewhat limited :)
<imirkin>
anyways, afaik intel is the only gpu that has ops that can operate on 2 consts at a time
<robclark>
AFAIU mali blob driver does "uniform folding" with compute shader that can patch const buffer.. adreno has instructions that can write to const file so it uses a shader-preamble that runs on first invocation
<gawin>
1) I'm thinking about scenario tmp1 = c1 * c2; tmp3 = tmp1 * tmp2; vs just tmp3 = new_const * tmp2;
<gawin>
(already on tgsi level)
<gawin>
2) yeah, with r300 it's mostly about avoiding hitting limit of temp variables
mlankhorst has quit [Ping timeout: 480 seconds]
tarceri has quit [Remote host closed the connection]
tarceri has joined #dri-devel
shashank1202_ has joined #dri-devel
<Kayden>
yeah, those shader preamble tricks are a good idea. other drivers might want to do similar things
<imirkin>
robclark: so like if you have const[0] * const[1], you define a new const[2] that you use in their place, and compute it on first invocation?
<imirkin>
on nvidia, starting with volta or tesla, there are "uniform" registers (i guess sorta like sgpr's on amd)
<imirkin>
er, starting with volta or *turing*
<robclark>
yeah, a5xx has something similar, r48.x and up
<sylware>
6l
sylware has quit [Remote host closed the connection]
<clever>
imirkin: that reminds me, i was thinking earlier, about functional programming and shaders
<clever>
in theory, you could convert the entire shader into a more functional language, identify common parts, pre-compute anything you can, and in the case of coordinate shaders snip whole branches, then compile it down to asm for the gpu
<FLHerne>
How would that differ from what mesa already does?
<clever>
FLHerne: i dont actually know what mesa does internally, so maybe i'm just re-inventing the wheel?
<FLHerne>
nir's SSA form is "a more functional language" for some definition
<FLHerne>
and almost certainly in the sense you mean :p
<clever>
i need to get into mesa and shader compiling more
<FLHerne>
I don't know anything about nouveau's backend IR but it has some similar opts
<clever>
that kind of compile time computation seems like a very easy thing to implement once you have it in that form
<clever>
FLHerne: ah, i see how adding the SSA restriction makes that kind of functional analisys far simpler
<clever>
i'm just used to languages where a non-SSA form is a syntax error, and it wont even execute
dllud has quit [Ping timeout: 480 seconds]
<FLHerne>
yeah, if you're looking at src/compiler/nir you can see it already does the things you mention
<FLHerne>
mostly in nir_opt_foo.c
<clever>
i'll have to look at that closer
<imirkin>
FLHerne: nouveau's backend is a SSA compiler, existed well before nir was a thing
<FLHerne>
Yeah, I remember that controversy
<Kayden>
but does it do SSA register allocation yet? :)
dllud has joined #dri-devel
<imirkin>
Kayden: always has
<HdkR>
imirkin: Uniforn registers are Turing and up
<HdkR>
Volta doesn't have them
<imirkin>
HdkR: ah ok
<imirkin>
i haven't looked at volta+ at all
<imirkin>
until dell ships them for free in their 3000/5000 series, it doesn't exist ;)
<HdkR>
hah
<HdkR>
Sounds like the same problem we have with mobile GPUs really :P
<imirkin>
very hard to remove mobile GPUs and put them into my desktop system
shashank1202_ has quit [Quit: Connection closed for inactivity]
Company has quit [Read error: No route to host]
Company has joined #dri-devel
gouchi has quit [Remote host closed the connection]
tarceri has quit [Remote host closed the connection]
tarceri has joined #dri-devel
vivijim has joined #dri-devel
Duke`` has quit [Ping timeout: 480 seconds]
Lucretia has joined #dri-devel
robert_mader has joined #dri-devel
robert_mader has left #dri-devel [#dri-devel]
pcercuei has quit [Quit: dodo]
Lucretia has quit [Ping timeout: 480 seconds]
robert_mader has joined #dri-devel
robert_mader has left #dri-devel [#dri-devel]
lemonzest has quit [Quit: WeeChat 3.2]
tarceri has quit [Remote host closed the connection]
tarceri has joined #dri-devel
Guest3404 has left #dri-devel [#dri-devel]
DrNick has joined #dri-devel
dliviu has quit []
dliviu has joined #dri-devel
sdutt has quit [Ping timeout: 480 seconds]
sdutt has joined #dri-devel
rasterman has quit [Quit: Gettin' stinky!]
gawin has quit [Quit: Konversation terminated!]
<imirkin>
anyone know offhand why building with -Dtools=freedreno doesn't cause freedreno tools to be built (assuming i _only_ want to build freedreno tools, and nothing else freedreno-related)
tarceri_ has joined #dri-devel
tarceri has quit [Read error: Connection reset by peer]
<HdkR>
imirkin: Meson dependency tracking completely forgoes the gallium/drivers/freedreno directory if you've not declared you want freedreno, so tools option isn't ever picked up from those sub-meson files that are checking it
nsneck has quit [Remote host closed the connection]
<imirkin>
HdkR: is there a quick fix?
<HdkR>
enable freedreno as a gallium driver
<imirkin>
:p
<imirkin>
i was hoping the kind of fix where i tell it to respect the option
Lucretia has joined #dri-devel
<HdkR>
in `src/gallium/meson.build` always include the `drivers/freedreno` path, modify the `src/gallium/drivers/freedreno.meson` file to check for `with_gallium_freedreno` and deal with the fallout of that
dllud has quit [Ping timeout: 480 seconds]
<imirkin>
hm ok
<imirkin>
thanks
<imirkin>
HdkR: but i don't want the tools in src/gallium/drivers
<imirkin>
i want the ones in src/freedreno
<imirkin>
oh duh
<imirkin>
if with_gallium_freedreno or with_freedreno_vk
<imirkin>
subdir('freedreno')
<imirkin>
just add with_tools.contains(freedreno) to that
<imirkin>
much better.
<HdkR>
Same thing just different files. Forgot about that path
dllud has joined #dri-devel
<imirkin>
now to sort out the lua situation... sigh
<mareko>
HdkR: how are uniform registers different from SGPRs?
<HdkR>
mareko: I'll let a Nouveau developer respond to that. Not sure how much of it is publicly documented :)