From: Zebediah Figura zfigura@codeweavers.com
--- dlls/d3dcompiler_43/compiler.c | 38 +++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/dlls/d3dcompiler_43/compiler.c b/dlls/d3dcompiler_43/compiler.c index d328e74585b..59020e3d345 100644 --- a/dlls/d3dcompiler_43/compiler.c +++ b/dlls/d3dcompiler_43/compiler.c @@ -234,8 +234,36 @@ static HRESULT preprocess_shader(const void *data, SIZE_T data_size, const char preprocess_info.include_context = include;
ret = vkd3d_shader_preprocess(&compile_info, &byte_code, &messages); + + if (!ret) + { + if (FAILED(hr = D3DCreateBlob(byte_code.size, shader_blob))) + { + vkd3d_shader_free_shader_code(&byte_code); + return hr; + } + memcpy(ID3D10Blob_GetBufferPointer(*shader_blob), byte_code.code, byte_code.size); + } + else + { + ERR("Failed to compile shader, vkd3d result %d.\n", ret); + } + if (messages) { + if (*messages && ERR_ON(d3dcompiler)) + { + const char *ptr = messages; + const char *line; + + ERR("Shader log:\n"); + while ((line = get_line(&ptr))) + { + ERR(" %.*s", (int)(ptr - line), line); + } + ERR("\n"); + } + if (messages_blob) { size_t size = strlen(messages); @@ -253,16 +281,6 @@ static HRESULT preprocess_shader(const void *data, SIZE_T data_size, const char } }
- if (!ret) - { - if (FAILED(hr = D3DCreateBlob(byte_code.size, shader_blob))) - { - vkd3d_shader_free_shader_code(&byte_code); - return hr; - } - memcpy(ID3D10Blob_GetBufferPointer(*shader_blob), byte_code.code, byte_code.size); - } - return hresult_from_vkd3d_result(ret); }