NV_ENC_ERR_UNSUPPORTED_DEVICE on Quadro RTX3000 mobile

nvEncOpenEncodeSessionEx returns “NV_ENC_ERR_UNSUPPORTED_DEVICE” on my laptop.

Information

Cuda device name “NVIDIA Quadro RTX 3000”
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR is 7
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR is 5

NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS.version = NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER;
NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS.deviceType = NV_ENC_DEVICE_TYPE_CUDA;
NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS…apiVersion = NVENCAPI_VERSION;

Nvidia driver version 465.89 …

It’s a Lenovo P53 laptop: Windows 10. 19042.985

Please help. Why does it say that it’s not supported???

FULL Simplified C++ code given:

#include <stdio.h>
#include <stdlib.h>

#include <nvEncodeAPI.h>
#include <cuda.h>
#include <cuda_runtime.h>

void VideoEncode::TestEncoder()
{
NV_ENCODE_API_FUNCTION_LIST* m_pEncodeAPI;
NVENCSTATUS nvStatus;

void* m_hEncoder = nullptr;

uint32_t version = 0;
uint32_t currentVersion = (NVENCAPI_MAJOR_VERSION << 4) | NVENCAPI_MINOR_VERSION;
NvEncodeAPIGetMaxSupportedVersion(&version);

m_pEncodeAPI = new NV_ENCODE_API_FUNCTION_LIST;
if (m_pEncodeAPI == NULL)
	return;

memset(m_pEncodeAPI, 0, sizeof(NV_ENCODE_API_FUNCTION_LIST));
m_pEncodeAPI->version = NV_ENCODE_API_FUNCTION_LIST_VER;
nvStatus = NvEncodeAPICreateInstance(m_pEncodeAPI);
if (nvStatus != NV_ENC_SUCCESS)
	return;

if (!m_pEncodeAPI->nvEncOpenEncodeSession)
{
	return;
}

int devID;
cudaGetDevice(&devID);
cudaDeviceProp props;
cudaGetDeviceProperties(&props, devID);

CUresult a;
CUcontext m_pCUcontext = nullptr;
CUdevice device;
cuInit(0);
int count = 0;
cuDeviceGet(&device, 0);

char name[256];
int compute_capability_major;
int compute_capability_minor;
cuDeviceGetName(name, sizeof(name), device);
cuDeviceGetAttribute(&compute_capability_major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, device);
cuDeviceGetAttribute(&compute_capability_minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, device);
cudaSetDevice(device);
cuCtxGetCurrent(&m_pCUcontext);

NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS openSessionExParams;// = { NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER };
memset(&openSessionExParams, 0, sizeof(openSessionExParams));
openSessionExParams.version = NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER;
openSessionExParams.deviceType = NV_ENC_DEVICE_TYPE_CUDA;
openSessionExParams.device = m_pCUcontext;
openSessionExParams.reserved = 0;
openSessionExParams.apiVersion = NVENCAPI_VERSION;

nvStatus = m_pEncodeAPI->nvEncOpenEncodeSessionEx(&openSessionExParams, &m_hEncoder);

if (nvStatus != NV_ENC_SUCCESS)
	printf("IT ENDS UP HERE WITH NV_ENC_ERR_UNSUPPORTED_DEVICE");

}