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;
-}