Login
Username:

Password:

Remember me



Lost Password?

Register now!
Sections
Who's Online
69 user(s) are online (62 user(s) are browsing Forums)

Members: 1
Guests: 68

BSzili, more...
Support us!
Recent OS4 Files
OS4Depot.net
Report message:*
 

RadeonHD 3.x bug (?): more than ~256mb of used GPU (second chunk) memory cause a heavy lockup/crash.

Subject: RadeonHD 3.x bug (?): more than ~256mb of used GPU (second chunk) memory cause a heavy lockup/crash.
by kas1e on 2019/9/27 6:09:33

Found that new feature of 3.x radeon driver about breaking 256mb barier for video memory behave buggy, want to discuss if anyone can something to share about. I.e. it use GPU video memory indeed, but once you fill more than 256mb of that new available GPU video memory -> crash/lockup.

Its like, we didn't have 2GB of video memory on video card, but instead 512 : first 256 taken by system, second 256 are used by radeonHD3.x fine (so we "break that barier" as expected), but then everything which go futher of those "second" 256 mb of GPU video memory -> crash.

Tested on X5000/20 with RadeonHD r7-250 (HD verde) which have 2 GB of video memory.
RadeonHD 3.6, Warp3DNova.library 1.65, graphics.library 54.247

Short story:

When you fill up more that 256 MB of second chunk of GPU video memory (i.e first 256mb chunk taken by system all fine, second 256mb chunk is used as extendent by GPU), then we have very weird lockup with everything crashed heavy, and sometime can see visuall distortion (not distortion when something wrong, but just distortion like gfx card behave bad and everything die).

Issue found when i working on port of fresh SuperTuxKart (which need more than 300mb of video memory) , and later i confirm that is that issue we have before with Huno's Return To Castle Wolfenstein Reborn port when details are set to high. Some may remember how it crashes on high details on their RadeonHD SI, there is that old thread: http://www.amigans.net/modules/xforum ... e=&order=ASC&type=&mode=0

Crashes always differes, sometime it sata task, sometime usb, sometime amidock, sometime input, sometime everything at once.



Long story:

While porting new SuperTuxKart, found that in some heavy levels i just have some strange crashes. The game in 1024x768x32 in full details sometime want about 300mb and more megabyte of video memory.

So, After long invisigation i found, that only i reach ~256mb of used GPU memory i have a lockup. First 256 mb of video memory taken by system, and then next 256mb of video memory are used also fine as extendednt, but once you fill those second 256 mb, and want more => crash.

Some time i can see that it this second "extendend" block i reach 250mb and lockup, sometime i can see 252, one time i can see 258 before lockup happens. But as i check used GPU memory with SYSMON (so its not auto-realtime, and i had to press "refresh" button which mean results can be not that accurate), so probably issue is exactly about ~256 barier of second chunk of extendent video memory.

Visually everything can just stops. Intuition crashed, USB crashed, AmiDock crashed, input crashes, sata crashes. No stack trases most of time, or some weird one. And almost all the time when lockup happens, i can catch on serial that DSISR: 00000000, & Exception Syndrome Register (ESR): 0x00000000. Everything the same as when Huno's RCTW Reboorn crashes on high details, so its the same bug 99.9%

I then use all the debug version of everything (warp3Dnova , RadeonHD) to test SuperTuxKart, and that what i have before lockup happens (i.e. when i full fill up that second 256mb chunk used by GPU and want more (so go up over 512mb in whole):

RadeonHD:

RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer called (0x617252F862492)
RadeonHD.chip (5): rhdRMCtxCopyToVRAM done
RadeonHD
.chip (5): rhdRMCtxUnlockBufferInternal called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer called (0x617252F862493)
RadeonHD.chip (5): rhdRMCtxCopyToVRAM done
RadeonHD
.chip (5): rhdRMCtxUnlockBufferInternal called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer called (0x617252F862494)
RadeonHD.chip (5): rhdRMCtxCopyToVRAM done
RadeonHD
.chip (5): rhdRMCtxUnlockBufferInternal called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer called (0x617252F862495)
RadeonHD.chip (5): rhdRMCtxCopyToVRAM done
RadeonHD
.chip (5): rhdRMCtxAllocBuffer called
RadeonHD
.chip (5): rhdRMReadExecutionID called
RadeonHD
.chip (4): executionID62495
RadeonHD
.chip (5): rhdRMCtxUnlockBufferInternal called (0x617252F8)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
RadeonHD.chip (5): rhdRMMAllocIntBuffer called
RadeonHD
.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x61725298)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer

