[2/3] d3dcompiler: Fix error messages generation.
Matteo Bruni
matteo.mystral at gmail.com
Sun Feb 6 10:30:01 CST 2011
-------------- next part --------------
From bf7d73ebe3cc0f5f3289610be608178e6bc2df7b Mon Sep 17 00:00:00 2001
From: Matteo Bruni <mbruni at codeweavers.com>
Date: Wed, 12 Jan 2011 23:06:44 +0100
Subject: d3dcompiler: Fix error messages generation.
This patch also includes some code style fixes.
---
dlls/d3dcompiler_43/compiler.c | 57 +++++++++++++++++----------------------
1 files changed, 25 insertions(+), 32 deletions(-)
diff --git a/dlls/d3dcompiler_43/compiler.c b/dlls/d3dcompiler_43/compiler.c
index 42ad09b..3c964e2 100644
--- a/dlls/d3dcompiler_43/compiler.c
+++ b/dlls/d3dcompiler_43/compiler.c
@@ -390,8 +390,8 @@ cleanup:
return hr;
}
-static HRESULT assemble_shader(const char *preprocShader, const char *preprocMessages,
- LPD3DBLOB* ppShader, LPD3DBLOB* ppErrorMsgs)
+static HRESULT assemble_shader(const char *preproc_shader,
+ ID3DBlob **shader_blob, ID3DBlob **error_messages)
{
struct bwriter_shader *shader;
char *messages = NULL;
@@ -401,51 +401,44 @@ static HRESULT assemble_shader(const char *preprocShader, const char *preprocMes
int size;
char *pos;
- shader = SlAssembleShader(preprocShader, &messages);
+ shader = SlAssembleShader(preproc_shader, &messages);
- if(messages || preprocMessages)
+ if (messages)
{
- if(preprocMessages)
- {
- TRACE("Preprocessor messages:\n");
- TRACE("%s", preprocMessages);
- }
- if(messages)
- {
- TRACE("Assembler messages:\n");
- TRACE("%s", messages);
- }
+ TRACE("Assembler messages:\n");
+ TRACE("%s", messages);
TRACE("Shader source:\n");
- TRACE("%s\n", debugstr_a(preprocShader));
+ TRACE("%s\n", debugstr_a(preproc_shader));
- if(ppErrorMsgs)
+ if (error_messages)
{
+ const char *preproc_messages = *error_messages ? ID3D10Blob_GetBufferPointer(*error_messages) : NULL;
+
size = (messages ? strlen(messages) : 0) +
- (preprocMessages ? strlen(preprocMessages) : 0) + 1;
+ (preproc_messages ? strlen(preproc_messages) : 0) + 1;
hr = D3DCreateBlob(size, &buffer);
- if(FAILED(hr))
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, messages);
- if(shader) SlDeleteShader(shader);
+ if (shader) SlDeleteShader(shader);
return hr;
}
pos = ID3D10Blob_GetBufferPointer(buffer);
- if(preprocMessages)
+ if (preproc_messages)
{
- CopyMemory(pos, preprocMessages, strlen(preprocMessages) + 1);
- pos += strlen(preprocMessages);
+ CopyMemory(pos, preproc_messages, strlen(preproc_messages) + 1);
+ pos += strlen(preproc_messages);
}
- if(messages)
- CopyMemory(pos, messages, strlen(messages) + 1);
+ CopyMemory(pos, messages, strlen(messages) + 1);
- *ppErrorMsgs = buffer;
+ if (*error_messages) ID3D10Blob_Release(*error_messages);
+ *error_messages = buffer;
}
-
HeapFree(GetProcessHeap(), 0, messages);
}
- if(shader == NULL)
+ if (shader == NULL)
{
ERR("Asm reading failed\n");
return D3DXERR_INVALIDDATA;
@@ -453,23 +446,23 @@ static HRESULT assemble_shader(const char *preprocShader, const char *preprocMes
hr = SlWriteBytecode(shader, 9, &res);
SlDeleteShader(shader);
- if(FAILED(hr))
+ if (FAILED(hr))
{
ERR("SlWriteBytecode failed with 0x%08x\n", hr);
return D3DXERR_INVALIDDATA;
}
- if(ppShader)
+ if (shader_blob)
{
size = HeapSize(GetProcessHeap(), 0, res);
hr = D3DCreateBlob(size, &buffer);
- if(FAILED(hr))
+ if (FAILED(hr))
{
HeapFree(GetProcessHeap(), 0, res);
return hr;
}
CopyMemory(ID3D10Blob_GetBufferPointer(buffer), res, size);
- *ppShader = buffer;
+ *shader_blob = buffer;
}
HeapFree(GetProcessHeap(), 0, res);
@@ -493,7 +486,7 @@ HRESULT WINAPI D3DAssemble(const void *data, SIZE_T datasize, const char *filena
hr = preprocess_shader(data, datasize, defines, include, error_messages);
if (SUCCEEDED(hr))
- hr = assemble_shader(wpp_output, wpp_messages, shader, error_messages);
+ hr = assemble_shader(wpp_output, shader, error_messages);
HeapFree(GetProcessHeap(), 0, wpp_output);
LeaveCriticalSection(&wpp_mutex);
--
1.7.3.4
More information about the wine-patches
mailing list