فهرست منبع

kmsdrm: Added a hint to specify device index.

Fixes #2811.
Ryan C. Gordon 2 سال پیش
والد
کامیت
5d85c7d300
2فایلهای تغییر یافته به همراه20 افزوده شده و 0 حذف شده
  1. 14 0
      include/SDL_hints.h
  2. 6 0
      src/video/kmsdrm/SDL_kmsdrmvideo.c

+ 14 - 0
include/SDL_hints.h

@@ -2140,6 +2140,20 @@ extern "C" {
  */
 #define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER"
 
+/**
+ *  \brief  A variable that decides what KMSDRM device to use.
+ *
+ *  Internally, SDL might open something like "/dev/dri/cardNN" to
+ *  access KMSDRM functionality, where "NN" is a device index number.
+ *
+ *  SDL makes a guess at the best index to use (usually zero), but the
+ *  app or user can set this hint to a number between 0 and 99 to
+ *  force selection.
+ *
+ *  This hint is available since SDL 2.24.0.
+ */
+#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX"
+
 
 /**
  *  \brief  An enumeration of hint priorities

+ 6 - 0
src/video/kmsdrm/SDL_kmsdrmvideo.c

@@ -218,11 +218,17 @@ KMSDRM_CreateDevice(void)
     SDL_VideoDevice *device;
     SDL_VideoData *viddata;
     int devindex = 0;  /* !!! FIXME: let app/user specify this. */
+    const char *hint;
 
     if (!KMSDRM_Available()) {
         return NULL;
     }
 
+    hint = SDL_GetHint(SDL_HINT_KMSDRM_DEVICE_INDEX);
+    if (hint) {
+        devindex = SDL_atoi(hint);
+    }
+
     if (!devindex || (devindex > 99)) {
         devindex = get_driindex();
     }