vlc | branch: master | Steve Lhomme <[email protected]> | Thu Mar  2 17:28:35 
2017 +0100| [0c0179a69156d7e05a08ace7b9dd4f4287d63a53] | committer: 
Jean-Baptiste Kempf

direct3d11: handle the pixel shader specific string in CompilePixelShader()

Signed-off-by: Jean-Baptiste Kempf <[email protected]>

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

 modules/video_output/win32/direct3d11.c | 28 +++++++++++-----------------
 1 file changed, 11 insertions(+), 17 deletions(-)

diff --git a/modules/video_output/win32/direct3d11.c 
b/modules/video_output/win32/direct3d11.c
index 224b1a8..24188b8 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -1624,28 +1624,13 @@ static ID3DBlob* CompileShader(vout_display_t *vd, 
const char *psz_shader, bool
 {
     vout_display_sys_t *sys = vd->sys;
     ID3DBlob* pShaderBlob = NULL, *pErrBlob;
-    char *shader;
-    if (!pixel)
-        shader = (char*)psz_shader;
-    else
-    {
-        shader = malloc(strlen(psz_shader) + 32);
-        if (!shader)
-        {
-            msg_Err(vd, "no room for the Pixel Shader");
-            return NULL;
-        }
-        sprintf(shader, psz_shader, sys->legacy_shader ? "" : "Array", 
sys->legacy_shader ? "" : "Array");
-    }
 
     /* TODO : Match the version to the D3D_FEATURE_LEVEL */
-    HRESULT hr = D3DCompile(shader, strlen(shader),
+    HRESULT hr = D3DCompile(psz_shader, strlen(psz_shader),
                             NULL, NULL, NULL, "main",
                             pixel ? (sys->legacy_shader ? "ps_4_0_level_9_1" : 
"ps_4_0") :
                                     (sys->legacy_shader ? "vs_4_0_level_9_1" : 
"vs_4_0"),
                             0, 0, &pShaderBlob, &pErrBlob);
-    if (pixel)
-        free(shader);
 
     if (FAILED(hr)) {
         char *err = pErrBlob ? ID3D10Blob_GetBufferPointer(pErrBlob) : NULL;
@@ -1660,7 +1645,16 @@ static ID3DBlob* CompileShader(vout_display_t *vd, const 
char *psz_shader, bool
 static HRESULT CompilePixelShader(vout_display_t *vd, const char *psz_shader, 
ID3D11PixelShader **output)
 {
     vout_display_sys_t *sys = vd->sys;
-    ID3DBlob *pPSBlob = CompileShader(vd, psz_shader, true);
+    char *shader = malloc(strlen(psz_shader) + 32);
+    if (!shader)
+    {
+        msg_Err(vd, "no room for the Pixel Shader");
+        return E_OUTOFMEMORY;
+    }
+    sprintf(shader, psz_shader, sys->legacy_shader ? "" : "Array", 
sys->legacy_shader ? "" : "Array");
+
+    ID3DBlob *pPSBlob = CompileShader(vd, shader, true);
+    free(shader);
     if (!pPSBlob)
         return E_INVALIDARG;
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to