diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 6e2681e63bc5fde87c338ff61953af0f9dcae9de..b1e20f25ba0ff97169f3dde67507cfb4351968e3 100755 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -65,8 +65,11 @@ // extern const S32Megabytes gMinVideoRam(32); +#if defined(_WIN64) || defined(__amd64__) || defined(__x86_64__) +const S32Megabytes gMaxVideoRam(2048); +#else const S32Megabytes gMaxVideoRam(512); - +#endif // statics LLPointer<LLViewerTexture> LLViewerTexture::sNullImagep = NULL; diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index d85d4d96f7ea5b06f191590e7a7aa63c0793a22c..3088eb2d6eac9618f881a786f188e04ca79773fc 100755 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1365,11 +1365,22 @@ void LLViewerTextureList::updateMaxResidentTexMem(S32Megabytes mem) S32Megabytes fb_mem = llmax(VIDEO_CARD_FRAMEBUFFER_MEM, vb_mem/4); mMaxResidentTexMemInMegaBytes = (vb_mem - fb_mem) ; //in MB +#if defined(_WIN64) || defined(__amd64__) || defined(__x86_64__) + if (mMaxResidentTexMemInMegaBytes > gMaxVideoRam / 2) + { + mMaxTotalTextureMemInMegaBytes = gMaxVideoRam + (S32Megabytes) (mMaxResidentTexMemInMegaBytes * 0.25f); + } + else + { + mMaxTotalTextureMemInMegaBytes = mMaxResidentTexMemInMegaBytes * 2; + } +#else mMaxTotalTextureMemInMegaBytes = mMaxResidentTexMemInMegaBytes * 2; if (mMaxResidentTexMemInMegaBytes > (S32Megabytes)640) { mMaxTotalTextureMemInMegaBytes -= (mMaxResidentTexMemInMegaBytes / 4); } +#endif //system mem S32Megabytes system_ram = gSysMemory.getPhysicalMemoryClamped();