[HAL_DfltTrapHandler] *** WarningFatal exception in task 0x65FC93A0 (Shell Processetask 0xEFD3D6C0at ip 0x01E51048
<lockup>




Warp3DNova together with RadeonHD:

RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal called (0x57E4D318)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x57E4D318)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer called (0x57E4D3181104319)
RadeonHD.chip (5): rhdRMCtxCopyToVRAM done
W3DN_SI
.library (6): </ctxTexUpdateSubImage result="0x00000000">
W3DN_SI.library (6): </ctxTexUpdateImage result="0x00000000">
W3DN_SI.library (6): <ctxBindTexture>
W3DN_SI.library (6): </ctxBindTexture result="0x00000000">
W3DN_SI.library (6): <ctxTexUpdateImage>
W3DN_SI.library (6): <ctxTexUpdateSubImage>
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal called (0x57E4D318)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x57E4D318)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer called (0x57E4D3181104320)
RadeonHD.chip (5): rhdRMCtxCopyToVRAM done
W3DN_SI
.library (6): </ctxTexUpdateSubImage result="0x00000000">
W3DN_SI.library (6): </ctxTexUpdateImage result="0x00000000">
W3DN_SI.library (6): <ctxBindTexture>
W3DN_SI.library (6): </ctxBindTexture result="0x00000000">
W3DN_SI.library (6): <ctxCreateTexSampler>
W3DN_SI.library (6): </ctxCreateTexSampler result="0x55682B68">
W3DN_SI.library (6): <ctxTSSetParameters>
W3DN_SI.library (6): </ctxTSSetParameters result="0x00000000">
W3DN_SI.library (6): <ctxTSSetParameters>
W3DN_SI.library (6): </ctxTSSetParameters result="0x00000000">
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal called (0x57E4D318)
RadeonHD.chip (5): rhdRMCtxUnlockBufferInternal done.
W3DN_SI.library (6): <ctxCreateTexture>
RadeonHD.chip (5): rhdRMCtxAllocBuffer called
RadeonHD
.chip (5): rhdRMReadExecutionID called
RadeonHD
.chip (4): executionID1104323
RadeonHD
.chip (5): rhdRMMAllocIntBuffer called
W3DN_SI
.library (6): </ctxCreateTexture result="0x5567EAC8">
W3DN_SI.library (6): <ctxTexSetParameters>
W3DN_SI.library (6): </ctxTexSetParameters result="0x00000000">
W3DN_SI.library (6): <ctxBindTexture>
W3DN_SI.library (6): </ctxBindTexture result="0x00000000">
W3DN_SI.library (6): <ctxTexSetParameters>
W3DN_SI.library (6): </ctxTexSetParameters result="0x00000000">
W3DN_SI.library (6): <ctxTexUpdateImage>
W3DN_SI.library (6): <ctxTexUpdateSubImage>
RadeonHD.chip (5): rhdRMCtxCopyToVRAM called
RadeonHD
.chip (5): rhdRMCtxLockBuffer called (0x57E4D2B8)
RadeonHD.chip (5): rhdRMCtxUnlockBuffer

[HAL_DfltTrapHandler] *** WarningFatal exception in task 0x687CE6B0 (Shell Processetask 0xEFDF3190at ip 0x7FA23BD8
<CRASH>



There is also glsnoop traces i do for both, Ogles2 and Warp3Dnova, so to see what actually happens:

Ogles2 trace:
http://kas1e.mikendezign.com/aos4/radeonhd/ogles2_trace.txt


NOVA trace:
http://kas1e.mikendezign.com/aos4/radeonhd/nova_trace.txt


So, as can be seen, we upload, generate and bind lots of textures of different size. Then, when everything on that stage reach 256mb of used GPU memory , BAH.

Once i do ANYTHING with the game so it will not come close to ~256 mb of used GPU memory, then i never has any lockup. That can be redusing of resolution, redusing of texture quality, i.e. everything just to not fill first 256mb of GPU video memory.

And that mean exactly GPU video memory, usuall one (i.e. that which used by workbench) didn't filled a lot, it have on moment of crash for about 200 mb free of that "system video memory"

And as i said, its the same issue which happens with RCTW Reboorn when we crash on high detals with all those strange crashes in SATA, in Amidock, etc: We didn't crash on low settings because GPU memory didn't fill first 256mb , but crash on high details because it fill first 256mb of memory and want more.

My very wild guess, is that "bank switching" or "page flipping" or whatever techniq is used to handle GPU memory are fail in RadeonHD. At least, on SI. I can't test RX as didn't have one, so it can be only SI driver issue.

I will create a bugreport on Mantis for RadeonHD, but maybe someone else will bring something about too, so to have more info.

For example, interesting to know, what is difference between first 256 mb of GPU video memory and higher ones in terms of code. Is it somehow "splitted" by code and have some different handling per 256 mb banks ?

Powered by XOOPS 2.0 © 2001-2016 The XOOPS Project