This commit is contained in:
JerryXiao 2023-04-29 02:21:39 +08:00
parent 38a2d8e64d
commit 7f933989c3
Signed by: Jerry
GPG key ID: 22618F758B5BE2E5
3 changed files with 9 additions and 3 deletions

View file

@ -10,6 +10,8 @@ find_package(PkgConfig REQUIRED)
pkg_search_module(LIBDRM REQUIRED libdrm) pkg_search_module(LIBDRM REQUIRED libdrm)
pkg_search_module(LIBVNCSERVER REQUIRED libvncserver) pkg_search_module(LIBVNCSERVER REQUIRED libvncserver)
pkg_search_module(XKBCOMMON REQUIRED xkbcommon) pkg_search_module(XKBCOMMON REQUIRED xkbcommon)
pkg_search_module(LIBVA REQUIRED libva)
pkg_search_module(LIBVA_DRM REQUIRED libva-drm)
include(CheckIncludeFiles) include(CheckIncludeFiles)
CHECK_INCLUDE_FILES("linux/uinput.h;linux/dma-buf.h" HAVE_LINUX_API_HEADERS) CHECK_INCLUDE_FILES("linux/uinput.h;linux/dma-buf.h" HAVE_LINUX_API_HEADERS)
@ -17,17 +19,21 @@ IF(NOT HAVE_LINUX_API_HEADERS)
message(FATAL_ERROR "linux-api-headers not found") message(FATAL_ERROR "linux-api-headers not found")
ENDIF() ENDIF()
add_executable(kmsvnc kmsvnc.c drm.c input.c keymap.c) add_executable(kmsvnc kmsvnc.c drm.c input.c keymap.c va.c)
target_include_directories(kmsvnc PUBLIC target_include_directories(kmsvnc PUBLIC
${LIBDRM_INCLUDEDIR} ${LIBDRM_INCLUDEDIR}
${LIBDRM_INCLUDEDIR}/libdrm ${LIBDRM_INCLUDEDIR}/libdrm
${LIBVNCSERVER_INCLUDEDIR} ${LIBVNCSERVER_INCLUDEDIR}
${XKBCOMMON_INCLUDEDIR} ${XKBCOMMON_INCLUDEDIR}
${LIBVA_INCLUDEDIR}
${LIBVA_DRM_INCLUDEDIR}
) )
target_link_libraries(kmsvnc PUBLIC target_link_libraries(kmsvnc PUBLIC
m m
${LIBDRM_LIBRARIES} ${LIBDRM_LIBRARIES}
${LIBVNCSERVER_LIBRARIES} ${LIBVNCSERVER_LIBRARIES}
${XKBCOMMON_LIBRARIES} ${XKBCOMMON_LIBRARIES}
${LIBVA_LIBRARIES}
${LIBVA_DRM_LIBRARIES}
) )
install(TARGETS kmsvnc RUNTIME DESTINATION bin) install(TARGETS kmsvnc RUNTIME DESTINATION bin)

2
drm.c
View file

@ -272,7 +272,7 @@ static int drm_kmsbuf_prime_vaapi() {
drm->funcs->sync_start = &drm_sync_start; drm->funcs->sync_start = &drm_sync_start;
drm->funcs->sync_end = &drm_sync_end; drm->funcs->sync_end = &drm_sync_end;
drm->mmap_fd = drm->prime_fd; drm->mmap_fd = drm->prime_fd;
drm->mapped = kmsvnc->buf; drm->mapped = kmsvnc->va->imgbuf;
return 0; return 0;
} }

2
va.c
View file

@ -115,7 +115,7 @@ int va_init() {
prime_attrs, KMSVNC_ARRAY_ELEMENTS(prime_attrs))) prime_attrs, KMSVNC_ARRAY_ELEMENTS(prime_attrs)))
{ {
printf("vaCreateSurfaces prime2 error %#x %s, trying prime\n", s, vaErrorStr(s)); printf("vaCreateSurfaces prime2 error %#x %s, trying prime\n", s, vaErrorStr(s));
VASurfaceAttribExternalBuffers buffer_desc; VASurfaceAttribExternalBuffers buffer_desc;
VASurfaceAttrib buffer_attrs[2] = { VASurfaceAttrib buffer_attrs[2] = {
{ {