mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Added patch to filter out specific warning messages for D3DCompileShader.
This commit is contained in:
parent
aa07c4b087
commit
cc459b2b4f
@ -35,6 +35,11 @@ Wine. All those differences are also documented on the
|
||||
Included bugfixes and improvements
|
||||
==================================
|
||||
|
||||
**Bugfixes and features included in the next upcoming release [1]:**
|
||||
|
||||
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](http://bugs.winehq.org/show_bug.cgi?id=33770))
|
||||
|
||||
|
||||
**Bugs fixed in Wine-Compholio 1.7.29 [80]:**
|
||||
|
||||
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](http://bugs.winehq.org/show_bug.cgi?id=21767))
|
||||
|
1
debian/changelog
vendored
1
debian/changelog
vendored
@ -1,4 +1,5 @@
|
||||
wine-compholio (1.7.30) UNRELEASED; urgency=low
|
||||
* Added patch to filter specific warning messages for D3DCompileShader.
|
||||
* Removed patch to avoid Clang compiler warning because of unused Vtable (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 20 Oct 2014 19:53:47 +0200
|
||||
|
||||
|
@ -26,6 +26,7 @@ PATCHLIST := \
|
||||
comctl32-LoadIconMetric.ok \
|
||||
configure-Absolute_RPATH.ok \
|
||||
configure-Detect_Gnutls.ok \
|
||||
d3dx9_36-Filter_Warnings.ok \
|
||||
d3dx9_36-GetShaderSemantics.ok \
|
||||
d3dx9_36-UpdateSkinnedMesh.ok \
|
||||
dbghelp-KdHelp.ok \
|
||||
@ -301,6 +302,24 @@ configure-Detect_Gnutls.ok:
|
||||
echo '+ { "configure-Detect_Gnutls", "Sebastian Lackner", "Fix detection of gnutls on Ubuntu 14.10. [rev 3]" },'; \
|
||||
) > configure-Detect_Gnutls.ok
|
||||
|
||||
# Patchset d3dx9_36-Filter_Warnings
|
||||
# |
|
||||
# | Included patches:
|
||||
# | * D3DCompileShader should filter specific warning messages. [by Christian Costa]
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#33770] D3DCompileShader should filter specific warning messages
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3dx9_36/shader.c
|
||||
# |
|
||||
.INTERMEDIATE: d3dx9_36-Filter_Warnings.ok
|
||||
d3dx9_36-Filter_Warnings.ok:
|
||||
$(call APPLY_FILE,d3dx9_36-Filter_Warnings/0001-d3dx9_36-Filter-out-D3DCompile-warning-messages-that.patch)
|
||||
@( \
|
||||
echo '+ { "d3dx9_36-Filter_Warnings", "Christian Costa", "D3DCompileShader should filter specific warning messages." },'; \
|
||||
) > d3dx9_36-Filter_Warnings.ok
|
||||
|
||||
# Patchset d3dx9_36-GetShaderSemantics
|
||||
# |
|
||||
# | Included patches:
|
||||
|
@ -0,0 +1,87 @@
|
||||
From d258e0c4428f3d5b7c0b6f4b31058d8710244dd7 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Wed, 14 Aug 2013 09:31:31 +0200
|
||||
Subject: d3dx9_36: Filter out D3DCompile warning messages that are not present
|
||||
with D3DCompileShader.
|
||||
|
||||
This patch fixes vertex processing issue of bug 33770.
|
||||
|
||||
The problem comes from the fact that even if the call succeeds,
|
||||
the game interprets a non null error_messages pointer as an error.
|
||||
|
||||
By calling D3DCompile we use a newer version of the compiler which is more
|
||||
strict and generates the following warning.
|
||||
- warning X3206: 'dot': implicit truncation of vector type
|
||||
- warning X3206: implicit truncation of vector type
|
||||
- warning X3206: 'mul': implicit truncation of vector type
|
||||
D3DCompileShader does not generate such warnings.
|
||||
|
||||
These is confirmed in the DX SDK release note:
|
||||
New Warning X3206: Implicit Truncation of Vector Type
|
||||
Beginning in the August 2009 release of the DirectX SDK, the compiler will warn
|
||||
when an implicit truncation of a vector type occurs.
|
||||
|
||||
The warnings cannot be disable so this patch filters out these strings in D3DCompileShader
|
||||
and reset the error messages pointer if the resulting buffer is empty.
|
||||
|
||||
Try 2:
|
||||
- only filter out lines containing "X3206:" in case d3dcompiler_43 has localization
|
||||
|
||||
Try 3:
|
||||
- use move in place instead of copying the buffer
|
||||
|
||||
Try 4:
|
||||
- filter simplification by Sebastian and remove 'mul' testing left-out in search string
|
||||
---
|
||||
dlls/d3dx9_36/shader.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 35 insertions(+)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
|
||||
index 5ea3d13..646d3dc 100644
|
||||
--- a/dlls/d3dx9_36/shader.c
|
||||
+++ b/dlls/d3dx9_36/shader.c
|
||||
@@ -450,6 +450,41 @@ HRESULT WINAPI D3DXCompileShader(const char *data, UINT length, const D3DXMACRO
|
||||
}
|
||||
}
|
||||
|
||||
+ /* Filter out D3DCompile warning messages that are not present with D3DCompileShader */
|
||||
+ if (SUCCEEDED(hr) && error_msgs && *error_msgs)
|
||||
+ {
|
||||
+ char *messages = ID3DXBuffer_GetBufferPointer(*error_msgs);
|
||||
+ DWORD size = ID3DXBuffer_GetBufferSize(*error_msgs);
|
||||
+
|
||||
+ /* Ensure messages are null terminated for safe processing */
|
||||
+ if (size) messages[size - 1] = 0;
|
||||
+
|
||||
+ while (size > 1)
|
||||
+ {
|
||||
+ char *prev, *next;
|
||||
+
|
||||
+ /* Warning has the form "warning X3206: ... implicit truncation of vector type"
|
||||
+ but we only search for "X3206:" in case d3dcompiler_43 has localization */
|
||||
+ prev = next = strstr(messages, "X3206:");
|
||||
+ if (!prev) break;
|
||||
+
|
||||
+ /* get pointer to beginning and end of current line */
|
||||
+ while (prev > messages && *(prev - 1) != '\n') prev--;
|
||||
+ while (next < messages + size - 1 && *next != '\n') next++;
|
||||
+ if (next < messages + size - 1 && *next == '\n') next++;
|
||||
+
|
||||
+ memmove(prev, next, messages + size - next);
|
||||
+ size -= (next - prev);
|
||||
+ }
|
||||
+
|
||||
+ /* Only return a buffer if the resulting string is not empty as some apps depend on that */
|
||||
+ if (size <= 1)
|
||||
+ {
|
||||
+ ID3DXBuffer_Release(*error_msgs);
|
||||
+ *error_msgs = NULL;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return hr;
|
||||
}
|
||||
|
||||
--
|
||||
2.1.2
|
||||
|
4
patches/d3dx9_36-Filter_Warnings/definition
Normal file
4
patches/d3dx9_36-Filter_Warnings/definition
Normal file
@ -0,0 +1,4 @@
|
||||
Author: Christian Costa
|
||||
Subject: D3DCompileShader should filter specific warning messages.
|
||||
Revision: 1
|
||||
Fixes: [33770] D3DCompileShader should filter specific warning messages
|
Loading…
Reference in New Issue
Block a user