Aleksoid1978 / VideoRenderer

Внешний видео-рендерер
GNU General Public License v3.0
1.03k stars 115 forks source link

When using d3d11, subs cannot be rendered #28

Closed hooke007 closed 3 years ago

hooke007 commented 3 years ago

If selecting the option "use direct3d 11", subs cannot be rendered by the mpc-be's internal sub-renderer. I have to use the xysubfilter instead to show the subtitle in that case.

ps. MPC-BE.1.5.7.6180.x64 MPCVideoRenderer_git_0.5.3.1689_x64

Aleksoid1978 commented 3 years ago

All working perfect. Try reset settings. Show filter list in MPC-BE. What subtitles ?

hooke007 commented 3 years ago

MPC-BE 1.5.7.6180 Filters currently loaded:

default setting is OK. But selecting "use direct3d 11" is not OK.

Any kinds of subs.

d3d9-ty d3d11-ty

Aleksoid1978 commented 3 years ago

Try latest version. latest_x64.zip

hooke007 commented 3 years ago

No, it doesn't work.

Aleksoid1978 commented 3 years ago

Hmm, can’t help. works for everyone except you.

hooke007 commented 3 years ago

Hmm..Sorry, I heard the issue from my friends and reproduced it in my PC. (He doesn't know where to post the bug.) Maybe keep it open to see if more people will meet this kind of problem.

Aleksoid1978 commented 3 years ago

Video driver latest ?

hooke007 commented 3 years ago

Yes.

Aleksoid1978 commented 3 years ago

Here debug build + DbgView. run DbgView, then player, open video with subtitles, close player, save log in DbgView and upload for me. MPCVideoRenderer-0.5.3.1699_git2021.04.08-1c833a0_Debug.zip

hooke007 commented 3 years ago

d3d11.LOG

Aleksoid1978 commented 3 years ago

Something wrong, can't create shared texture DX9 -> DX11(it use for subtitles render). Some incompatibles.

hooke007 commented 3 years ago

I have some findings to help. My device is laptop which have two GPU. when I use the internal monitor. The output was totally controlled by iGPU and it's OK. When I use the external monitor, 2070 control the output. In this case, d3d11 cannot show the subs.

Aleksoid1978 commented 3 years ago

We don't have such hardware, can't help.

clsid2 commented 3 years ago

https://docs.microsoft.com/en-us/windows/win32/api/d3d11/nf-d3d11-id3d11device-opensharedresource

Maybe wrong interface used in call to OpenSharedResource()? Use D3D9 texture instead of D3D11 texture?

Aleksoid1978 commented 3 years ago

No - all is good :)

hooke007 commented 3 years ago

https://docs.microsoft.com/en-us/windows/win32/api/d3d11/nf-d3d11-id3d11device-opensharedresource

Maybe wrong interface used in call to OpenSharedResource()? Use D3D9 texture instead of D3D11 texture?

I don't know the differences about the internal sub-renderer between HC and BE. HC's internal sub-renderer can show the subs.

Aleksoid1978 commented 3 years ago

Hm, the same HC/BE.

Aleksoid1978 commented 3 years ago

It's Nvidia Optimus. Maybe MPC-HC set to Nvidia but MPC-BE to Intel or auto. Try set MPC-BE as MPC-HC or something else :)

hooke007 commented 3 years ago

A good solution. I firstly forced it to run by Nvidia in the driver settings but failed again. So I use the Nvidia Inspector to add the be with hc. It works! Snipaste_2021-04-23_19-40-07