diff --git a/Samples/EGLStreams_CUDA_Interop/.vscode/c_cpp_properties.json b/Samples/EGLStreams_CUDA_Interop/.vscode/c_cpp_properties.json deleted file mode 100644 index e56293f6..00000000 --- a/Samples/EGLStreams_CUDA_Interop/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "configurations": [ - { - "name": "Linux", - "includePath": [ - "${workspaceFolder}/**", - "${workspaceFolder}/../../Common" - ], - "defines": [], - "compilerPath": "/usr/local/cuda/bin/nvcc", - "cStandard": "gnu17", - "cppStandard": "gnu++14", - "intelliSenseMode": "linux-gcc-x64", - "configurationProvider": "ms-vscode.makefile-tools" - } - ], - "version": 4 -} diff --git a/Samples/EGLStreams_CUDA_Interop/.vscode/extensions.json b/Samples/EGLStreams_CUDA_Interop/.vscode/extensions.json deleted file mode 100644 index c7eb54dc..00000000 --- a/Samples/EGLStreams_CUDA_Interop/.vscode/extensions.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "recommendations": [ - "nvidia.nsight-vscode-edition", - "ms-vscode.cpptools", - "ms-vscode.makefile-tools" - ] -} diff --git a/Samples/EGLStreams_CUDA_Interop/.vscode/launch.json b/Samples/EGLStreams_CUDA_Interop/.vscode/launch.json deleted file mode 100644 index e6ea4a94..00000000 --- a/Samples/EGLStreams_CUDA_Interop/.vscode/launch.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "configurations": [ - { - "name": "CUDA C++: Launch", - "type": "cuda-gdb", - "request": "launch", - "program": "${workspaceFolder}/EGLStream_CUDA_Interop" - } - ] -} diff --git a/Samples/EGLStreams_CUDA_Interop/.vscode/tasks.json b/Samples/EGLStreams_CUDA_Interop/.vscode/tasks.json deleted file mode 100644 index 4509aeb1..00000000 --- a/Samples/EGLStreams_CUDA_Interop/.vscode/tasks.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "sample", - "type": "shell", - "command": "make dbg=1", - "problemMatcher": ["$nvcc"], - "group": { - "kind": "build", - "isDefault": true - } - } - ] -} diff --git a/Samples/EGLStreams_CUDA_Interop/Makefile b/Samples/EGLStreams_CUDA_Interop/Makefile deleted file mode 100644 index ac7709b6..00000000 --- a/Samples/EGLStreams_CUDA_Interop/Makefile +++ /dev/null @@ -1,433 +0,0 @@ -################################################################################ -# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of NVIDIA CORPORATION nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -################################################################################ -# -# Makefile project only supported on Mac OS X and Linux Platforms) -# -################################################################################ - -# Location of the CUDA Toolkit -CUDA_PATH ?= /usr/local/cuda - -############################## -# start deprecated interface # -############################## -ifeq ($(x86_64),1) - $(info WARNING - x86_64 variable has been deprecated) - $(info WARNING - please use TARGET_ARCH=x86_64 instead) - TARGET_ARCH ?= x86_64 -endif -ifeq ($(ARMv7),1) - $(info WARNING - ARMv7 variable has been deprecated) - $(info WARNING - please use TARGET_ARCH=armv7l instead) - TARGET_ARCH ?= armv7l -endif -ifeq ($(aarch64),1) - $(info WARNING - aarch64 variable has been deprecated) - $(info WARNING - please use TARGET_ARCH=aarch64 instead) - TARGET_ARCH ?= aarch64 -endif -ifeq ($(ppc64le),1) - $(info WARNING - ppc64le variable has been deprecated) - $(info WARNING - please use TARGET_ARCH=ppc64le instead) - TARGET_ARCH ?= ppc64le -endif -ifneq ($(GCC),) - $(info WARNING - GCC variable has been deprecated) - $(info WARNING - please use HOST_COMPILER=$(GCC) instead) - HOST_COMPILER ?= $(GCC) -endif -ifneq ($(abi),) - $(error ERROR - abi variable has been removed) -endif -############################ -# end deprecated interface # -############################ - -# architecture -HOST_ARCH := $(shell uname -m) -TARGET_ARCH ?= $(HOST_ARCH) -ifneq (,$(filter $(TARGET_ARCH),x86_64 aarch64 sbsa ppc64le armv7l)) - ifneq ($(TARGET_ARCH),$(HOST_ARCH)) - ifneq (,$(filter $(TARGET_ARCH),x86_64 aarch64 sbsa ppc64le)) - TARGET_SIZE := 64 - else ifneq (,$(filter $(TARGET_ARCH),armv7l)) - TARGET_SIZE := 32 - endif - else - TARGET_SIZE := $(shell getconf LONG_BIT) - endif -else - $(error ERROR - unsupported value $(TARGET_ARCH) for TARGET_ARCH!) -endif - -# sbsa and aarch64 systems look similar. Need to differentiate them at host level for now. -ifeq ($(HOST_ARCH),aarch64) - ifeq ($(CUDA_PATH)/targets/sbsa-linux,$(shell ls -1d $(CUDA_PATH)/targets/sbsa-linux 2>/dev/null)) - HOST_ARCH := sbsa - TARGET_ARCH := sbsa - endif -endif - -ifneq ($(TARGET_ARCH),$(HOST_ARCH)) - ifeq (,$(filter $(HOST_ARCH)-$(TARGET_ARCH),aarch64-armv7l x86_64-armv7l x86_64-aarch64 x86_64-sbsa x86_64-ppc64le)) - $(error ERROR - cross compiling from $(HOST_ARCH) to $(TARGET_ARCH) is not supported!) - endif -endif - -# When on native aarch64 system with userspace of 32-bit, change TARGET_ARCH to armv7l -ifeq ($(HOST_ARCH)-$(TARGET_ARCH)-$(TARGET_SIZE),aarch64-aarch64-32) - TARGET_ARCH = armv7l -endif - -# operating system -HOST_OS := $(shell uname -s 2>/dev/null | tr "[:upper:]" "[:lower:]") -TARGET_OS ?= $(HOST_OS) -ifeq (,$(filter $(TARGET_OS),linux darwin qnx android)) - $(error ERROR - unsupported value $(TARGET_OS) for TARGET_OS!) -endif - -# host compiler -ifeq ($(TARGET_OS),darwin) - ifeq ($(shell expr `xcodebuild -version | grep -i xcode | awk '{print $$2}' | cut -d'.' -f1` \>= 5),1) - HOST_COMPILER ?= clang++ - endif -else ifneq ($(TARGET_ARCH),$(HOST_ARCH)) - ifeq ($(HOST_ARCH)-$(TARGET_ARCH),x86_64-armv7l) - ifeq ($(TARGET_OS),linux) - HOST_COMPILER ?= arm-linux-gnueabihf-g++ - else ifeq ($(TARGET_OS),qnx) - ifeq ($(QNX_HOST),) - $(error ERROR - QNX_HOST must be passed to the QNX host toolchain) - endif - ifeq ($(QNX_TARGET),) - $(error ERROR - QNX_TARGET must be passed to the QNX target toolchain) - endif - export QNX_HOST - export QNX_TARGET - HOST_COMPILER ?= $(QNX_HOST)/usr/bin/arm-unknown-nto-qnx6.6.0eabi-g++ - else ifeq ($(TARGET_OS),android) - HOST_COMPILER ?= arm-linux-androideabi-g++ - endif - else ifeq ($(TARGET_ARCH),aarch64) - ifeq ($(TARGET_OS), linux) - HOST_COMPILER ?= aarch64-linux-gnu-g++ - else ifeq ($(TARGET_OS),qnx) - ifeq ($(QNX_HOST),) - $(error ERROR - QNX_HOST must be passed to the QNX host toolchain) - endif - ifeq ($(QNX_TARGET),) - $(error ERROR - QNX_TARGET must be passed to the QNX target toolchain) - endif - export QNX_HOST - export QNX_TARGET - HOST_COMPILER ?= $(QNX_HOST)/usr/bin/q++ - else ifeq ($(TARGET_OS), android) - HOST_COMPILER ?= aarch64-linux-android-clang++ - endif - else ifeq ($(TARGET_ARCH),sbsa) - HOST_COMPILER ?= aarch64-linux-gnu-g++ - else ifeq ($(TARGET_ARCH),ppc64le) - HOST_COMPILER ?= powerpc64le-linux-gnu-g++ - endif -endif -HOST_COMPILER ?= g++ -NVCC := $(CUDA_PATH)/bin/nvcc -ccbin $(HOST_COMPILER) - -# internal flags -NVCCFLAGS := -m${TARGET_SIZE} -CCFLAGS := -LDFLAGS := - -# build flags -ifeq ($(TARGET_OS),darwin) - LDFLAGS += -rpath $(CUDA_PATH)/lib - CCFLAGS += -arch $(HOST_ARCH) -else ifeq ($(HOST_ARCH)-$(TARGET_ARCH)-$(TARGET_OS),x86_64-armv7l-linux) - LDFLAGS += --dynamic-linker=/lib/ld-linux-armhf.so.3 - CCFLAGS += -mfloat-abi=hard -else ifeq ($(TARGET_OS),android) - LDFLAGS += -pie - CCFLAGS += -fpie -fpic -fexceptions -endif - -ifneq ($(TARGET_ARCH),$(HOST_ARCH)) - ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-linux) - ifneq ($(TARGET_FS),) - GCCVERSIONLTEQ46 := $(shell expr `$(HOST_COMPILER) -dumpversion` \<= 4.6) - ifeq ($(GCCVERSIONLTEQ46),1) - CCFLAGS += --sysroot=$(TARGET_FS) - endif - LDFLAGS += --sysroot=$(TARGET_FS) - LDFLAGS += -rpath-link=$(TARGET_FS)/lib - LDFLAGS += -rpath-link=$(TARGET_FS)/usr/lib - LDFLAGS += -rpath-link=$(TARGET_FS)/usr/lib/arm-linux-gnueabihf - endif - endif - ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-linux) - ifneq ($(TARGET_FS),) - GCCVERSIONLTEQ46 := $(shell expr `$(HOST_COMPILER) -dumpversion` \<= 4.6) - ifeq ($(GCCVERSIONLTEQ46),1) - CCFLAGS += --sysroot=$(TARGET_FS) - endif - LDFLAGS += --sysroot=$(TARGET_FS) - LDFLAGS += -rpath-link=$(TARGET_FS)/lib -L$(TARGET_FS)/lib - LDFLAGS += -rpath-link=$(TARGET_FS)/lib/aarch64-linux-gnu -L$(TARGET_FS)/lib/aarch64-linux-gnu - LDFLAGS += -rpath-link=$(TARGET_FS)/usr/lib -L$(TARGET_FS)/usr/lib - LDFLAGS += -rpath-link=$(TARGET_FS)/usr/lib/aarch64-linux-gnu -L$(TARGET_FS)/usr/lib/aarch64-linux-gnu - LDFLAGS += --unresolved-symbols=ignore-in-shared-libs - CCFLAGS += -isystem=$(TARGET_FS)/usr/include -I$(TARGET_FS)/usr/include -I$(TARGET_FS)/usr/include/libdrm - CCFLAGS += -isystem=$(TARGET_FS)/usr/include/aarch64-linux-gnu -I$(TARGET_FS)/usr/include/aarch64-linux-gnu - endif - endif - ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-qnx) - NVCCFLAGS += --qpp-config 5.4.0,gcc_ntoaarch64le - CCFLAGS += -DWIN_INTERFACE_CUSTOM -I/usr/include/aarch64-qnx-gnu - LDFLAGS += -lsocket - LDFLAGS += -L/usr/lib/aarch64-qnx-gnu - CCFLAGS += "-Wl\,-rpath-link\,/usr/lib/aarch64-qnx-gnu" - ifdef TARGET_OVERRIDE - LDFLAGS += -lslog2 - endif - - ifneq ($(TARGET_FS),) - LDFLAGS += -L$(TARGET_FS)/usr/lib - CCFLAGS += "-Wl\,-rpath-link\,$(TARGET_FS)/usr/lib" - LDFLAGS += -L$(TARGET_FS)/usr/libnvidia - CCFLAGS += "-Wl\,-rpath-link\,$(TARGET_FS)/usr/libnvidia" - CCFLAGS += -I$(TARGET_FS)/../include - endif - endif -endif - -ifdef TARGET_OVERRIDE # cuda toolkit targets override - NVCCFLAGS += -target-dir $(TARGET_OVERRIDE) -endif - -# Install directory of different arch -CUDA_INSTALL_TARGET_DIR := -ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-linux) - CUDA_INSTALL_TARGET_DIR = targets/armv7-linux-gnueabihf/ -else ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-linux) - CUDA_INSTALL_TARGET_DIR = targets/aarch64-linux/ -else ifeq ($(TARGET_ARCH)-$(TARGET_OS),sbsa-linux) - CUDA_INSTALL_TARGET_DIR = targets/sbsa-linux/ -else ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-android) - CUDA_INSTALL_TARGET_DIR = targets/armv7-linux-androideabi/ -else ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-android) - CUDA_INSTALL_TARGET_DIR = targets/aarch64-linux-androideabi/ -else ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-qnx) - CUDA_INSTALL_TARGET_DIR = targets/ARMv7-linux-QNX/ -else ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-qnx) - CUDA_INSTALL_TARGET_DIR = targets/aarch64-qnx/ -else ifeq ($(TARGET_ARCH),ppc64le) - CUDA_INSTALL_TARGET_DIR = targets/ppc64le-linux/ -endif - -# Debug build flags -ifeq ($(dbg),1) - NVCCFLAGS += -g -G - BUILD_TYPE := debug -else - BUILD_TYPE := release -endif - -ALL_CCFLAGS := -ALL_CCFLAGS += $(NVCCFLAGS) -ALL_CCFLAGS += $(EXTRA_NVCCFLAGS) -ALL_CCFLAGS += $(addprefix -Xcompiler ,$(CCFLAGS)) -ALL_CCFLAGS += $(addprefix -Xcompiler ,$(EXTRA_CCFLAGS)) - -UBUNTU = $(shell lsb_release -i -s 2>/dev/null | grep -i ubuntu) - -SAMPLE_ENABLED := 1 - -# This sample is not supported on Mac OSX -ifeq ($(TARGET_OS),darwin) - $(info >>> WARNING - EGLStream_CUDA_Interop is not supported on Mac OSX - waiving sample <<<) - SAMPLE_ENABLED := 0 -endif - -# This sample is not supported on ARMv7 -ifeq ($(TARGET_ARCH),armv7l) - $(info >>> WARNING - EGLStream_CUDA_Interop is not supported on ARMv7 - waiving sample <<<) - SAMPLE_ENABLED := 0 -endif - -# This sample is not supported on android -ifeq ($(TARGET_OS),android) - $(info >>> WARNING - EGLStream_CUDA_Interop is not supported on android - waiving sample <<<) - SAMPLE_ENABLED := 0 -endif - -ALL_LDFLAGS := -ALL_LDFLAGS += $(ALL_CCFLAGS) -ALL_LDFLAGS += $(addprefix -Xlinker ,$(LDFLAGS)) -ALL_LDFLAGS += $(addprefix -Xlinker ,$(EXTRA_LDFLAGS)) - -# Common includes and paths for CUDA -INCLUDES := -I../../Common -LIBRARIES := - -################################################################################ - -# Makefile include to help find EGL Libraries -include ./findegl.mk - -# EGL specific libraries -ifneq ($(TARGET_OS),darwin) - LIBRARIES += -lEGL -endif - -#Detect if installed version of GCC supports required C++11 -ifeq ($(TARGET_OS),linux) - empty := - space := $(empty) $(empty) - GCCVERSIONSTRING := $(shell expr `$(HOST_COMPILER) -dumpversion`) -#Create version number without "." - GCCVERSION := $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f1 -d.) - GCCVERSION += $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f2 -d.) - GCCVERSION += $(shell expr `echo $(GCCVERSIONSTRING)` | cut -f3 -d.) -# Make sure the version number has at least 3 decimals - GCCVERSION += 00 -# Remove spaces from the version number - GCCVERSION := $(subst $(space),$(empty),$(GCCVERSION)) -#$(warning $(GCCVERSION)) - - IS_MIN_VERSION := $(shell expr `echo $(GCCVERSION)` \>= 51000) - - ifeq ($(IS_MIN_VERSION), 1) - $(info >>> GCC Version is greater or equal to 5.1.0 <<<) - else - $(info >>> Waiving build. Minimum GCC version required is 5.1.0<<<) - SAMPLE_ENABLED := 0 - endif -endif - -ifeq ($(TARGET_OS),darwin) - ALL_LDFLAGS += -Xcompiler -F/Library/Frameworks -Xlinker -framework -Xlinker CUDA -else - ifeq ($(TARGET_ARCH),x86_64) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/lib64/stubs - CUDA_SEARCH_PATH += $(CUDA_PATH)/targets/x86_64-linux/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-linux) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/armv7-linux-gnueabihf/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-linux) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/aarch64-linux/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),sbsa-linux) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/sbsa-linux/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-android) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/armv7-linux-androideabi/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-android) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/aarch64-linux-androideabi/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),armv7l-qnx) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/ARMv7-linux-QNX/lib/stubs - endif - - ifeq ($(TARGET_ARCH)-$(TARGET_OS),aarch64-qnx) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/aarch64-qnx/lib/stubs - ifdef TARGET_OVERRIDE - CUDA_SEARCH_PATH := $(CUDA_PATH)/targets/$(TARGET_OVERRIDE)/lib/stubs - endif - endif - - ifeq ($(TARGET_ARCH),ppc64le) - CUDA_SEARCH_PATH ?= $(CUDA_PATH)/targets/ppc64le-linux/lib/stubs - endif - - ifeq ($(HOST_ARCH),ppc64le) - CUDA_SEARCH_PATH += $(CUDA_PATH)/lib64/stubs - endif - - CUDALIB ?= $(shell find -L $(CUDA_SEARCH_PATH) -maxdepth 1 -name libcuda.so 2> /dev/null) - ifeq ("$(CUDALIB)","") - $(info >>> WARNING - libcuda.so not found, CUDA Driver is not installed. Please re-install the driver. <<<) - SAMPLE_ENABLED := 0 - else - CUDALIB := $(shell echo $(CUDALIB) | sed "s/ .*//" | sed "s/\/libcuda.so//" ) - LIBRARIES += -L$(CUDALIB) -lcuda - endif -endif - -ALL_CCFLAGS += --threads 0 --std=c++11 - -ifeq ($(SAMPLE_ENABLED),0) -EXEC ?= @echo "[@]" -endif - -################################################################################ - -# Target rules -all: build - -build: EGLStream_CUDA_Interop - -check.deps: -ifeq ($(SAMPLE_ENABLED),0) - @echo "Sample will be waived due to the above missing dependencies" -else - @echo "Sample is ready - all dependencies have been met" -endif - -cuda_consumer.o:cuda_consumer.cpp - $(EXEC) $(NVCC) $(INCLUDES) $(ALL_CCFLAGS) $(GENCODE_FLAGS) -o $@ -c $< - -cuda_producer.o:cuda_producer.cpp - $(EXEC) $(NVCC) $(INCLUDES) $(ALL_CCFLAGS) $(GENCODE_FLAGS) -o $@ -c $< - -eglstrm_common.o:eglstrm_common.cpp - $(EXEC) $(NVCC) $(INCLUDES) $(ALL_CCFLAGS) $(GENCODE_FLAGS) -o $@ -c $< - -main.o:main.cpp - $(EXEC) $(NVCC) $(INCLUDES) $(ALL_CCFLAGS) $(GENCODE_FLAGS) -o $@ -c $< - -EGLStream_CUDA_Interop: cuda_consumer.o cuda_producer.o eglstrm_common.o main.o - $(EXEC) $(NVCC) $(ALL_LDFLAGS) $(GENCODE_FLAGS) -o $@ $+ $(LIBRARIES) - $(EXEC) mkdir -p ../../bin/$(TARGET_ARCH)/$(TARGET_OS)/$(BUILD_TYPE) - $(EXEC) cp $@ ../../bin/$(TARGET_ARCH)/$(TARGET_OS)/$(BUILD_TYPE) - -run: build - $(EXEC) ./EGLStream_CUDA_Interop - -clean: - rm -f EGLStream_CUDA_Interop cuda_consumer.o cuda_producer.o eglstrm_common.o main.o - rm -rf ../../bin/$(TARGET_ARCH)/$(TARGET_OS)/$(BUILD_TYPE)/EGLStream_CUDA_Interop - -clobber: clean diff --git a/Samples/EGLStreams_CUDA_Interop/NsightEclipse.xml b/Samples/EGLStreams_CUDA_Interop/NsightEclipse.xml deleted file mode 100644 index d43d6be4..00000000 --- a/Samples/EGLStreams_CUDA_Interop/NsightEclipse.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - EGLStream_CUDA_Interop - - cuDeviceGet - cuDeviceGetAttribute - cuDeviceComputeCapability - cuDeviceGetCount - cuDeviceGetName - cuGraphicsResourceGetMappedEglFrame - cuEGLStreamConsumerAcquireFrame - cuEGLStreamConsumerReleaseFrame - cuEGLStreamProducerPresentFrame - cuCtxCreate - cuMemAlloc - cuMemFree - cuMemcpy3D - cuStreamCreate - cuCtxPushCurrent - cuCtxPopCurrent - cuCtxDestroy - - - whole - - ./ - ../ - ../../Common - - - EGLStreams Interop - - - EGL Streams - - - cuda - CUDA - - - - true - main.cpp - - EGL - - - 1:CUDA Basic Topics - 2:Graphics Interop - - sm35 - sm37 - sm50 - sm52 - sm60 - sm61 - sm70 - sm72 - sm75 - sm80 - sm86 - - - x86_64 - linux - - - aarch64 - - - - all - - EGLStream CUDA Interop - exe - diff --git a/Samples/EGLStreams_CUDA_Interop/README.md b/Samples/EGLStreams_CUDA_Interop/README.md deleted file mode 100644 index 185bea61..00000000 --- a/Samples/EGLStreams_CUDA_Interop/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# EGLStream_CUDA_Interop - EGLStream CUDA Interop - -## Description - -Demonstrates data exchange between CUDA and EGL Streams. - -## Key Concepts - -EGLStreams Interop - -## Supported SM Architectures - -[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 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) - -## Supported OSes - -Linux - -## Supported CPU Architecture - -x86_64, aarch64 - -## CUDA APIs involved - -### [CUDA Driver API](http://docs.nvidia.com/cuda/cuda-driver-api/index.html) -cuDeviceGet, cuDeviceGetAttribute, cuDeviceComputeCapability, cuDeviceGetCount, cuDeviceGetName, cuGraphicsResourceGetMappedEglFrame, cuEGLStreamConsumerAcquireFrame, cuEGLStreamConsumerReleaseFrame, cuEGLStreamProducerPresentFrame, cuCtxCreate, cuMemAlloc, cuMemFree, cuMemcpy3D, cuStreamCreate, cuCtxPushCurrent, cuCtxPopCurrent, cuCtxDestroy - -## Dependencies needed to build/run -[EGL](../../README.md#egl) - -## Prerequisites - -Download and install the [CUDA Toolkit 11.5](https://developer.nvidia.com/cuda-downloads) for your corresponding platform. -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 -$ make -``` -The samples makefiles can take advantage of certain options: -* **TARGET_ARCH=** - cross-compile targeting a specific architecture. Allowed architectures are x86_64, aarch64. - 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.
-`$ make TARGET_ARCH=x86_64`
`$ make TARGET_ARCH=aarch64`
- 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=** - 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) - diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_consumer.cpp b/Samples/EGLStreams_CUDA_Interop/cuda_consumer.cpp deleted file mode 100644 index dad6cbe4..00000000 --- a/Samples/EGLStreams_CUDA_Interop/cuda_consumer.cpp +++ /dev/null @@ -1,318 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// -// DESCRIPTION: Simple CUDA consumer rendering sample app -// - -#include "cuda_consumer.h" -#include -#include "eglstrm_common.h" - -#if defined(EXTENSION_LIST) -EXTENSION_LIST(EXTLST_EXTERN) -#endif - -int checkbuf(FILE *fp1, FILE *fp2); - -CUresult cudaConsumerTest(test_cuda_consumer_s *data, char *fileName) { - CUresult cuStatus = CUDA_SUCCESS; - CUarray cudaArr = NULL; - CUeglFrame cudaEgl; - CUgraphicsResource cudaResource; - unsigned int i; - int check_result; - FILE *pInFile1 = NULL, *pInFile2 = NULL, *file_p = NULL; - EGLint streamState = 0; - - if (!data) { - printf("%s: Bad parameter\n", __func__); - goto done; - } - - if (!eglQueryStreamKHR(g_display, eglStream, EGL_STREAM_STATE_KHR, - &streamState)) { - printf("Cuda consumer, eglQueryStreamKHR EGL_STREAM_STATE_KHR failed\n"); - } - if (streamState == EGL_STREAM_STATE_DISCONNECTED_KHR) { - printf("CUDA Consumer: - EGL_STREAM_STATE_DISCONNECTED_KHR received\n"); - } - - if (streamState == EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR) { - cuStatus = cuEGLStreamConsumerAcquireFrame(&(data->cudaConn), &cudaResource, - NULL, 16000); - - if (cuStatus == CUDA_SUCCESS) { - CUdeviceptr pDevPtr = 0; - int bufferSize; - unsigned char *pCudaCopyMem = NULL; - unsigned int copyWidthInBytes = 0, copyHeight = 0; - - file_p = fopen(fileName, "wb+"); - if (!file_p) { - printf("WriteFrame: file open failed %s\n", fileName); - cuStatus = CUDA_ERROR_UNKNOWN; - goto done; - } - cuStatus = - cuGraphicsResourceGetMappedEglFrame(&cudaEgl, cudaResource, 0, 0); - if (cuStatus != CUDA_SUCCESS) { - printf("Cuda get resource failed with %d\n", cuStatus); - goto done; - } - cuStatus = cuCtxSynchronize(); - if (cuStatus != CUDA_SUCCESS) { - printf("cuCtxSynchronize failed \n"); - goto done; - } - if (!(cudaEgl.planeCount >= 1 && cudaEgl.planeCount <= 3)) { - printf("Plane count is invalid\nExiting\n"); - goto done; - } - - for (i = 0; i < cudaEgl.planeCount; i++) { - if (cudaEgl.frameType == CU_EGL_FRAME_TYPE_PITCH) { - pDevPtr = (CUdeviceptr)cudaEgl.frame.pPitch[i]; - if (cudaEgl.planeCount == 1) { - bufferSize = cudaEgl.pitch * cudaEgl.height; - copyWidthInBytes = cudaEgl.pitch; - copyHeight = data->height; - } else if (i == 1 && cudaEgl.planeCount == 2) { // YUV 420 - // semi-planar - bufferSize = cudaEgl.pitch * cudaEgl.height / 2; - copyWidthInBytes = cudaEgl.pitch; - copyHeight = data->height / 2; - } else { - bufferSize = data->width * data->height; - copyWidthInBytes = data->width; - copyHeight = data->height; - if (i > 0) { - bufferSize >>= 2; - copyWidthInBytes >>= 1; - copyHeight >>= 1; - } - } - } else { - cudaArr = cudaEgl.frame.pArray[i]; - if (cudaEgl.planeCount == 1) { - bufferSize = data->width * data->height * 4; - copyWidthInBytes = data->width * 4; - copyHeight = data->height; - } else if (i == 1 && cudaEgl.planeCount == 2) { // YUV 420 - // semi-planar - bufferSize = data->width * data->height / 2; - copyWidthInBytes = data->width; - copyHeight = data->height / 2; - } else { - bufferSize = data->width * data->height; - copyWidthInBytes = data->width; - copyHeight = data->height; - if (i > 0) { - bufferSize >>= 2; - copyWidthInBytes >>= 1; - copyHeight >>= 1; - } - } - } - if (i == 0) { - pCudaCopyMem = (unsigned char *)malloc(bufferSize); - if (pCudaCopyMem == NULL) { - printf("pCudaCopyMem malloc failed\n"); - goto done; - } - } - memset(pCudaCopyMem, 0, bufferSize); - if (data->pitchLinearOutput) { - cuStatus = cuMemcpyDtoH(pCudaCopyMem, pDevPtr, bufferSize); - if (cuStatus != CUDA_SUCCESS) { - printf( - "cuda_consumer: pitch linear Memcpy failed, bufferSize =%d\n", - bufferSize); - goto done; - } - cuStatus = cuCtxSynchronize(); - if (cuStatus != CUDA_SUCCESS) { - printf("cuda_consumer: cuCtxSynchronize failed after memcpy \n"); - goto done; - } - } else { - CUDA_MEMCPY3D cpdesc; - memset(&cpdesc, 0, sizeof(cpdesc)); - cpdesc.srcXInBytes = cpdesc.srcY = cpdesc.srcZ = cpdesc.srcLOD = 0; - cpdesc.srcMemoryType = CU_MEMORYTYPE_ARRAY; - cpdesc.srcArray = cudaArr; - cpdesc.dstXInBytes = cpdesc.dstY = cpdesc.dstZ = cpdesc.dstLOD = 0; - cpdesc.dstMemoryType = CU_MEMORYTYPE_HOST; - cpdesc.dstHost = (void *)pCudaCopyMem; - cpdesc.WidthInBytes = copyWidthInBytes; // data->width * 4; - cpdesc.Height = copyHeight; // data->height; - cpdesc.Depth = 1; - - cuStatus = cuMemcpy3D(&cpdesc); - if (cuStatus != CUDA_SUCCESS) { - printf( - "Cuda consumer: cuMemCpy3D failed, copyWidthInBytes=%d, " - "copyHight=%d\n", - copyWidthInBytes, copyHeight); - } - cuStatus = cuCtxSynchronize(); - if (cuStatus != CUDA_SUCCESS) { - printf("cuCtxSynchronize failed after memcpy \n"); - } - } - if (cuStatus == CUDA_SUCCESS) { - if (fwrite(pCudaCopyMem, bufferSize, 1, file_p) != 1) { - printf("Cuda consumer: output file write failed\n"); - cuStatus = CUDA_ERROR_UNKNOWN; - goto done; - } - } - } - pInFile1 = fopen(data->fileName1, "rb"); - if (!pInFile1) { - printf("Failed to open file :%s\n", data->fileName1); - goto done; - } - pInFile2 = fopen(data->fileName2, "rb"); - if (!pInFile2) { - printf("Failed to open file :%s\n", data->fileName2); - goto done; - } - rewind(file_p); - check_result = checkbuf(file_p, pInFile1); - if (check_result == -1) { - rewind(file_p); - check_result = checkbuf(file_p, pInFile2); - if (check_result == -1) { - printf("Frame received does not match any valid image: FAILED\n"); - } else { - printf("Frame check Passed\n"); - } - } else { - printf("Frame check Passed\n"); - } - if (pCudaCopyMem) { - free(pCudaCopyMem); - pCudaCopyMem = NULL; - } - cuStatus = - cuEGLStreamConsumerReleaseFrame(&data->cudaConn, cudaResource, NULL); - if (cuStatus != CUDA_SUCCESS) { - printf("cuEGLStreamConsumerReleaseFrame failed with cuStatus = %d\n", - cuStatus); - goto done; - } - } else { - printf("cuda AcquireFrame FAILED with cuStatus=%d\n", cuStatus); - goto done; - } - } - -done: - if (file_p) { - fclose(file_p); - file_p = NULL; - } - if (pInFile1) { - fclose(pInFile1); - pInFile1 = NULL; - } - if (pInFile1) { - fclose(pInFile2); - pInFile2 = NULL; - } - return cuStatus; -} - -int checkbuf(FILE *fp1, FILE *fp2) { - int match = 0; - int ch1, ch2; - if (fp1 == NULL) { - printf("Invalid file pointer for first file\n"); - return -1; - } else if (fp2 == NULL) { - printf("Invalid file pointer for second file\n"); - return -1; - } else { - ch1 = getc(fp1); - ch2 = getc(fp2); - while ((ch1 != EOF) && (ch2 != EOF) && (ch1 == ch2)) { - ch1 = getc(fp1); - ch2 = getc(fp2); - } - if (ch1 == ch2) { - match = 1; - } else if (ch1 != ch2) { - match = -1; - } - } - return match; -} - -CUresult cudaDeviceCreateConsumer(test_cuda_consumer_s *cudaConsumer, - CUdevice device) { - CUresult status = CUDA_SUCCESS; - if (CUDA_SUCCESS != (status = cuInit(0))) { - printf("Failed to initialize CUDA\n"); - return status; - } - - int major = 0, minor = 0; - char deviceName[256]; - checkCudaErrors(cuDeviceGetAttribute( - &major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, device)); - checkCudaErrors(cuDeviceGetAttribute( - &minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, device)); - checkCudaErrors(cuDeviceGetName(deviceName, 256, device)); - printf( - "CUDA Consumer on GPU Device %d: \"%s\" with compute capability " - "%d.%d\n\n", - device, deviceName, major, minor); - - if (CUDA_SUCCESS != - (status = cuCtxCreate(&cudaConsumer->context, 0, device))) { - printf("failed to create CUDA context\n"); - return status; - } - checkCudaErrors(cuCtxPopCurrent(&cudaConsumer->context)); - return status; -} - -void cuda_consumer_init(test_cuda_consumer_s *cudaConsumer, TestArgs *args) { - cudaConsumer->pitchLinearOutput = args->pitchLinearOutput; - cudaConsumer->width = args->inputWidth; - cudaConsumer->height = args->inputHeight; - cudaConsumer->fileName1 = args->infile1; - cudaConsumer->fileName2 = args->infile2; - - cudaConsumer->outFile1 = "cuda_out1.yuv"; - cudaConsumer->outFile2 = "cuda_out2.yuv"; -} - -CUresult cuda_consumer_deinit(test_cuda_consumer_s *cudaConsumer) { - return cuEGLStreamConsumerDisconnect(&cudaConsumer->cudaConn); -} diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_consumer.h b/Samples/EGLStreams_CUDA_Interop/cuda_consumer.h deleted file mode 100644 index c7e9a410..00000000 --- a/Samples/EGLStreams_CUDA_Interop/cuda_consumer.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// -// DESCRIPTION: CUDA consumer header file -// - -#ifndef _CUDA_CONSUMER_H_ -#define _CUDA_CONSUMER_H_ - -#include -#include -#include -#include "cudaEGL.h" -#include "eglstrm_common.h" - -extern EGLStreamKHR eglStream; -extern EGLDisplay g_display; - -typedef struct _test_cuda_consumer_s { - CUcontext context; - CUeglStreamConnection cudaConn; - bool pitchLinearOutput; - unsigned int width; - unsigned int height; - char *fileName1; - char *fileName2; - char *outFile1; - char *outFile2; - unsigned int frameCount; -} test_cuda_consumer_s; - -void cuda_consumer_init(test_cuda_consumer_s *cudaConsumer, TestArgs *args); -CUresult cuda_consumer_deinit(test_cuda_consumer_s *cudaConsumer); -CUresult cudaConsumerTest(test_cuda_consumer_s *data, char *outFile); -CUresult cudaDeviceCreateConsumer(test_cuda_consumer_s *cudaConsumer, - CUdevice device); -#endif diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_f_1.yuv b/Samples/EGLStreams_CUDA_Interop/cuda_f_1.yuv deleted file mode 100755 index a7a6465a..00000000 Binary files a/Samples/EGLStreams_CUDA_Interop/cuda_f_1.yuv and /dev/null differ diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_f_2.yuv b/Samples/EGLStreams_CUDA_Interop/cuda_f_2.yuv deleted file mode 100644 index a31315f5..00000000 Binary files a/Samples/EGLStreams_CUDA_Interop/cuda_f_2.yuv and /dev/null differ diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_producer.cpp b/Samples/EGLStreams_CUDA_Interop/cuda_producer.cpp deleted file mode 100644 index e8ca0a30..00000000 --- a/Samples/EGLStreams_CUDA_Interop/cuda_producer.cpp +++ /dev/null @@ -1,406 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// -// DESCRIPTION: Simple cuda EGL stream producer app -// - -#include "cuda_producer.h" -#include -#include "cudaEGL.h" -#include "eglstrm_common.h" - -#if defined(EXTENSION_LIST) -EXTENSION_LIST(EXTLST_EXTERN) -#endif - -static CUresult cudaProducerReadYUVFrame(FILE *file, unsigned int frameNum, - unsigned int width, - unsigned int height, - unsigned char *pBuff) { - int bOrderUV = 0; - unsigned char *pYBuff, *pUBuff, *pVBuff, *pChroma; - unsigned int frameSize = (width * height * 3) / 2; - CUresult ret = CUDA_SUCCESS; - unsigned int i; - - if (!pBuff || !file) return CUDA_ERROR_FILE_NOT_FOUND; - - pYBuff = pBuff; - - // YVU order in the buffer - pVBuff = pYBuff + width * height; - pUBuff = pVBuff + width * height / 4; - - if (fseek(file, frameNum * frameSize, SEEK_SET)) { - printf("ReadYUVFrame: Error seeking file: %p\n", file); - ret = CUDA_ERROR_NOT_PERMITTED; - goto done; - } - // read Y U V separately - for (i = 0; i < height; i++) { - if (fread(pYBuff, width, 1, file) != 1) { - printf("ReadYUVFrame: Error reading file: %p\n", file); - ret = CUDA_ERROR_NOT_PERMITTED; - goto done; - } - pYBuff += width; - } - - pChroma = bOrderUV ? pUBuff : pVBuff; - for (i = 0; i < height / 2; i++) { - if (fread(pChroma, width / 2, 1, file) != 1) { - printf("ReadYUVFrame: Error reading file: %p\n", file); - ret = CUDA_ERROR_NOT_PERMITTED; - goto done; - } - pChroma += width / 2; - } - - pChroma = bOrderUV ? pVBuff : pUBuff; - for (i = 0; i < height / 2; i++) { - if (fread(pChroma, width / 2, 1, file) != 1) { - printf("ReadYUVFrame: Error reading file: %p\n", file); - ret = CUDA_ERROR_NOT_PERMITTED; - goto done; - } - pChroma += width / 2; - } -done: - return ret; -} - -static CUresult cudaProducerReadARGBFrame(FILE *file, unsigned int frameNum, - unsigned int width, - unsigned int height, - unsigned char *pBuff) { - unsigned int frameSize = width * height * 4; - CUresult ret = CUDA_SUCCESS; - - if (!pBuff || !file) return CUDA_ERROR_FILE_NOT_FOUND; - - if (fseek(file, frameNum * frameSize, SEEK_SET)) { - printf("ReadYUVFrame: Error seeking file: %p\n", file); - ret = CUDA_ERROR_NOT_PERMITTED; - goto done; - } - - // read ARGB data - if (fread(pBuff, frameSize, 1, file) != 1) { - if (feof(file)) - printf("ReadARGBFrame: file read to the end\n"); - else - printf("ReadARGBFrame: Error reading file: %p\n", file); - ret = CUDA_ERROR_NOT_PERMITTED; - goto done; - } -done: - return ret; -} - -CUresult cudaProducerTest(test_cuda_producer_s *cudaProducer, char *file) { - int framenum = 0; - CUarray cudaArr[3] = {0}; - CUdeviceptr cudaPtr[3] = {0, 0, 0}; - unsigned int bufferSize; - CUresult cuStatus = CUDA_SUCCESS; - unsigned int i, surfNum, uvOffset[3] = {0}; - unsigned int copyWidthInBytes[3] = {0, 0, 0}, copyHeight[3] = {0, 0, 0}; - CUeglColorFormat eglColorFormat; - FILE *file_p; - CUeglFrame cudaEgl; - CUcontext oldContext; - - file_p = fopen(file, "rb"); - if (!file_p) { - printf("CudaProducer: Error opening file: %s\n", file); - goto done; - } - - if (cudaProducer->pitchLinearOutput) { - if (cudaProducer->isARGB) { - cudaPtr[0] = cudaProducer->cudaPtrARGB[0]; - } else { // YUV case - for (i = 0; i < 3; i++) { - if (i == 0) { - bufferSize = cudaProducer->width * cudaProducer->height; - } else { - bufferSize = cudaProducer->width * cudaProducer->height / 4; - } - - cudaPtr[i] = cudaProducer->cudaPtrYUV[i]; - } - } - } else { - if (cudaProducer->isARGB) { - cudaArr[0] = cudaProducer->cudaArrARGB[0]; - } else { - for (i = 0; i < 3; i++) { - cudaArr[i] = cudaProducer->cudaArrYUV[i]; - } - } - } - uvOffset[0] = 0; - if (cudaProducer->isARGB) { - if (CUDA_SUCCESS != - cudaProducerReadARGBFrame(file_p, framenum, cudaProducer->width, - cudaProducer->height, cudaProducer->pBuff)) { - printf("cuda producer, read ARGB frame failed\n"); - goto done; - } - copyWidthInBytes[0] = cudaProducer->width * 4; - copyHeight[0] = cudaProducer->height; - surfNum = 1; - eglColorFormat = CU_EGL_COLOR_FORMAT_ARGB; - } else { - if (CUDA_SUCCESS != - cudaProducerReadYUVFrame(file_p, framenum, cudaProducer->width, - cudaProducer->height, cudaProducer->pBuff)) { - printf("cuda producer, reading YUV frame failed\n"); - goto done; - } - surfNum = 3; - eglColorFormat = CU_EGL_COLOR_FORMAT_YUV420_PLANAR; - copyWidthInBytes[0] = cudaProducer->width; - copyHeight[0] = cudaProducer->height; - copyWidthInBytes[1] = cudaProducer->width / 2; - copyHeight[1] = cudaProducer->height / 2; - copyWidthInBytes[2] = cudaProducer->width / 2; - copyHeight[2] = cudaProducer->height / 2; - uvOffset[1] = cudaProducer->width * cudaProducer->height; - uvOffset[2] = - uvOffset[1] + cudaProducer->width / 2 * cudaProducer->height / 2; - } - if (cudaProducer->pitchLinearOutput) { - for (i = 0; i < surfNum; i++) { - cuStatus = - cuMemcpy(cudaPtr[i], (CUdeviceptr)(cudaProducer->pBuff + uvOffset[i]), - copyWidthInBytes[i] * copyHeight[i]); - - if (cuStatus != CUDA_SUCCESS) { - printf("Cuda producer: cuMemCpy pitchlinear failed, cuStatus =%d\n", - cuStatus); - goto done; - } - } - } else { - // copy cudaProducer->pBuff to cudaArray - CUDA_MEMCPY3D cpdesc; - for (i = 0; i < surfNum; i++) { - memset(&cpdesc, 0, sizeof(cpdesc)); - cpdesc.srcXInBytes = cpdesc.srcY = cpdesc.srcZ = cpdesc.srcLOD = 0; - cpdesc.srcMemoryType = CU_MEMORYTYPE_HOST; - cpdesc.srcHost = (void *)(cudaProducer->pBuff + uvOffset[i]); - cpdesc.dstXInBytes = cpdesc.dstY = cpdesc.dstZ = cpdesc.dstLOD = 0; - cpdesc.dstMemoryType = CU_MEMORYTYPE_ARRAY; - cpdesc.dstArray = cudaArr[i]; - cpdesc.WidthInBytes = copyWidthInBytes[i]; - cpdesc.Height = copyHeight[i]; - cpdesc.Depth = 1; - cuStatus = cuMemcpy3D(&cpdesc); - if (cuStatus != CUDA_SUCCESS) { - printf("Cuda producer: cuMemCpy failed, cuStatus =%d\n", cuStatus); - goto done; - } - } - } - for (i = 0; i < surfNum; i++) { - if (cudaProducer->pitchLinearOutput) - cudaEgl.frame.pPitch[i] = (void *)cudaPtr[i]; - else - cudaEgl.frame.pArray[i] = cudaArr[i]; - } - cudaEgl.width = copyWidthInBytes[0]; - cudaEgl.depth = 1; - cudaEgl.height = copyHeight[0]; - cudaEgl.pitch = cudaProducer->pitchLinearOutput ? cudaEgl.width : 0; - cudaEgl.frameType = cudaProducer->pitchLinearOutput ? CU_EGL_FRAME_TYPE_PITCH - : CU_EGL_FRAME_TYPE_ARRAY; - cudaEgl.planeCount = surfNum; - cudaEgl.numChannels = (eglColorFormat == CU_EGL_COLOR_FORMAT_ARGB) ? 4 : 1; - cudaEgl.eglColorFormat = eglColorFormat; - cudaEgl.cuFormat = CU_AD_FORMAT_UNSIGNED_INT8; - - static int numFramesPresented = 0; - // If there is a frame presented before we check if consumer - // is done with it using cuEGLStreamProducerReturnFrame. - while (numFramesPresented) { - CUeglFrame returnedCudaEgl; - cuStatus = cuEGLStreamProducerReturnFrame(&cudaProducer->cudaConn, - &returnedCudaEgl, NULL); - if (cuStatus == CUDA_ERROR_LAUNCH_TIMEOUT) { - continue; - } else if (cuStatus != CUDA_SUCCESS) { - printf("cuda Producer return frame FAILED with custatus= %d\n", cuStatus); - return cuStatus; - } else { - numFramesPresented--; - } - } - - cuStatus = - cuEGLStreamProducerPresentFrame(&cudaProducer->cudaConn, cudaEgl, NULL); - if (cuStatus != CUDA_SUCCESS) { - printf("cuda Producer present frame FAILED with custatus= %d\n", cuStatus); - goto done; - } - numFramesPresented++; - -done: - if (file_p) { - fclose(file_p); - file_p = NULL; - } - - return cuStatus; -} - -CUresult cudaDeviceCreateProducer(test_cuda_producer_s *cudaProducer, - CUdevice device) { - CUresult status = CUDA_SUCCESS; - if (CUDA_SUCCESS != (status = cuInit(0))) { - printf("Failed to initialize CUDA\n"); - return status; - } - - int major = 0, minor = 0; - char deviceName[256]; - checkCudaErrors(cuDeviceGetAttribute( - &major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, device)); - checkCudaErrors(cuDeviceGetAttribute( - &minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, device)); - checkCudaErrors(cuDeviceGetName(deviceName, 256, device)); - printf( - "CUDA Producer on GPU Device %d: \"%s\" with compute capability " - "%d.%d\n\n", - device, deviceName, major, minor); - - if (major < 6) { - printf( - "EGLStreams_CUDA_Interop requires SM 6.0 or higher arch GPU. " - "Exiting...\n"); - exit(2); // EXIT_WAIVED - } - - if (CUDA_SUCCESS != - (status = cuCtxCreate(&cudaProducer->context, 0, device))) { - printf("failed to create CUDA context\n"); - return status; - } - - status = cuMemAlloc(&cudaProducer->cudaPtrARGB[0], (WIDTH * HEIGHT * 4)); - if (status != CUDA_SUCCESS) { - printf("Create CUDA pointer failed, cuStatus=%d\n", status); - return status; - } - - status = cuMemAlloc(&cudaProducer->cudaPtrYUV[0], (WIDTH * HEIGHT)); - if (status != CUDA_SUCCESS) { - printf("Create CUDA pointer failed, cuStatus=%d\n", status); - return status; - } - status = cuMemAlloc(&cudaProducer->cudaPtrYUV[1], (WIDTH * HEIGHT) / 4); - if (status != CUDA_SUCCESS) { - printf("Create CUDA pointer failed, cuStatus=%d\n", status); - return status; - } - status = cuMemAlloc(&cudaProducer->cudaPtrYUV[2], (WIDTH * HEIGHT) / 4); - if (status != CUDA_SUCCESS) { - printf("Create CUDA pointer failed, cuStatus=%d\n", status); - return status; - } - - CUDA_ARRAY3D_DESCRIPTOR desc = {0}; - - desc.Format = CU_AD_FORMAT_UNSIGNED_INT8; - desc.Depth = 1; - desc.Flags = CUDA_ARRAY3D_SURFACE_LDST; - desc.NumChannels = 4; - desc.Width = WIDTH * 4; - desc.Height = HEIGHT; - status = cuArray3DCreate(&cudaProducer->cudaArrARGB[0], &desc); - if (status != CUDA_SUCCESS) { - printf("Create CUDA array failed, cuStatus=%d\n", status); - return status; - } - - for (int i = 0; i < 3; i++) { - if (i == 0) { - desc.NumChannels = 1; - desc.Width = WIDTH; - desc.Height = HEIGHT; - } else { // U/V surface as planar - desc.NumChannels = 1; - desc.Width = WIDTH / 2; - desc.Height = HEIGHT / 2; - } - status = cuArray3DCreate(&cudaProducer->cudaArrYUV[i], &desc); - if (status != CUDA_SUCCESS) { - printf("Create CUDA array failed, cuStatus=%d\n", status); - return status; - } - } - - cudaProducer->pBuff = (unsigned char *)malloc((WIDTH * HEIGHT * 4)); - if (!cudaProducer->pBuff) { - printf("CudaProducer: Failed to allocate image buffer\n"); - } - - checkCudaErrors(cuCtxPopCurrent(&cudaProducer->context)); - return status; -} - -void cudaProducerInit(test_cuda_producer_s *cudaProducer, EGLDisplay eglDisplay, - EGLStreamKHR eglStream, TestArgs *args) { - cudaProducer->fileName1 = args->infile1; - cudaProducer->fileName2 = args->infile2; - - cudaProducer->frameCount = 2; - cudaProducer->width = args->inputWidth; - cudaProducer->height = args->inputHeight; - cudaProducer->isARGB = args->isARGB; - cudaProducer->pitchLinearOutput = args->pitchLinearOutput; - - // Set cudaProducer default parameters - cudaProducer->eglDisplay = eglDisplay; - cudaProducer->eglStream = eglStream; -} - -CUresult cudaProducerDeinit(test_cuda_producer_s *cudaProducer) { - if (cudaProducer->pBuff) free(cudaProducer->pBuff); - - checkCudaErrors(cuMemFree(cudaProducer->cudaPtrARGB[0])); - checkCudaErrors(cuMemFree(cudaProducer->cudaPtrYUV[0])); - checkCudaErrors(cuMemFree(cudaProducer->cudaPtrYUV[1])); - checkCudaErrors(cuMemFree(cudaProducer->cudaPtrYUV[2])); - checkCudaErrors(cuArrayDestroy(cudaProducer->cudaArrARGB[0])); - checkCudaErrors(cuArrayDestroy(cudaProducer->cudaArrYUV[0])); - checkCudaErrors(cuArrayDestroy(cudaProducer->cudaArrYUV[1])); - checkCudaErrors(cuArrayDestroy(cudaProducer->cudaArrYUV[2])); - - return cuEGLStreamProducerDisconnect(&cudaProducer->cudaConn); -} diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_producer.h b/Samples/EGLStreams_CUDA_Interop/cuda_producer.h deleted file mode 100644 index 42e51d8d..00000000 --- a/Samples/EGLStreams_CUDA_Interop/cuda_producer.h +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// -// DESCRIPTION: Simple cuda producer header file -// - -#ifndef _CUDA_PRODUCER_H_ -#define _CUDA_PRODUCER_H_ -#include -#include -#include "cudaEGL.h" -#include "eglstrm_common.h" - -extern EGLStreamKHR eglStream; -extern EGLDisplay g_display; - -typedef struct _test_cuda_producer_s { - // Stream params - char *fileName1; - char *fileName2; - unsigned char *pBuff; - int frameCount; - bool isARGB; - bool pitchLinearOutput; - unsigned int width; - unsigned int height; - CUcontext context; - CUeglStreamConnection cudaConn; - CUdeviceptr cudaPtrARGB[1]; - CUdeviceptr cudaPtrYUV[3]; - CUarray cudaArrARGB[1]; - CUarray cudaArrYUV[3]; - EGLStreamKHR eglStream; - EGLDisplay eglDisplay; -} test_cuda_producer_s; - -void cudaProducerInit(test_cuda_producer_s *cudaProducer, EGLDisplay eglDisplay, - EGLStreamKHR eglStream, TestArgs *args); -CUresult cudaProducerTest(test_cuda_producer_s *parserArg, char *file); -CUresult cudaProducerDeinit(test_cuda_producer_s *cudaProducer); -CUresult cudaDeviceCreateProducer(test_cuda_producer_s *cudaProducer, - CUdevice device); -#endif diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_yuv_f_1.yuv b/Samples/EGLStreams_CUDA_Interop/cuda_yuv_f_1.yuv deleted file mode 100755 index 4e524775..00000000 Binary files a/Samples/EGLStreams_CUDA_Interop/cuda_yuv_f_1.yuv and /dev/null differ diff --git a/Samples/EGLStreams_CUDA_Interop/cuda_yuv_f_2.yuv b/Samples/EGLStreams_CUDA_Interop/cuda_yuv_f_2.yuv deleted file mode 100755 index e7791028..00000000 Binary files a/Samples/EGLStreams_CUDA_Interop/cuda_yuv_f_2.yuv and /dev/null differ diff --git a/Samples/EGLStreams_CUDA_Interop/eglstrm_common.cpp b/Samples/EGLStreams_CUDA_Interop/eglstrm_common.cpp deleted file mode 100644 index 130d81f6..00000000 --- a/Samples/EGLStreams_CUDA_Interop/eglstrm_common.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// -// DESCRIPTION: Common egl stream functions -// - -#include "eglstrm_common.h" - -EGLStreamKHR eglStream; -EGLDisplay g_display; -EGLAttrib cudaIndex; - -#if defined(EXTENSION_LIST) -EXTENSION_LIST(EXTLST_DECL) -typedef void (*extlst_fnptr_t)(void); -static struct { - extlst_fnptr_t *fnptr; - char const *name; -} extensionList[] = {EXTENSION_LIST(EXTLST_ENTRY)}; - -int eglSetupExtensions(void) { - unsigned int i; - - for (i = 0; i < (sizeof(extensionList) / sizeof(*extensionList)); i++) { - *extensionList[i].fnptr = eglGetProcAddress(extensionList[i].name); - if (*extensionList[i].fnptr == NULL) { - printf("Couldn't get address of %s()\n", extensionList[i].name); - return 0; - } - } - - return 1; -} - -int EGLStreamInit(int *cuda_device) { - static const EGLint streamAttrMailboxMode[] = {EGL_SUPPORT_REUSE_NV, - EGL_FALSE, EGL_NONE}; - EGLBoolean eglStatus; -#define MAX_EGL_DEVICES 4 - EGLint numDevices = 0; - EGLDeviceEXT devices[MAX_EGL_DEVICES]; - eglStatus = eglQueryDevicesEXT(MAX_EGL_DEVICES, devices, &numDevices); - if (eglStatus != EGL_TRUE) { - printf("Error querying EGL devices\n"); - exit(EXIT_FAILURE); - } - - if (numDevices == 0) { - printf("No EGL devices found.. Waiving\n"); - eglStatus = EGL_FALSE; - exit(EXIT_WAIVED); - } - - int egl_device_id = 0; - for (egl_device_id = 0; egl_device_id < numDevices; egl_device_id++) { - eglStatus = eglQueryDeviceAttribEXT(devices[egl_device_id], - EGL_CUDA_DEVICE_NV, &cudaIndex); - if (eglStatus == EGL_TRUE) { - *cuda_device = cudaIndex; // We select first EGL-CUDA Capable device. - printf("Found EGL-CUDA Capable device with CUDA Device id = %d\n", - (int)cudaIndex); - break; - } - } - - if (egl_device_id >= numDevices) { - printf("No CUDA Capable EGL Device found.. Waiving execution\n"); - exit(EXIT_WAIVED); - } - - g_display = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT, - (void *)devices[egl_device_id], NULL); - if (g_display == EGL_NO_DISPLAY) { - printf("Could not get EGL display from device. \n"); - eglStatus = EGL_FALSE; - exit(EXIT_FAILURE); - } - - eglStatus = eglInitialize(g_display, 0, 0); - if (!eglStatus) { - printf("EGL failed to initialize. \n"); - eglStatus = EGL_FALSE; - exit(EXIT_FAILURE); - } - - eglStream = eglCreateStreamKHR(g_display, streamAttrMailboxMode); - if (eglStream == EGL_NO_STREAM_KHR) { - printf("Could not create EGL stream.\n"); - eglStatus = EGL_FALSE; - exit(EXIT_FAILURE); - } - - printf("Created EGLStream %p\n", eglStream); - - // Set stream attribute - if (!eglStreamAttribKHR(g_display, eglStream, EGL_CONSUMER_LATENCY_USEC_KHR, - 16000)) { - printf( - "Consumer: eglStreamAttribKHR EGL_CONSUMER_LATENCY_USEC_KHR failed\n"); - return 0; - } - if (!eglStreamAttribKHR(g_display, eglStream, - EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR, 16000)) { - printf( - "Consumer: eglStreamAttribKHR EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR " - "failed\n"); - return 0; - } - printf("EGLStream initialized\n"); - return 1; -} - -void EGLStreamFini(void) { eglDestroyStreamKHR(g_display, eglStream); } -#endif diff --git a/Samples/EGLStreams_CUDA_Interop/eglstrm_common.h b/Samples/EGLStreams_CUDA_Interop/eglstrm_common.h deleted file mode 100644 index dfb24134..00000000 --- a/Samples/EGLStreams_CUDA_Interop/eglstrm_common.h +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// -// DESCRIPTION: Common EGL stream functions header file -// - -#ifndef _EGLSTRM_COMMON_H_ -#define _EGLSTRM_COMMON_H_ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cuda.h" -#include "cudaEGL.h" -#include "helper_cuda_drvapi.h" - -#define EXTENSION_LIST(T) \ - T(PFNEGLCREATESTREAMKHRPROC, eglCreateStreamKHR) \ - T(PFNEGLDESTROYSTREAMKHRPROC, eglDestroyStreamKHR) \ - T(PFNEGLQUERYSTREAMKHRPROC, eglQueryStreamKHR) \ - T(PFNEGLQUERYSTREAMU64KHRPROC, eglQueryStreamu64KHR) \ - T(PFNEGLQUERYSTREAMTIMEKHRPROC, eglQueryStreamTimeKHR) \ - T(PFNEGLSTREAMATTRIBKHRPROC, eglStreamAttribKHR) \ - T(PFNEGLSTREAMCONSUMERACQUIREKHRPROC, eglStreamConsumerAcquireKHR) \ - T(PFNEGLSTREAMCONSUMERRELEASEKHRPROC, eglStreamConsumerReleaseKHR) \ - T(PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC, \ - eglStreamConsumerGLTextureExternalKHR) \ - T(PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC, eglGetStreamFileDescriptorKHR) \ - T(PFNEGLQUERYDEVICESEXTPROC, eglQueryDevicesEXT) \ - T(PFNEGLGETPLATFORMDISPLAYEXTPROC, eglGetPlatformDisplayEXT) \ - T(PFNEGLQUERYDEVICEATTRIBEXTPROC, eglQueryDeviceAttribEXT) \ - T(PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC, \ - eglCreateStreamFromFileDescriptorKHR) - -#define eglCreateStreamKHR my_eglCreateStreamKHR -#define eglDestroyStreamKHR my_eglDestroyStreamKHR -#define eglQueryStreamKHR my_eglQueryStreamKHR -#define eglQueryStreamu64KHR my_eglQueryStreamu64KHR -#define eglQueryStreamTimeKHR my_eglQueryStreamTimeKHR -#define eglStreamAttribKHR my_eglStreamAttribKHR -#define eglStreamConsumerAcquireKHR my_eglStreamConsumerAcquireKHR -#define eglStreamConsumerReleaseKHR my_eglStreamConsumerReleaseKHR -#define eglStreamConsumerGLTextureExternalKHR \ - my_eglStreamConsumerGLTextureExternalKHR -#define eglGetStreamFileDescriptorKHR my_eglGetStreamFileDescriptorKHR -#define eglCreateStreamFromFileDescriptorKHR \ - my_eglCreateStreamFromFileDescriptorKHR -#define eglQueryDevicesEXT my_eglQueryDevicesEXT -#define eglGetPlatformDisplayEXT my_eglGetPlatformDisplayEXT -#define eglQueryDeviceAttribEXT my_eglQueryDeviceAttribEXT - -#define EXTLST_DECL(tx, x) tx my_##x = NULL; -#define EXTLST_EXTERN(tx, x) extern tx my_##x; -#define EXTLST_ENTRY(tx, x) {(extlst_fnptr_t *)&my_##x, #x}, - -#define MAX_STRING_SIZE 256 -#define WIDTH 720 -#define HEIGHT 480 - -typedef struct _TestArgs { - char *infile1; - char *infile2; - bool isARGB; - unsigned int inputWidth; - unsigned int inputHeight; - bool pitchLinearOutput; -} TestArgs; - -int eglSetupExtensions(void); -int EGLStreamInit(int *dev); -void EGLStreamFini(void); -#endif diff --git a/Samples/EGLStreams_CUDA_Interop/findegl.mk b/Samples/EGLStreams_CUDA_Interop/findegl.mk deleted file mode 100644 index 242b8592..00000000 --- a/Samples/EGLStreams_CUDA_Interop/findegl.mk +++ /dev/null @@ -1,160 +0,0 @@ -################################################################################ -# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of NVIDIA CORPORATION nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -################################################################################ -# -# findegl.mk is used to find the necessary EGL Libraries for specific distributions -# this is supported on Linux -# -################################################################################ - -# Determine OS platform and unix distribution -ifeq ("$(TARGET_OS)","linux") - # first search lsb_release - DISTRO = $(shell lsb_release -i -s 2>/dev/null | tr "[:upper:]" "[:lower:]") - ifeq ("$(DISTRO)","") - # second search and parse /etc/issue - DISTRO = $(shell more /etc/issue | awk '{print $$1}' | sed '1!d' | sed -e "/^$$/d" 2>/dev/null | tr "[:upper:]" "[:lower:]") - # ensure data from /etc/issue is valid - ifeq (,$(filter $(DISTRO),ubuntu fedora red rhel centos suse)) - DISTRO = - endif - ifeq ("$(DISTRO)","") - # third, we can search in /etc/os-release or /etc/{distro}-release - DISTRO = $(shell awk '/ID/' /etc/*-release | sed 's/ID=//' | grep -v "VERSION" | grep -v "ID" | grep -v "DISTRIB") - endif - endif -endif - -ifeq ("$(TARGET_OS)","linux") - # $(info) >> findegl.mk -> LINUX path <<<) - # Each set of Linux Distros have different paths for where to find their OpenGL libraries reside - UBUNTU = $(shell echo $(DISTRO) | grep -i ubuntu >/dev/null 2>&1; echo $$?) - FEDORA = $(shell echo $(DISTRO) | grep -i fedora >/dev/null 2>&1; echo $$?) - RHEL = $(shell echo $(DISTRO) | grep -i 'red\|rhel' >/dev/null 2>&1; echo $$?) - CENTOS = $(shell echo $(DISTRO) | grep -i centos >/dev/null 2>&1; echo $$?) - SUSE = $(shell echo $(DISTRO) | grep -i 'suse\|sles' >/dev/null 2>&1; echo $$?) - ifeq ("$(UBUNTU)","0") - ifeq ($(HOST_ARCH)-$(TARGET_ARCH),x86_64-armv7l) - GLPATH := /usr/arm-linux-gnueabihf/lib - GLLINK := -L/usr/arm-linux-gnueabihf/lib - ifneq ($(TARGET_FS),) - GLPATH += $(TARGET_FS)/usr/lib/arm-linux-gnueabihf - GLLINK += -L$(TARGET_FS)/usr/lib/arm-linux-gnueabihf - endif - else ifeq ($(HOST_ARCH)-$(TARGET_ARCH),x86_64-aarch64) - GLPATH := /usr/aarch64-linux-gnu/lib - GLLINK := -L/usr/aarch64-linux-gnu/lib - ifneq ($(TARGET_FS),) - GLPATH += $(TARGET_FS)/usr/lib - GLPATH += $(TARGET_FS)/usr/lib/aarch64-linux-gnu - GLLINK += -L$(TARGET_FS)/usr/lib/aarch64-linux-gnu - endif - else - UBUNTU_PKG_NAME = $(shell which dpkg >/dev/null 2>&1 && dpkg -l 'nvidia-*' | grep '^ii' | awk '{print $$2}' | head -1) - ifneq ("$(UBUNTU_PKG_NAME)","") - GLPATH ?= /usr/lib/$(UBUNTU_PKG_NAME) - GLLINK ?= -L/usr/lib/$(UBUNTU_PKG_NAME) - endif - - DFLT_PATH ?= /usr/lib - endif - endif - ifeq ("$(SUSE)","0") - GLPATH ?= /usr/X11R6/lib64 - GLLINK ?= -L/usr/X11R6/lib64 - DFLT_PATH ?= /usr/lib64 - endif - ifeq ("$(FEDORA)","0") - GLPATH ?= /usr/lib64/nvidia - GLLINK ?= -L/usr/lib64/nvidia - DFLT_PATH ?= /usr/lib64 - endif - ifeq ("$(RHEL)","0") - GLPATH ?= /usr/lib64/nvidia - GLLINK ?= -L/usr/lib64/nvidia - DFLT_PATH ?= /usr/lib64 - endif - ifeq ("$(CENTOS)","0") - GLPATH ?= /usr/lib64/nvidia - GLLINK ?= -L/usr/lib64/nvidia - DFLT_PATH ?= /usr/lib64 - endif - - EGLLIB := $(shell find -L $(GLPATH) $(DFLT_PATH) -name libEGL.so -print 2>/dev/null) - - ifeq ("$(EGLLIB)","") - $(info >>> WARNING - libEGL.so not found, please install libEGL.so <<<) - SAMPLE_ENABLED := 0 - endif - - HEADER_SEARCH_PATH ?= $(TARGET_FS)/usr/include - ifeq ($(HOST_ARCH)-$(TARGET_ARCH)-$(TARGET_OS),x86_64-armv7l-linux) - HEADER_SEARCH_PATH += /usr/arm-linux-gnueabihf/include - else ifeq ($(HOST_ARCH)-$(TARGET_ARCH)-$(TARGET_OS),x86_64-aarch64-linux) - HEADER_SEARCH_PATH += /usr/aarch64-linux-gnu/include - endif - - EGLHEADER := $(shell find -L $(HEADER_SEARCH_PATH) -name egl.h -print 2>/dev/null) - EGLEXTHEADER := $(shell find -L $(HEADER_SEARCH_PATH) -name eglext.h -print 2>/dev/null) - - ifeq ("$(EGLHEADER)","") - $(info >>> WARNING - egl.h not found, please install egl.h <<<) - SAMPLE_ENABLED := 0 - endif - ifeq ("$(EGLEXTHEADER)","") - $(info >>> WARNING - eglext.h not found, please install eglext.h <<<) - SAMPLE_ENABLED := 0 - endif -else -endif - -ifeq ("$(TARGET_OS)","qnx") - HOST_CCFLAGS := -V5.4.0,gcc_ntoaarch64le -endif - -# Attempt to compile a minimal EGL application and run to check if EGL_SUPPORT_REUSE_NV is supported in the EGL headers available. -ifneq ($(SAMPLE_ENABLED), 0) - $(shell printf "#include \n#include \nint main() {\n#ifdef EGL_SUPPORT_REUSE_NV \n #error \"Compatible EGL header found\" \n return 0;\n#endif \n return 1;\n}" > test.c; ) - EGL_DEFINES := $(shell $(HOST_COMPILER) $(HOST_CCFLAGS) $(CCFLAGS) $(EXTRA_CCFLAGS) -lEGL test.c -c 2>&1 | grep -ic "Compatible EGL header found";) - SHOULD_WAIVE := 0 - ifeq ($(EGL_DEFINES),0) - SHOULD_WAIVE := 1 - endif - ifeq ($(SHOULD_WAIVE),1) - $(info -----------------------------------------------------------------------------------------------) - $(info WARNING - NVIDIA EGL EXTENSIONS are not available in the present EGL headers) - $(info -----------------------------------------------------------------------------------------------) - $(info This CUDA Sample cannot be built if the EGL NVIDIA EXTENSIONS like EGL_SUPPORT_REUSE_NV are not supported in EGL headers.) - $(info This will be a dry-run of the Makefile.) - $(info Please install the latest khronos EGL headers and libs to build this sample) - $(info -----------------------------------------------------------------------------------------------) - SAMPLE_ENABLED := 0 - endif - $(shell rm test.o test.c 2>/dev/null) -endif - diff --git a/Samples/EGLStreams_CUDA_Interop/main.cpp b/Samples/EGLStreams_CUDA_Interop/main.cpp deleted file mode 100644 index 9c0c1826..00000000 --- a/Samples/EGLStreams_CUDA_Interop/main.cpp +++ /dev/null @@ -1,231 +0,0 @@ -/* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of NVIDIA CORPORATION nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -// -// DESCRIPTION: Simple EGL stream sample app -// -// - -//#define EGL_EGLEXT_PROTOTYPES - -#include "cudaEGL.h" -#include "cuda_consumer.h" -#include "cuda_producer.h" -#include "eglstrm_common.h" - -/* ------ globals ---------*/ - -#if defined(EXTENSION_LIST) -EXTENSION_LIST(EXTLST_EXTERN) -#endif - -#define NUM_TRAILS 4 - -bool signal_stop = 0; - -static void sig_handler(int sig) { - signal_stop = 1; - printf("Signal: %d\n", sig); -} - -int main(int argc, char **argv) { - TestArgs args; - CUresult curesult = CUDA_SUCCESS; - unsigned int i, j; - EGLint streamState = 0; - - test_cuda_consumer_s cudaConsumer; - test_cuda_producer_s cudaProducer; - - memset(&cudaProducer, 0, sizeof(test_cuda_producer_s)); - memset(&cudaConsumer, 0, sizeof(test_cuda_consumer_s)); - - // Hook up Ctrl-C handler - signal(SIGINT, sig_handler); - if (!eglSetupExtensions()) { - printf("SetupExtentions failed \n"); - curesult = CUDA_ERROR_UNKNOWN; - goto done; - } - - checkCudaErrors(cuInit(0)); - - int count; - - checkCudaErrors(cuDeviceGetCount(&count)); - printf("Found %d cuda devices\n", count); - - CUdevice devId; - - if (!EGLStreamInit(&devId)) { - printf("EGLStream Init failed.\n"); - curesult = CUDA_ERROR_UNKNOWN; - goto done; - } - curesult = cudaDeviceCreateProducer(&cudaProducer, devId); - if (curesult != CUDA_SUCCESS) { - goto done; - } - curesult = cudaDeviceCreateConsumer(&cudaConsumer, devId); - if (curesult != CUDA_SUCCESS) { - goto done; - } - checkCudaErrors(cuCtxPushCurrent(cudaConsumer.context)); - if (CUDA_SUCCESS != (curesult = cuEGLStreamConsumerConnect( - &(cudaConsumer.cudaConn), eglStream))) { - printf("FAILED Connect CUDA consumer with error %d\n", curesult); - goto done; - } else { - printf("Connected CUDA consumer, CudaConsumer %p\n", cudaConsumer.cudaConn); - } - checkCudaErrors(cuCtxPopCurrent(&cudaConsumer.context)); - - checkCudaErrors(cuCtxPushCurrent(cudaProducer.context)); - if (CUDA_SUCCESS == - (curesult = cuEGLStreamProducerConnect(&(cudaProducer.cudaConn), - eglStream, WIDTH, HEIGHT))) { - printf("Connect CUDA producer Done, CudaProducer %p\n", - cudaProducer.cudaConn); - } else { - printf("Connect CUDA producer FAILED with error %d\n", curesult); - goto done; - } - checkCudaErrors(cuCtxPopCurrent(&cudaProducer.context)); - - // Initialize producer - for (i = 0; i < NUM_TRAILS; i++) { - if (streamState != EGL_STREAM_STATE_CONNECTING_KHR) { - if (!eglQueryStreamKHR(g_display, eglStream, EGL_STREAM_STATE_KHR, - &streamState)) { - printf("main: eglQueryStreamKHR EGL_STREAM_STATE_KHR failed\n"); - curesult = CUDA_ERROR_UNKNOWN; - goto done; - } - } - args.inputWidth = WIDTH; - args.inputHeight = HEIGHT; - if (i % 2 != 0) { - args.isARGB = 1; - args.infile1 = sdkFindFilePath("cuda_f_1.yuv", argv[0]); - args.infile2 = sdkFindFilePath("cuda_f_2.yuv", argv[0]); - } else { - args.isARGB = 0; - args.infile1 = sdkFindFilePath("cuda_yuv_f_1.yuv", argv[0]); - args.infile2 = sdkFindFilePath("cuda_yuv_f_2.yuv", argv[0]); - } - if ((i % 4) < 2) { - args.pitchLinearOutput = 1; - } else { - args.pitchLinearOutput = 0; - } - - checkCudaErrors(cuCtxPushCurrent(cudaProducer.context)); - cudaProducerInit(&cudaProducer, g_display, eglStream, &args); - checkCudaErrors(cuCtxPopCurrent(&cudaProducer.context)); - - checkCudaErrors(cuCtxPushCurrent(cudaConsumer.context)); - cuda_consumer_init(&cudaConsumer, &args); - checkCudaErrors(cuCtxPopCurrent(&cudaConsumer.context)); - - printf("main - Cuda Producer and Consumer Initialized.\n"); - - for (j = 0; j < 2; j++) { - printf("Running for %s frame and %s input\n", - args.isARGB ? "ARGB" : "YUV", - args.pitchLinearOutput ? "Pitchlinear" : "BlockLinear"); - if (j == 0) { - checkCudaErrors(cuCtxPushCurrent(cudaProducer.context)); - curesult = cudaProducerTest(&cudaProducer, cudaProducer.fileName1); - if (curesult != CUDA_SUCCESS) { - printf("Cuda Producer Test failed for frame = %d\n", j + 1); - goto done; - } - checkCudaErrors(cuCtxPopCurrent(&cudaProducer.context)); - checkCudaErrors(cuCtxPushCurrent(cudaConsumer.context)); - curesult = cudaConsumerTest(&cudaConsumer, cudaConsumer.outFile1); - if (curesult != CUDA_SUCCESS) { - printf("Cuda Consumer Test failed for frame = %d\n", j + 1); - goto done; - } - checkCudaErrors(cuCtxPopCurrent(&cudaConsumer.context)); - } else { - checkCudaErrors(cuCtxPushCurrent(cudaProducer.context)); - curesult = cudaProducerTest(&cudaProducer, cudaProducer.fileName2); - if (curesult != CUDA_SUCCESS) { - printf("Cuda Producer Test failed for frame = %d\n", j + 1); - goto done; - } - - checkCudaErrors(cuCtxPopCurrent(&cudaProducer.context)); - checkCudaErrors(cuCtxPushCurrent(cudaConsumer.context)); - curesult = cudaConsumerTest(&cudaConsumer, cudaConsumer.outFile2); - if (curesult != CUDA_SUCCESS) { - printf("Cuda Consumer Test failed for frame = %d\n", j + 1); - goto done; - } - checkCudaErrors(cuCtxPopCurrent(&cudaConsumer.context)); - } - } - } - - checkCudaErrors(cuCtxPushCurrent(cudaProducer.context)); - if (CUDA_SUCCESS != (curesult = cudaProducerDeinit(&cudaProducer))) { - printf("Producer Disconnect FAILED. \n"); - goto done; - } - checkCudaErrors(cuCtxPopCurrent(&cudaProducer.context)); - - if (!eglQueryStreamKHR(g_display, eglStream, EGL_STREAM_STATE_KHR, - &streamState)) { - printf("Cuda consumer, eglQueryStreamKHR EGL_STREAM_STATE_KHR failed\n"); - curesult = CUDA_ERROR_UNKNOWN; - goto done; - } - if (streamState != EGL_STREAM_STATE_DISCONNECTED_KHR) { - if (CUDA_SUCCESS != (curesult = cuda_consumer_deinit(&cudaConsumer))) { - printf("Consumer Disconnect FAILED.\n"); - goto done; - } - } - printf("Producer and Consumer Disconnected \n"); - -done: - if (!eglQueryStreamKHR(g_display, eglStream, EGL_STREAM_STATE_KHR, - &streamState)) { - printf("Cuda consumer, eglQueryStreamKHR EGL_STREAM_STATE_KHR failed\n"); - curesult = CUDA_ERROR_UNKNOWN; - } - if (streamState != EGL_STREAM_STATE_DISCONNECTED_KHR) { - EGLStreamFini(); - } - - if (curesult == CUDA_SUCCESS) { - printf("&&&& EGLStream interop test PASSED\n"); - } else { - printf("&&&& EGLStream interop test FAILED\n"); - } - return 0; -}