cuda-samples/Samples/5_Domain_Specific/simpleGLES_EGLOutput/README.md

70 lines
3.2 KiB
Markdown
Raw Normal View History

2022-01-13 14:05:24 +08:00
# simpleGLES_EGLOutput - Simple OpenGLES EGLOutput
2021-10-21 19:04:49 +08:00
## Description
2022-01-13 14:05:24 +08:00
Demonstrates data exchange between CUDA and OpenGL ES (aka Graphics interop). The program modifies vertex positions with CUDA and uses OpenGL ES to render the geometry, and shows how to render directly to the display using the EGLOutput mechanism and the DRM library.
```
NOTE: On Orin platform, execute this command before running sample:
$ sudo modprobe nvidia-drm modeset=1
```
2021-10-21 19:04:49 +08:00
## Key Concepts
2022-01-13 14:05:24 +08:00
Graphics Interop, Vertex Buffers, 3D Graphics
2021-10-21 19:04:49 +08:00
## Supported SM Architectures
2022-01-13 14:05:24 +08:00
[SM 3.5 ](https://developer.nvidia.com/cuda-gpus) [SM 3.7 ](https://developer.nvidia.com/cuda-gpus) [SM 5.0 ](https://developer.nvidia.com/cuda-gpus) [SM 5.2 ](https://developer.nvidia.com/cuda-gpus) [SM 5.3 ](https://developer.nvidia.com/cuda-gpus) [SM 6.0 ](https://developer.nvidia.com/cuda-gpus) [SM 6.1 ](https://developer.nvidia.com/cuda-gpus) [SM 7.0 ](https://developer.nvidia.com/cuda-gpus) [SM 7.2 ](https://developer.nvidia.com/cuda-gpus) [SM 7.5 ](https://developer.nvidia.com/cuda-gpus) [SM 8.0 ](https://developer.nvidia.com/cuda-gpus) [SM 8.6 ](https://developer.nvidia.com/cuda-gpus) [SM 8.7 ](https://developer.nvidia.com/cuda-gpus)
2021-10-21 19:04:49 +08:00
## Supported OSes
Linux
## Supported CPU Architecture
2022-01-13 14:05:24 +08:00
armv7l
2021-10-21 19:04:49 +08:00
## CUDA APIs involved
2022-01-13 14:05:24 +08:00
### [CUDA Runtime API](http://docs.nvidia.com/cuda/cuda-runtime-api/index.html)
cudaFree, cudaGraphicsMapResources, cudaGraphicsGLRegisterBuffer, cudaGraphicsResourceGetMappedPointer, cudaDeviceSynchronize, cudaMalloc, cudaGraphicsUnregisterResource, cudaGraphicsUnmapResources, cudaMemcpy
2021-10-21 19:04:49 +08:00
## Dependencies needed to build/run
2022-01-13 14:05:24 +08:00
[EGLOutput](../../README.md#egloutput), [GLES](../../README.md#gles)
2021-10-21 19:04:49 +08:00
## Prerequisites
2022-01-13 14:05:24 +08:00
Download and install the [CUDA Toolkit 11.6](https://developer.nvidia.com/cuda-downloads) for your corresponding platform.
2021-10-21 19:04:49 +08:00
Make sure the dependencies mentioned in [Dependencies]() section above are installed.
## Build and Run
### Linux
The Linux samples are built using makefiles. To use the makefiles, change the current directory to the sample directory you wish to build, and run make:
```
$ cd <sample_dir>
$ make
```
The samples makefiles can take advantage of certain options:
2022-01-13 14:05:24 +08:00
* **TARGET_ARCH=<arch>** - cross-compile targeting a specific architecture. Allowed architectures are armv7l.
2021-10-21 19:04:49 +08:00
By default, TARGET_ARCH is set to HOST_ARCH. On a x86_64 machine, not setting TARGET_ARCH is the equivalent of setting TARGET_ARCH=x86_64.<br/>
2022-01-13 14:05:24 +08:00
`$ make TARGET_ARCH=armv7l` <br/>
2021-10-21 19:04:49 +08:00
See [here](http://docs.nvidia.com/cuda/cuda-samples/index.html#cross-samples) for more details.
* **dbg=1** - build with debug symbols
```
$ make dbg=1
```
* **SMS="A B ..."** - override the SM architectures for which the sample will be built, where `"A B ..."` is a space-delimited list of SM architectures. For example, to generate SASS for SM 50 and SM 60, use `SMS="50 60"`.
```
$ make SMS="50 60"
```
* **HOST_COMPILER=<host_compiler>** - override the default g++ host compiler. See the [Linux Installation Guide](http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements) for a list of supported host compilers.
```
$ make HOST_COMPILER=g++
```
## References (for more details)