needed to bump the DMA command buffer forced freespace up to 256 words: NV4_GDI_RECT needs a higher setting than the old version. Hopefully engine crashes are now past tense...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11095 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
9c47d9cb0a
commit
7309e1cd85
@ -866,18 +866,18 @@ static status_t nv_acc_fifofree_dma(uint16 cmd_size)
|
||||
/* mind this pittfall:
|
||||
* Leave some room between where the engine is fetching and where we
|
||||
* put new commands. Otherwise the engine will crash on heavy loads.
|
||||
* A crash can be forced best in 640x480 resolution with BeRoMeter 1.2.6.
|
||||
* (confirmed on NV11 and NV43 with less than 128 words forced freespace.)
|
||||
* A crash can be forced best in 640x480x32 mode with BeRoMeter 1.2.6.
|
||||
* (confirmed on NV11 and NV43 with less than 256 words forced freespace.)
|
||||
* Note:
|
||||
* The engine is DMA triggered for fetching chunks every 128 bytes,
|
||||
* maybe this is the reason for this behaviour.
|
||||
* Note also:
|
||||
* it looks like the space that needs to be kept free is coupled
|
||||
* with the size of the DMA buffer. */
|
||||
if (si->engine.dma.free < 128)
|
||||
if (si->engine.dma.free < 256)
|
||||
si->engine.dma.free = 0;
|
||||
else
|
||||
si->engine.dma.free -= 128;
|
||||
si->engine.dma.free -= 256;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -890,18 +890,18 @@ static status_t nv_acc_fifofree_dma(uint16 cmd_size)
|
||||
/* mind this pittfall:
|
||||
* Leave some room between where the engine is fetching and where we
|
||||
* put new commands. Otherwise the engine will crash on heavy loads.
|
||||
* A crash can be forced best in 640x480 resolution with BeRoMeter 1.2.6.
|
||||
* (confirmed on NV11 and NV43 with less than 128 words forced freespace.)
|
||||
* A crash can be forced best in 640x480x32 mode with BeRoMeter 1.2.6.
|
||||
* (confirmed on NV11 and NV43 with less than 256 words forced freespace.)
|
||||
* Note:
|
||||
* The engine is DMA triggered for fetching chunks every 128 bytes,
|
||||
* maybe this is the reason for this behaviour.
|
||||
* Note also:
|
||||
* it looks like the space that needs to be kept free is coupled
|
||||
* with the size of the DMA buffer. */
|
||||
if (si->engine.dma.free < 128)
|
||||
if (si->engine.dma.free < 256)
|
||||
si->engine.dma.free = 0;
|
||||
else
|
||||
si->engine.dma.free -= 128;
|
||||
si->engine.dma.free -= 256;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user