ShareRender is a cloud gaming system that enables fine-grained resource sharing at the frame-level.
Existing cloud gaming systems suffer from low GPU utilization in the virtualized environment. Moreover, GPU resources are scheduled in units of virtual machines (VMs) and this kind of coarse-grained scheduling at the VM-level fails to fully exploit GPU processing capacity. ShareRender offloads graphics workloads within VMs directly to GPUs, bypassing GPU virtualization. For each game running in a VM, ShareRender starts a graphics wrapper to intercept frame rendering requests and assign them to render agents responsible for frame rendering on GPUs. Thanks to the flexible workload assignment among multiple render agents, ShareRender enables fine-grained resource sharing at the frame-level to significantly improve GPU utilization.
If you want to know more about ShareRender, please refer to our paper in Multimedia 2017. Wei Zhang, Xiaofei Liao, Peng Li, Hai Jin, Li Lin, "ShareRender: Bypassing GPU Virtualization to Enable Fine-grained Resource Sharing for Cloud Gaming". In Proceedings of ACM International Conference on Multimedia (MM'17), Mountain View, CA, 2017.
Microsoft Visual Studio (c++) 2010 (If you want to quick start, you can install Microsoft Visual C++ 2010 Redistributable Package, http://www.microsoft.com/en-us/download/details.aspx?id=5555)
DirectX SDK 9.0 c (Recommended: DXSDK_Jun10 version, the version released in June 2010, http://www.microsoft.com/en-us/download/details.aspx?id=6812)
To use NVCUVENC encoding library, CUDA 6.0 is required. And for lastest GPU such maxwell, we can use NVENC instead.
Add DirectX install path to System Environment as "DXSDK_DIR" and add CUDA 6.0 install path to "CUDA_PATH".
Start to build the soluation in VS2010, if gets warnings about missing libraries, add them to linker input.
You can start with our pre-compiled exe files for Windows X86(with visual studio c++ 2010, the reason is that some other dependency library was compiled with VS2010, if using other version, you need to re-compile all libraries).
-
you need to write the configure file which named gamemap.txt in default. The configure file includes exe file for game, the path, support D3D or not, the interception dll to use(use LogicServer.dll in default)
-
install the compiled files, double click DebugCopyToBin.bat when use debug version and double click ReleaseCopyToBin.bat when use release version.
-
copy all files in bin to game directory for simple(These files are dependecies, copy to game dirctory is the easiest way to make it work).
-
Start DisManager.exe, which act as scheduler and accept the regiesteration of gameloader and render proxy.
-
Start gameloader.exe with IP of DisManager in VM. Gameloader waill load game and inject LogicServer.dll to game process.
-
Start RenderProxy.exe with IP of DisManager in any physic server.
-
Start client with request of RTSP and rqeust of game. (e.g. client config/client.rel.conf rtsp:://127.0.0.1:8554/Trine )
-
Some other functions is integrated to system for convenience to query performance data. Please contact author for detailed information.
SprillRitchie: http://sprill-ritchie-abenteuerliche-zeitreise.software.informer.com/1.0/
Shadowrun returns: http://harebrained-schemes.com/shadowrun/
CastleStorm: http://www.castlestormgame.com/
Trine: http://trine-thegame.com/site/
Unity Angry Bots: http://unity3d.com/showcase/live-demos#angrybots