Backport DRM video driver

This commit is contained in:
twinaphex 2016-07-03 10:37:07 +02:00
parent 0775687008
commit d53cbfbdfb
10 changed files with 1037 additions and 1 deletions

View File

@ -677,7 +677,8 @@ OBJ += gfx/video_context_driver.o \
ifeq ($(HAVE_KMS), 1)
HAVE_AND_WILL_USE_DRM = 1
OBJ += gfx/drivers_context/drm_ctx.o
OBJ += gfx/drivers_context/drm_ctx.o \
gfx/drivers/drm_gfx.o
DEFINES += $(GBM_CFLAGS) $(DRM_CFLAGS) $(EGL_CFLAGS)
LIBS += $(GBM_LIBS) $(DRM_LIBS) $(EGL_LIBS)
endif

View File

@ -29,6 +29,7 @@ enum
{
VIDEO_GL = 0,
VIDEO_VULKAN,
VIDEO_DRM,
VIDEO_XVIDEO,
VIDEO_SDL,
VIDEO_SDL2,

View File

@ -183,6 +183,8 @@ const char *config_get_default_video(void)
return "gl";
case VIDEO_VULKAN:
return "vulkan";
case VIDEO_DRM:
return "drm";
case VIDEO_WII:
return "gx";
case VIDEO_XENON360:

1004
gfx/drivers/drm_gfx.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -199,6 +199,9 @@ static const video_driver_t *video_drivers[] = {
#endif
#ifdef HAVE_SUNXI
&video_sunxi,
#endif
#ifdef HAVE_KMS
&video_drm,
#endif
&video_null,
NULL,

View File

@ -551,6 +551,7 @@ extern video_driver_t video_omap;
extern video_driver_t video_exynos;
extern video_driver_t video_dispmanx;
extern video_driver_t video_sunxi;
extern video_driver_t video_drm;
extern video_driver_t video_xshm;
extern video_driver_t video_null;

View File

@ -278,6 +278,10 @@ VIDEO DRIVER
#include "../gfx/drivers/vulkan.c"
#endif
#if defined(HAVE_KMS)
#include "../gfx/drivers/drm_gfx.c"
#endif
#ifdef HAVE_OPENGL
#include "../gfx/common/gl_common.c"
#include "../gfx/drivers/gl.c"

View File

@ -305,6 +305,16 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len)
"renderizados por software debería \n"
"ser óptimo.");
break;
case MENU_LABEL_VIDEO_DRIVER_DRM:
snprintf(s, len,
"Controlador de vídeo de DRM simple. \n"
" \n"
"Este es un controlador de vídeo que \n"
"usa libdrm para escalado por hardware \n"
"mediante los overlays de la GPU. \n"
" \n"
"El blitting se hace por software.");
break;
case MENU_LABEL_VIDEO_DRIVER_SUNXI:
snprintf(s, len,
"Controlador de vídeo Sunxi-G2D. \n"

View File

@ -261,6 +261,14 @@ int menu_hash_get_help_us(uint32_t hash, char *s, size_t len)
"Performance for software rendered cores \n"
"should be optimal.");
break;
case MENU_LABEL_VIDEO_DRIVER_DRM:
snprintf(s, len,
"Plain DRM Video Driver. \n"
" \n"
"This is a low-level video driver using. \n"
"libdrm for hardware scaling using \n"
"GPU overlays.");
break;
case MENU_LABEL_VIDEO_DRIVER_SUNXI:
snprintf(s, len,
"Sunxi-G2D Video Driver. \n"

View File

@ -1032,6 +1032,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_VIDEO_DRIVER_D3D,
MENU_ENUM_LABEL_VIDEO_DRIVER_EXYNOS,
MENU_ENUM_LABEL_VIDEO_DRIVER_SUNXI,
MENU_ENUM_LABEL_VIDEO_DRIVER_DRM,
MENU_ENUM_LABEL_MENU_ENUM_DRIVER,
MENU_ENUM_LABEL_VALUE_MENU_ENUM_DRIVER,
@ -1968,6 +1969,7 @@ enum msg_hash_enums
#define MENU_LABEL_VIDEO_DRIVER_D3D 0x0b886340U
#define MENU_LABEL_VIDEO_DRIVER_EXYNOS 0xfc37c54bU
#define MENU_LABEL_VIDEO_DRIVER_SUNXI 0x10620e3cU
#define MENU_LABEL_VIDEO_DRIVER_DRM 0x61a89bfaU
#define MENU_LABEL_VIDEO_ROTATION 0x4ce6882bU
#define MENU_LABEL_VIDEO_SCALE 0x09835d63U
#define MENU_LABEL_VIDEO_CROP_OVERSCAN 0x861f7a2fU