Linux下多显卡选择绘制实验记录
生活随笔
收集整理的這篇文章主要介紹了
Linux下多显卡选择绘制实验记录
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
場景:
Linux?centos 7,安裝兩塊GeForce顯卡(2060s、960),通過程序選擇不同顯卡執(zhí)行繪制
工具:
EGL 1.5、GL、GLEW
代碼:
#include <EGL/egl.h> #include <EGL/eglext.h> #define EGL_EGLEXT_PROTOTYPES …… //選擇顯卡,創(chuàng)建上下文? static const int MAX_DEVICES = 10;EGLDeviceEXT eglDevs[MAX_DEVICES];EGLint numDev;PFNEGLQUERYDEVICESEXTPROC eglQueryDevicesEXT=(PFNEGLQUERYDEVICESEXTPROC) eglGetProcAddress("eglQueryDevicesEXT");eglQueryDevicesEXT(MAX_DEVICES, eglDevs, &numDev);PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT =(PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT");EGLDisplay dis1 = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT,eglDevs[0], 0);//選擇顯卡、雙顯卡0、1可以創(chuàng)建display,會有2、3的額外設(shè)備,但是創(chuàng)建出的display為空。EGLint major,minor;EGLint num_con;EGLint attrlist[]={EGL_SURFACE_TYPE,EGL_PBUFFER_BIT,EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,EGL_NONE };EGLint contextAttrs[] = {EGL_CONTEXT_OPENGL_PROFILE_MASK, EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT,EGL_CONTEXT_MAJOR_VERSION,4,EGL_CONTEXT_MINOR_VERSION,6,EGL_NONE };eglInitialize(dis1,&major,&minor);EGLConfig config1;eglChooseConfig(dis1,attrlist,&config1,1,&num_con);eglBindAPI(EGL_OPENGL_API);EGLSurface sur1 = eglCreatePbufferSurface(dis1,config1,NULL); EGLContext context1 = eglCreateContext(dis1, config1, EGL_NO_CONTEXT, contextAttrs);EGLBoolean err1 = eglGetError();err = eglMakeCurrent(dis1,EGL_NO_SURFACE,EGL_NO_SURFACE,context1);//自己創(chuàng)建FBO繪制,可以不綁定surfacestd::cout<<err<<std::endl;glewInit(); //繪制代碼結(jié)果:
nvidia-smi可以查看結(jié)果。可以看到選擇不同顯卡的a.out進(jìn)程,一個占用顯卡0繪制,一個占用顯卡1繪制。
?
附錄:實(shí)驗代碼,編譯依賴庫libEGL.so libGL.so libGLEW.so? 運(yùn)行額外依賴libGLEW.so.1.10 libGLEW.so.1.10.0
https://download.csdn.net/download/shenyi0_0/13110615
總結(jié)
以上是生活随笔為你收集整理的Linux下多显卡选择绘制实验记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL中的上下文 理解整理
- 下一篇: Linux中查询显卡硬件的几种命令(记录