[03/10] wined3d: Add WINED3DPS20 & WINED3DPS20CAPS flags and use
them
H. Verbeet
hverbeet at gmail.com
Thu Feb 15 06:31:41 CST 2007
Changelog:
- Add WINED3DPS20 & WINED3DPS20CAPS flags and use them
-------------- next part --------------
---
dlls/wined3d/directx.c | 20 ++++++++++----------
include/wine/wined3d_caps.h | 15 +++++++++++++++
2 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 97b2f9d..d554ab4 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2330,15 +2330,15 @@ static HRESULT WINAPI IWineD3DImpl_GetDeviceCaps(IWineD3D *iface, UINT Adapter,
use the PS 3.0 from MSDN or else if there's OpenGL spec use a hardcoded value minimum PS 3.0 value. */
/* Caps is more or less undocumented on MSDN but it appears to be used for PS20Caps based on results from R9600/FX5900/Geforce6800 cards from Windows */
- *pCaps->PS20Caps.Caps = D3DPS20CAPS_ARBITRARYSWIZZLE |
- D3DPS20CAPS_GRADIENTINSTRUCTIONS |
- D3DPS20CAPS_PREDICATION |
- D3DPS20CAPS_NODEPENDENTREADLIMIT |
- D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT;
- *pCaps->PS20Caps.DynamicFlowControlDepth = D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH; /* PS 3.0 requires MAX_DYNAMICFLOWCONTROLDEPTH (24) */
+ *pCaps->PS20Caps.Caps = WINED3DPS20CAPS_ARBITRARYSWIZZLE |
+ WINED3DPS20CAPS_GRADIENTINSTRUCTIONS |
+ WINED3DPS20CAPS_PREDICATION |
+ WINED3DPS20CAPS_NODEPENDENTREADLIMIT |
+ WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT;
+ *pCaps->PS20Caps.DynamicFlowControlDepth = WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH; /* PS 3.0 requires MAX_DYNAMICFLOWCONTROLDEPTH (24) */
*pCaps->PS20Caps.NumTemps = max(32, This->gl_info.ps_arb_max_temps);
- *pCaps->PS20Caps.StaticFlowControlDepth = D3DPS20_MAX_STATICFLOWCONTROLDEPTH; /* PS 3.0 requires MAX_STATICFLOWCONTROLDEPTH (4) */
- *pCaps->PS20Caps.NumInstructionSlots = D3DPS20_MAX_NUMINSTRUCTIONSLOTS; /* PS 3.0 requires MAX_NUMINSTRUCTIONSLOTS (512) */
+ *pCaps->PS20Caps.StaticFlowControlDepth = WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH; /* PS 3.0 requires MAX_STATICFLOWCONTROLDEPTH (4) */
+ *pCaps->PS20Caps.NumInstructionSlots = WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS; /* PS 3.0 requires MAX_NUMINSTRUCTIONSLOTS (512) */
*pCaps->MaxPShaderInstructionsExecuted = 65535;
*pCaps->MaxPixelShader30InstructionSlots = max(D3DMIN30SHADERINSTRUCTIONS, This->gl_info.ps_arb_max_instructions);
@@ -2347,8 +2347,8 @@ static HRESULT WINAPI IWineD3DImpl_GetDeviceCaps(IWineD3D *iface, UINT Adapter,
*pCaps->PS20Caps.Caps = 0;
*pCaps->PS20Caps.DynamicFlowControlDepth = 0; /* D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0 */
*pCaps->PS20Caps.NumTemps = max(12, This->gl_info.ps_arb_max_temps);
- *pCaps->PS20Caps.StaticFlowControlDepth = D3DPS20_MIN_STATICFLOWCONTROLDEPTH; /* Minumum: 1 */
- *pCaps->PS20Caps.NumInstructionSlots = D3DPS20_MIN_NUMINSTRUCTIONSLOTS; /* Minimum number (64 ALU + 32 Texture), a GeforceFX uses 512 */
+ *pCaps->PS20Caps.StaticFlowControlDepth = WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH; /* Minumum: 1 */
+ *pCaps->PS20Caps.NumInstructionSlots = WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS; /* Minimum number (64 ALU + 32 Texture), a GeforceFX uses 512 */
*pCaps->MaxPShaderInstructionsExecuted = 512; /* Minimum value, a GeforceFX uses 1024 */
*pCaps->MaxPixelShader30InstructionSlots = 0;
diff --git a/include/wine/wined3d_caps.h b/include/wine/wined3d_caps.h
index 1a94b27..2814457 100644
--- a/include/wine/wined3d_caps.h
+++ b/include/wine/wined3d_caps.h
@@ -79,6 +79,21 @@
#define WINED3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 0x00080000
#define WINED3DPMISCCAPS_FOGVERTEXCLAMPED 0x00100000
+#define WINED3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH 24
+#define WINED3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH 0
+#define WINED3DPS20_MAX_NUMTEMPS 32
+#define WINED3DPS20_MIN_NUMTEMPS 12
+#define WINED3DPS20_MAX_STATICFLOWCONTROLDEPTH 4
+#define WINED3DPS20_MIN_STATICFLOWCONTROLDEPTH 0
+#define WINED3DPS20_MAX_NUMINSTRUCTIONSLOTS 512
+#define WINED3DPS20_MIN_NUMINSTRUCTIONSLOTS 96
+
+#define WINED3DPS20CAPS_ARBITRARYSWIZZLE 0x00000001
+#define WINED3DPS20CAPS_GRADIENTINSTRUCTIONS 0x00000002
+#define WINED3DPS20CAPS_PREDICATION 0x00000004
+#define WINED3DPS20CAPS_NODEPENDENTREADLIMIT 0x00000008
+#define WINED3DPS20CAPS_NOTEXINSTRUCTIONLIMIT 0x00000010
+
#define WINED3DPTADDRESSCAPS_WRAP 0x00000001
#define WINED3DPTADDRESSCAPS_MIRROR 0x00000002
#define WINED3DPTADDRESSCAPS_CLAMP 0x00000004
More information about the wine-patches
mailing list