[vlc-commits] d3d11_fmt: add a function to create the render targets for a texture

Steve Lhomme git at videolan.org
Mon May 28 13:25:36 CEST 2018


vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Jan  9 14:26:06 2018 +0100| [cfc6df0a17d32bdbfdc318567a633a1e85eb6a9b] | committer: Steve Lhomme

d3d11_fmt: add a function to create the render targets for a texture

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cfc6df0a17d32bdbfdc318567a633a1e85eb6a9b
---

 modules/video_output/win32/d3d11_shaders.c | 23 +++++++++++++++++++++++
 modules/video_output/win32/d3d11_shaders.h |  3 +++
 2 files changed, 26 insertions(+)

diff --git a/modules/video_output/win32/d3d11_shaders.c b/modules/video_output/win32/d3d11_shaders.c
index 8cb113e7ba..747916f1bb 100644
--- a/modules/video_output/win32/d3d11_shaders.c
+++ b/modules/video_output/win32/d3d11_shaders.c
@@ -514,3 +514,26 @@ float GetFormatLuminance(vlc_object_t *o, const video_format_t *fmt)
             return DEFAULT_BRIGHTNESS;
     }
 }
+
+HRESULT D3D11_CreateRenderTargets( d3d11_device_t *d3d_dev, ID3D11Resource *texture,
+                                   const d3d_format_t *cfg, ID3D11RenderTargetView *output[D3D11_MAX_SHADER_VIEW] )
+{
+    D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDesc;
+    renderTargetViewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
+    renderTargetViewDesc.Texture2D.MipSlice = 0;
+
+    for (size_t i=0; i<D3D11_MAX_SHADER_VIEW; i++)
+    {
+        if (cfg->resourceFormat[i])
+        {
+            renderTargetViewDesc.Format = cfg->resourceFormat[i];
+            HRESULT hr = ID3D11Device_CreateRenderTargetView(d3d_dev->d3ddevice, texture,
+                                                             &renderTargetViewDesc, &output[i]);
+            if (FAILED(hr))
+            {
+                return hr;
+            }
+        }
+    }
+    return S_OK;
+}
diff --git a/modules/video_output/win32/d3d11_shaders.h b/modules/video_output/win32/d3d11_shaders.h
index 260688b356..b668f79fb8 100644
--- a/modules/video_output/win32/d3d11_shaders.h
+++ b/modules/video_output/win32/d3d11_shaders.h
@@ -91,4 +91,7 @@ HRESULT D3D11_CompilePixelShader(vlc_object_t *, d3d11_handle_t *, bool legacy_s
 float GetFormatLuminance(vlc_object_t *, const video_format_t *);
 #define GetFormatLuminance(a,b)  GetFormatLuminance(VLC_OBJECT(a),b)
 
+HRESULT D3D11_CreateRenderTargets(d3d11_device_t *, ID3D11Resource *, const d3d_format_t *,
+                                  ID3D11RenderTargetView *output[D3D11_MAX_SHADER_VIEW]);
+
 #endif /* VLC_D3D11_SHADERS_H */



More information about the vlc-commits mailing list