Jump to content
Sign in to follow this  
Leopardi

64-bit executable

Recommended Posts

I thought the vram mapping was fixed with dx10?

It's an addressing limitation, not a API limitation.

Share this post


Link to post
Share on other sites
http://www.bistudio.com/english/company/developers-blog/85-breaking-the-32-bit-barrier

You can map portions of larger memory block (managed by 64bit OS) to your limited address space (not even a memory copy).

You can but there's a lot of issue's with it.

I assume you mean something like http://www.codeproject.com/Articles/28818/32-bit-pointers-in-a-64-bit-world

http://stackoverflow.com/questions/5916959/can-a-32-bit-program-use-more-than-4gb-of-memory-on-a-64-bit-os

Share this post


Link to post
Share on other sites

Thank God for Linux and/or Open Source Software.

... and Gentoo Linux. ;-)

Edited by rogerx

Share this post


Link to post
Share on other sites
Could be a problem with the program not releasing stored data and the Windows memory allocator pushing them into a higher addressing space so as not to exhaust addressable ram?

VRAM != RAM ... it was about GPU memory ...

Share this post


Link to post
Share on other sites
VRAM != RAM ... it was about GPU memory ...

what david means: vram = video ram, while most of your posts (Insanatrix) you used vram for virtual ram == paging file

Share this post


Link to post
Share on other sites
what david means: vram = video ram, while most of your posts (Insanatrix) you used vram for virtual ram == paging file

No, by VRAM I do mean Video Ram. I generally say Virtual Memory if I mean that. VRAM is addressed through a window using Physical system memory, and does share some of the allotted 3gb of physical system memory even when using /LAA. You use the same memory allocator to address VRAM as you do System RAM or Virtual Memory. There's no way around it except using virtual memory on a DASD to extend the limit, which is completely limited by bandwidth speeds of the DASD and or it's interface.

For instance go into device manager, click view, view resources by type, select Memory and see what address's your graphics card is using. Also notice how pretty much every single device is using a memory address in the 32 bit addressing range, If you're on a 64 bit OS you'll notice that the addresses are 16 value's long instead of 8. Every device is sharing the same memory address space, then factor in the windows kernel and all the device drivers and general system process's running, so even though a program can utilize 3gb with /LAA, that doesn't even mean there's a free 3gb for it to use in that address space or that the malloc will allow it to address that much.

Edited by Insanatrix

Share this post


Link to post
Share on other sites

in Windows Vista, Windows 7, Windows 8 the DX components handle the VRAM memory allocation

and on 64bit system it's not limited to application's LAA space ...

http://blogs.msdn.com/b/windowsvistanow/archive/2008/03/11/virtual-address-space-usage-in-a-windows-vista-gaming-environment.aspx

Due to WDDM and DX10/10.1/11/11.1 application doesn't need to duplicate video memory into system's RAM like earlier DirectX

http://support.microsoft.com/kb/940105

interesting facts:

A.

32bit Windows Vista, Seven, 8 handles the VRAM operations way better than XP (this is one truly major steps over XP)

even DX9 title runs less often out of memory than on XP but it's nothing compared to use of 64bit OS Vista> and DX10+

http://msdn.microsoft.com/en-us/windows/hardware/gg487371.aspx

B.

now there lays irony, Windows Vista, 7, 8 32bit can address and use 4>GB easily

but MS don't allow it by default (and it seems also by license terms)

http://www.geoffchappell.com/notes/windows/license/memory.htm

I suggest read the whole article to fully grasp it ...

(easier for MS marketing to push 64bit OSes over 32bit , tho easier focus on 64bit drivers than PAE compatibility)

C.

Windows 7 WDDM 1.1 is way improved over Vista's 1.0 and saves You memory usage

http://www.tomshardware.com/news/windows-graphics-ram-desktop-memory,7644.html

D.

Windows 8 WDDM 1.2 might works even better with the RAM and VRAM resources than Windows 7

but the improvements aren't as dramatic change as vs Vista/Xp (feel free to educate me about W8 if i'm wrong)

E.

