MX150 seems not to support NVDEC/NVENC in Windows 10.

I have GPU MX150 installed on my laptop with:
Windows 10 pro 64-bit
NVIDIA Driver 430
CUDA SDK 10.1
Video Codec SDK 9.0.20

C:\Windows\System32 found:
nvcuvid.dll 7.17.14.3086
nvEncodeAPI64.dll not existed.

The problem I am facing: NVDEC and NVENC do not work.

I checked decoding/encoding capabilities via running the samples which is a part of Video_Codec_SDK_9.0.20 package.

Specifically, the call to cuvidGetDecoderCaps() function with input:
eCodecType = cudaVideoCodec_H264;
eChromaFormat = cudaVideoChromaFormat_420;
bBitDepthMinus8 = 0;

output: CUVIDDECODECAPS object contains most zero values except input members.

For encoder, I built and ran AppEncCuda. The sample stops at point it could not load “nvEncoderAPI64.dll”.
I don’t know why the dll does not exist thought the driver was installed successfully.

I am confused if this model really supports NVDEC/NVENC or not. If it does, can anyone point me how to make them work.

Thanks.

https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
MX150==GP108, NVENC unsupported, NVDEC supported, use DirectX API.

Thanks for your tip.

Where do you get information source saying that NVDEC of MX150 is supported via (only) DirectX API?

Actually my laptop has two GPUs, one is built-in Intel 620 and another is NVIDIA MX150.
Here are symptoms I found when I opened HW decoder for h264 stream via FFmpeg-4.1.3’s sample hw_decode.c:

dxva2.c
DEFINE_GUID(ff_DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65,0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
DEFINE_GUID(ff_DXVA2_ModeMPEG2and1_VLD, 0x86695f12, 0x340e,0x4f04,0x9f,0xd3,0x92,0x53,0xdd,0x32,0x74,0x60);
DEFINE_GUID(ff_DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
DEFINE_GUID(ff_DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
… more items here

Case 1:
When 620 is enabled and MX150 is enabled: no one among d3d11, dxva, qsv and cuda works.
The failure point:

static int d3d11va_create_decoder(AVCodecContext *avctx)
{
...
    guid_count = ID3D11VideoDevice_GetVideoDecoderProfileCount(device_hwctx->video_device);

    for (i = 0; i < guid_count; i++) {
        hr = ID3D11VideoDevice_GetVideoDecoderProfile(device_hwctx->video_device, i, &guid_list[i]);
    }

 // functions above return guid_count = 2, guid_list[2] stores:
 // 33fcfe41-de46-4a49-861b-ac71110649d5
 // 914c84a3-4078-4fa9-984c-e2f262cb5c9c

 // no guid matching to pre-defined deciders' guid-list 
 // therefore the configuration ends up failure.


...
}

Case 2:
When 620 is enabled and MX150 is disabled: d3d11 and dxva work.

static int d3d11va_create_decoder(AVCodecContext *avctx)
{
...
    guid_count = ID3D11VideoDevice_GetVideoDecoderProfileCount(device_hwctx->video_device);

    for (i = 0; i < guid_count; i++) {
        hr = ID3D11VideoDevice_GetVideoDecoderProfile(device_hwctx->video_device, i, &guid_list[i]);
    }

 // functions above return guid_count = 36, guid_list[36] contains a guid matching to DEFINE_GUID(ff_DXVA2_ModeH264_E, ..)
 // therefore the configuration successfully.


...
}

Case 3:
When 620 is disabled and MX1500 is enabled: no one works.
The failure point:

static int d3d11va_device_init(AVHWDeviceContext *hwdev)
{
...
   hr = ID3D11DeviceContext_QueryInterface(device_hwctx->device, &IID_ID3D11VideoDevice,
                                                (void **)&device_hwctx->video_device);												
   hr = E_NOINTERFACE // No such interface supported.
...
}

I do not write “only”. Your first post shows some problems with CUDA so you should try with DX.
So, if no one is able to use NVDEC in GP108, let’s define GP108 (mobile variants) are unsupported with NVDEC like GM108.

refs:
https://devtalk.nvidia.com/default/topic/1043663/
https://devtalk.nvidia.com/default/topic/1039017/
https://devtalk.nvidia.com/default/topic/1022888/

Sorry. My confusion.

So likely I wasted addition money to have a laptop just because it has MX150 GPU.
Surprisingly, NVIDA has no official document mentioning about codec capabilities of MX150.

You can check encoder/decoder support here https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new