- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I developed a h264 decoder by referring sample_decode module from media SDK samples 2016. I am running this decoder on a windows7 machine having Intel HD Graphics 4600 card.My requirement is to display decoding results on multiple monitors.My system supports display output to multiple monitors, all displays is connectedto the output of a graphics adapter. The graphics adapter supports multiple displays.
Now what I am observing is that using multiple monitors to display worse decoding and displaying performance than Multi-screen display on a monitor.
So my question is:
Is it using multiple monitors to display will has a bad effect on decode and display by D3D9_MEMORY?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
StretchRect can be slow or fast, depending on platform (depending on the D3D9 device used). The D3D9 device is responsible for the window (display) is used. If using 2 displays with Intel gfx, we highly recommend using the "Collage" mode that is available, which makes one desktop surface that displays to both screens. This allows the OS, drivers and HW to be more efficient. In this case, everything is seen as one surface, supported by one gfx device. Otherwise, your working with 2 devices, and D3D9 is not the best at that. D3D11 architecture was created to resolve many of surface sharing issues that D3D9 architecture has.
Collage mode can be selected from Intel Graphics Control Panel -> Display -> Multiple Displays -> Collage (Enable).
This should be able to help you if all monitors are attached to Intel gfx HW.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
May I know what do you mean by multiscreen vs multiple-monitor? Can you elaborate your test setup?
are you decoding multiple streams and rendering them on individual displays?
OR are you decoding single stream and rendering them on multiple displays?
I need to also know which graphics driver is installed in your machine. For this, can you please send the system_analyzer log? This tool can be found “<install-folder>\tools\mediasdk_sys_analyzer\”. Run the exe and attach a copy of this log. Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for the detailed attachments.
I would like to also know specifics about your rendering pattern.
In split-screen mode, are you arranging all your rendering surfaces on the monitor? In a way to watch all of them in-parallel or just rendering them irrespective of the arrangement (surface over a surface)? I am trying to know how many active rendering surfaces you are displaying at once.
In multi-monitor mode, hope you are rendering individual streams in their respective monitors (may be or may not be full-screen but definitely larger rendering surface size than split-screen case)!
Need to make sure if we are comparing two similar use-cases or different ones!
Can you also let me know what kind of performance difference are you observing between these two use-cases? Do you have any numbers?
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,Nikhil
Sorry for my poor English!
It's my response.
Rendering pattern:
Voide memory + Direct3d9
Render Code: surface to surface
DevInfo.pD3DD9->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0); // DevInfo.pD3DD9->BeginScene(); CComPtr<IDirect3DSurface9> pBackBuffer; hr = DevInfo.pD3DD9->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer); // directxMemId* dxMemId = (directxMemId*)pSurface->Data.MemId; IDirect3DSurface9* pBackBuffer1= (IDirect3DSurface9*)pSurface->Data.MemId; hr = DevInfo.pD3DD9->StretchRect(pBackBuffer1, NULL, pBackBuffer, NULL, D3DTEXF_LINEAR); // DevInfo.pD3DD9->EndScene(); if (FAILED(hr)) { return MFX_ERR_UNKNOWN; } if (SUCCEEDED(hr)) { hr = DevInfo.pD3DD9->Present(NULL, NULL, NULL, NULL); } pBackBuffer.Release();
In split-screen mode
Active rendering surfaces displaying at once: 16
watch all of them in-parallel
In multi-monitor mode
Display all my rendering surfaces on three monitors.
Detail is on attachment.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
StretchRect can be slow or fast, depending on platform (depending on the D3D9 device used). The D3D9 device is responsible for the window (display) is used. If using 2 displays with Intel gfx, we highly recommend using the "Collage" mode that is available, which makes one desktop surface that displays to both screens. This allows the OS, drivers and HW to be more efficient. In this case, everything is seen as one surface, supported by one gfx device. Otherwise, your working with 2 devices, and D3D9 is not the best at that. D3D11 architecture was created to resolve many of surface sharing issues that D3D9 architecture has.
Collage mode can be selected from Intel Graphics Control Panel -> Display -> Multiple Displays -> Collage (Enable).
This should be able to help you if all monitors are attached to Intel gfx HW.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,Nikhil
Thanks for your reply.I will attempt to Collage and d3d11.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page