some notes about memory limits of each OS (note that B. sort of 'flips the truth')

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#physical_memory_limits_windows_7

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#memory_limits

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#how_graphics_cards_and_other_devices_affect_memory_limits

if You search enough you might find the TechNet / MS / etc. blogs about all above ...

quite possible I missed some good or important document on VRAM memory in Windows 7/8 so please post it ...

Share this post


Link to post
Share on other sites
in Windows Vista, Windows 7, Windows 8 the DX components handle the VRAM memory allocation

and on 64bit system it's not limited to application's LAA space ...

http://blogs.msdn.com/b/windowsvistanow/archive/2008/03/11/virtual-address-space-usage-in-a-windows-vista-gaming-environment.aspx

Due to WDDM and DX10/10.1/11/11.1 application doesn't need to duplicate video memory into system's RAM like earlier DirectX

http://support.microsoft.com/kb/940105

interesting facts:

A.

32bit Windows Vista, Seven, 8 handles the VRAM operations way better than XP (this is one truly major steps over XP)

even DX9 title runs less often out of memory than on XP but it's nothing compared to use of 64bit OS Vista> and DX10+

http://msdn.microsoft.com/en-us/windows/hardware/gg487371.aspx

B.

now there lays irony, Windows Vista, 7, 8 32bit can address and use 4>GB easily

but MS don't allow it by default (and it seems also by license terms)

http://www.geoffchappell.com/notes/windows/license/memory.htm

I suggest read the whole article to fully grasp it ...

(easier for MS marketing to push 64bit OSes over 32bit , tho easier focus on 64bit drivers than PAE compatibility)

C.

Windows 7 WDDM 1.1 is way improved over Vista's 1.0 and saves You memory usage

http://www.tomshardware.com/news/windows-graphics-ram-desktop-memory,7644.html

D.

Windows 8 WDDM 1.2 might works even better with the RAM and VRAM resources than Windows 7

but the improvements aren't as dramatic change as vs Vista/Xp (feel free to educate me about W8 if i'm wrong)

E.

some notes about memory limits of each OS (note that B. sort of 'flips the truth')

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#physical_memory_limits_windows_7

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#memory_limits

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#how_graphics_cards_and_other_devices_affect_memory_limits

if You search enough you might find the TechNet / MS / etc. blogs about all above ...

quite possible I missed some good or important document on VRAM memory in Windows 7/8 so please post it ...

On your first link, data still passes through physical memory before it's sent along the bus to the GPU and then to VRAM. With WDDM it no longer needs to keep a physical 1:1 copy stored in RAM, rather it can use virtual address space for that now. That's all that article is saying, nothing about it not needing a physical memory window to address to VRAM. The window the OS uses to send data from virtual memory to system memory and then to VRAM is allocated and can be seen through the device manager by looking at assigned memory addresses to devices. It's usually anywhere from 512mb-1gb big depending on VRAM size. Those addresses are static, they are not dynamic and they cannot be addressed for anything else as they are reserved for that specific use. Now that's not to say that a program can't utilize them, but they can only be utilized for the specific purpose of addressing to VRAM.

It's definitely a better implementation, as who would want to mirror their 4gb Titan, but you are simply misconstruing not needing to hold a physical memory copy of whats running in VRAM as not needing any physical memory to address to VRAM. That's about all your articles say, which is true with the WDDM driver model. It still does not mean that there aren't physical memory addresses that are reserved, or that you cannot view those and see what they are and what they are used for.

Honestly I would expect a developer to know these things and have a better understanding of them.

A lot depends also on the paths and calls used, How efficient they are and whether they are purely DX11 or still have some instances of DX9.

Edited by Insanatrix

Share this post


Link to post
Share on other sites

I read a bit of the links dwarden posted, if I understand it correctly the reason a game consumes virtual address space for the vram it uses is to create the in-ram copy of the video resources. So if you dont have to do that in dx10 or higher you dont have to consume all the address space, and the reason they even bothered with it was not for physical but for virtual memory use.

http://msdn.microsoft.com/en-us/windows/hardware/gg487371.aspx

Edited by Leon86

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×