2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
Cuttlefish: GPU 그래픽 가속
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Cuttlefish의 가속 그래픽 모드는 호스트 머신에 게스트 렌더링 명령어를 전달하고 호스트 머신에서 렌더링 명령어 호출을 실행한 후 게스트에 렌더링 결과를 다시 전달하는 방식으로 호스트 머신의 물리적 그래픽 처리 장치(GPU)를 사용하여 렌더링합니다.
Android 11 이상에서 실행되는 Cuttlefish 기기는 가속 그래픽을 감지하고 사용합니다. 호스트 머신이 가속 그래픽을 지원하지 않거나 Android 버전이 Android 10 이하인 경우 Cuttlefish 기기의 게스트 측 렌더링 (예: UI 및 동영상 재생)은 SwiftShader에서 처리합니다.
SwiftShader는 OpenGL 및 Vulkan API의 소프트웨어 구현입니다. SwiftShader는 소프트웨어 구현이므로 모든 호스트 머신에서 실행할 수 있는 Cuttlefish에 범용적으로 사용 가능한 렌더링 솔루션을 제공합니다.
하지만 SwiftShader를 사용하는 것은 일반적인 기기보다 성능이 떨어집니다. 렌더링은 픽셀 값을 독립적으로 계산할 수 있으므로 대규모 병렬 처리가 가능한 병렬 문제입니다. 그래픽 처리 장치 (GPU)는 렌더링을 가속하여 이 문제를 해결하는 하드웨어 장치입니다.
요구사항
가속 그래픽 모드를 사용하려면 호스트에 다음이 필요합니다.
GL_KHR_surfaceless_context
확장 프로그램을 지원하는 EGL 지원 드라이버
- OpenGL ES 지원 드라이버
- Vulkan 지원 드라이버
가속 그래픽 모드 사용
GfxStream
GxStream 가속 그래픽 모드를 사용하려면 --gpu_mode=gfxstream
플래그로 로컬 Cuttlefish 기기를 실행합니다. 이 모드를 사용하면 OpenGL 및 Vulkan API 호출이 호스트로 직접 전달됩니다.
launch_cvd --gpu_mode=gfxstream
Virgl
Virgl 가속 그래픽 모드를 사용하려면 --gpu_mode=drm_virgl
플래그로 로컬 Cuttlefish 기기를 실행합니다.
launch_cvd --gpu_mode=drm_virgl
Virgl 가속 그래픽 모드를 사용하면 OpenGL API 호출이 중간 표현으로 변환됩니다(Gallium3D 참고). 중간 표현은 호스트에 전달되고 호스트의 virglrenderer 라이브러리는 중간 표현을 다시 OpenGL API 호출로 변환합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Cuttlefish: GPU graphics acceleration\n\nCuttlefish's accelerated graphics mode uses your host machine's physical\ngraphics processing unit (GPU) for rendering by passing guest rendering commands\nto your host machine, running the rendering commands calls on your host machine,\nand passing the rendered results back to the guest.\n\nA Cuttlefish device running in Android 11 or higher\ndetects and uses accelerated graphics. If the host machine doesn't support\naccelerated graphics or the Android version is\nAndroid 10 or lower, guest-side rendering (for example,\nUI and video playback) in your Cuttlefish device is handled by SwiftShader.\nSwiftShader is a software implementation of the OpenGL and Vulkan APIs. Because\nSwiftShader is a software implementation, it provides a universally accessible\nrendering solution for Cuttlefish capable of running on any host machine.\n\nHowever, using SwiftShader isn't as performant as a normal device. Rendering is\na parallel problem that can be massively parallelized, as pixel\nvalues can be computed independently. Graphics processing units (GPUs) are\nhardware units that address this problem by accelerating rendering.\n\nRequirements\n------------\n\nAccelerated graphics mode requires that the host have:\n\n- EGL capable driver supporting the `GL_KHR_surfaceless_context` extension\n- OpenGL ES capable driver\n- Vulkan capable driver\n\nUse accelerated graphics modes\n------------------------------\n\n### GfxStream\n\nTo use the GfxStream accelerated graphics mode, launch your local Cuttlefish\ndevice with the `--gpu_mode=gfxstream` flag. Using this mode, OpenGL and Vulkan\nAPI calls are forwarded directly to the host. \n\n```\nlaunch_cvd --gpu_mode=gfxstream\n```\n\n### Virgl\n\nTo use the Virgl accelerated graphics mode, launch your local Cuttlefish device\nwith the `--gpu_mode=drm_virgl` flag. \n\n```\nlaunch_cvd --gpu_mode=drm_virgl\n```\n\nWhen using the Virgl accelerated graphics mode, OpenGL API calls are translated\ninto an intermediate representation (see\n[Gallium3D](https://www.freedesktop.org/wiki/Software/gallium/)). The\nintermediate representation is communicated to the host and the\n[virglrenderer](https://gitlab.freedesktop.org/virgl/virglrenderer) library on\nthe host translates the intermediate representation back to OpenGL API calls.\n| **Note:** Vulkan isn't supported."]]