mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
forgot to set lowmem flag for windowed case
This commit is contained in:
parent
9fac91aa0e
commit
9ccd823fd7
@ -1422,6 +1422,15 @@ dx_setup() {
|
||||
// so this is the true value
|
||||
_MaxAvailVidMem = dwVidMemTotal;
|
||||
|
||||
#define LOWVIDMEMTHRESHOLD 3500000
|
||||
// assume buggy drivers (this means you, FireGL2) may return zero for dwTotal, so ignore value if its 0
|
||||
if((dwVidMemFree>0)&&(dwVidMemFree< LOWVIDMEMTHRESHOLD)) {
|
||||
// hack: figuring out exactly what res to use is tricky, instead I will
|
||||
// just use 640x480 if we have < 3 meg avail
|
||||
_bIsLowVidMemCard = true;
|
||||
wdxdisplay_cat.debug() << " " << dwVidMemFree << " Available VidMem is under " << LOWVIDMEMTHRESHOLD <<", using 640x480 16bpp rendertargets to save tex vidmem.\n";
|
||||
}
|
||||
|
||||
if(dx_full_screen) {
|
||||
dwRenderWidth = _props._xsize;
|
||||
dwRenderHeight = _props._ysize;
|
||||
@ -1470,45 +1479,37 @@ dx_setup() {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(dwVidMemFree>0) { // assume buggy drivers (this means you, FireGL2) may return zero for dwTotal, so ignore value if its 0
|
||||
|
||||
// hack: figuring out exactly what res to use is tricky, instead I will
|
||||
// just use 640x480 if we have < 3 meg avail
|
||||
|
||||
#define LOWVIDMEMTHRESHOLD 3500000
|
||||
if(dwVidMemFree< LOWVIDMEMTHRESHOLD) {
|
||||
if(_bIsLowVidMemCard) {
|
||||
// we're going to need 800x600 or 640x480 at 16 bit to save enough tex vidmem
|
||||
dwFullScreenBitDepth=16; // do 16bpp
|
||||
dwRenderWidth=640;
|
||||
dwRenderHeight=480;
|
||||
_bIsLowVidMemCard = true;
|
||||
wdxdisplay_cat.debug() << " " << dwVidMemFree << " Available VidMem is under " << LOWVIDMEMTHRESHOLD <<", using 640x480 16bpp rendertargets to save tex vidmem.\n";
|
||||
}
|
||||
// force 16bpp textures too?
|
||||
|
||||
#if 0
|
||||
// cant do this without more accurate way to estimate mem used before actually switching
|
||||
// to that fullscrn mode. simply computing memsize based on GetDisplayMode doesnt seem
|
||||
// to be accurate within more than 1 meg
|
||||
|
||||
// we think we need to reserve at least 2 megs of vidmem for textures.
|
||||
// to do this, reduce buffer bitdepth if possible
|
||||
#define RESERVEDTEXVIDMEM 2000000
|
||||
|
||||
int rendertargetmem=dwRenderWidth*dwRenderHeight*(dwFullScreenBitDepth>>3);
|
||||
int memleft = dwFree-rendertargetmem*2; //*2 to handle backbuf/zbuf
|
||||
|
||||
if(memleft < RESERVEDTEXVIDMEM) {
|
||||
dwFullScreenBitDepth=16;
|
||||
wdxdisplay_cat.debug() << "using 16bpp rendertargets to save tex vidmem\n";
|
||||
assert((DMI.supportedBitDepths & DDBD_16) && (pD3DDevDesc->dwDeviceRenderBitDepth & DDBD_16)); // probably a safe assumption
|
||||
rendertargetmem=dwRenderWidth*dwRenderHeight*(dwFullScreenBitDepth>>3);
|
||||
memleft = dwFree-rendertargetmem*2;
|
||||
|
||||
// BUGBUG: if we still cant reserve 2 megs of vidmem, need to auto-reduce the scrn res
|
||||
if(memleft < RESERVEDTEXVIDMEM)
|
||||
wdxdisplay_cat.debug() << " XXXXXX WARNING: cant reserve 2MB of tex vidmem. only " << memleft << " bytes available. Need to rewrite wdxdisplay to try lower resolutions XXXXXXXXXXXXXXXXXXXX\n";
|
||||
}
|
||||
#endif
|
||||
#if 0
|
||||
// cant do this without more accurate way to estimate mem used before actually switching
|
||||
// to that fullscrn mode. simply computing memsize based on GetDisplayMode doesnt seem
|
||||
// to be accurate within more than 1 meg
|
||||
|
||||
// we think we need to reserve at least 2 megs of vidmem for textures.
|
||||
// to do this, reduce buffer bitdepth if possible
|
||||
#define RESERVEDTEXVIDMEM 2000000
|
||||
|
||||
int rendertargetmem=dwRenderWidth*dwRenderHeight*(dwFullScreenBitDepth>>3);
|
||||
int memleft = dwFree-rendertargetmem*2; //*2 to handle backbuf/zbuf
|
||||
|
||||
if(memleft < RESERVEDTEXVIDMEM) {
|
||||
dwFullScreenBitDepth=16;
|
||||
wdxdisplay_cat.debug() << "using 16bpp rendertargets to save tex vidmem\n";
|
||||
assert((DMI.supportedBitDepths & DDBD_16) && (pD3DDevDesc->dwDeviceRenderBitDepth & DDBD_16)); // probably a safe assumption
|
||||
rendertargetmem=dwRenderWidth*dwRenderHeight*(dwFullScreenBitDepth>>3);
|
||||
memleft = dwFree-rendertargetmem*2;
|
||||
|
||||
// BUGBUG: if we still cant reserve 2 megs of vidmem, need to auto-reduce the scrn res
|
||||
if(memleft < RESERVEDTEXVIDMEM)
|
||||
wdxdisplay_cat.debug() << " XXXXXX WARNING: cant reserve 2MB of tex vidmem. only " << memleft << " bytes available. Need to rewrite wdxdisplay to try lower resolutions XXXXXXXXXXXXXXXXXXXX\n";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
DWORD SCL_FPUFlag;
|
||||
|
Loading…
x
Reference in New Issue
Block a user