<anarsoul>
VS_CMD_ARRAYS_SEMAPHORE_BEGIN_1() is 0x00028000, 0x50000000, immediately follows by VS_CMD_ARRAYS_SEMAPHORE_BEGIN_2() which is 0x00000001, 0x50000000
<anarsoul>
likely means: wait for semaphore to become 0x8000 (likely -1), then increase it by 0x0002, then wait for semaphore to become 0x0001, increase it by 0x0000
<anarsoul>
then:
<anarsoul>
PLBU_CMD_ARRAYS_SEMAPHORE_BEGIN() is 0x00010002, 0x60000000 and PLBU_CMD_ARRAYS_SEMAPHORE_END() is 0x00010001, 0x60000000
<anarsoul>
0x00010002, 0x60000000 is wait semaphore to become 0x0002, then decrease it by 0x0001
<anarsoul>
and 0x00010001, 0x60000000 means wait for semaphore to become 0x0001, then decrease it by 0x0001
<anarsoul>
so PLBU at the end of cmd stream should have semaphore at 0x0
<anarsoul>
while for VS it depends on whether draw is indexed or not
<anarsoul>
hm, however for VS it's also should be 0x0
<anarsoul>
but for non-indexed draw semaphore should have 0x8000 at start (-1)? wtf?
<anarsoul>
rellla: ^^
<anarsoul>
likely we have issues with indexed and non-indexed draws mixed in the same frame
<anarsoul>
it all adds up nicely except for non-indexed draws
<anarsoul>
I guess I need to think a bit about it :)
dddddd has quit [Remote host closed the connection]
kaspter has quit [Ping timeout: 260 seconds]
kaspter has joined #lima
_whitelogger has joined #lima
Barada has joined #lima
_whitelogger has joined #lima
<anarsoul>
another guess: "0x00028000 0x50000000" in vs cmd could mean "wait for any (where 0x8000 is any), increment by 2
<anarsoul>
then following "0x00000001 0x50000000" waits till PLBU decreses semaphore value via "0x00010002 0x60000000" plbu cmd which is "wait for 0x2, decrease by 0x1"
<anarsoul>
vs proceeds further, gets to "draw", cmd, then to "0x00000000 0x50000000" which is wait for 0x0, don't increment
<anarsoul>
plbu at the same time does "DRAW_ARRAYS", then gets to "0x00010001 0x60000000"
<anarsoul>
which is wait for 0x1, decrement by 0x1 and it unblocks VS
<anarsoul>
semaphore is at 0 now
<anarsoul>
vs proceeds, does another draw, then gets to "0x00018000 0x50000000" which is "wait for any, increment by 1", semaphore becomes 1
<anarsoul>
I suspect that semaphore usage in lima is likely implemented incorrectly
<rellla>
anarsoul: i will also think about it, but likely only after the christmas days :)
<anarsoul>
:)
<rellla>
sounds complicated, and i'm still on finishing syscall-tracker, only texture left ...