=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Expose double precision shader capability in WINED3DCAPS.
Alexandre Julliard
julliard at winehq.org
Mon Feb 20 15:03:44 CST 2017
Module: wine
Branch: master
Commit: def13f3f810bf19018cba6f93b1fafaa7f72e1b6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=def13f3f810bf19018cba6f93b1fafaa7f72e1b6
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Mon Feb 20 13:12:14 2017 +0100
wined3d: Expose double precision shader capability in WINED3DCAPS.
None of shader backends supports double precision yet.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wined3d/directx.c | 8 ++++++--
dlls/wined3d/wined3d_private.h | 2 ++
include/wine/wined3d.h | 2 ++
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 0f44e09..0df4b58 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -4029,6 +4029,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, DWORD
adapter->d3d_info.limits.vs_uniform_count = shader_caps.vs_uniform_count;
adapter->d3d_info.limits.ps_uniform_count = shader_caps.ps_uniform_count;
adapter->d3d_info.limits.varying_count = shader_caps.varying_count;
+ adapter->d3d_info.shader_double_precision = shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION;
adapter->vertex_pipe->vp_get_caps(gl_info, &vertex_caps);
adapter->d3d_info.xyzrhw = vertex_caps.xyzrhw;
@@ -5331,11 +5332,12 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapte
enum wined3d_device_type device_type, WINED3DCAPS *caps)
{
const struct wined3d_adapter *adapter = &wined3d->adapters[adapter_idx];
+ const struct wined3d_d3d_info *d3d_info = &adapter->d3d_info;
const struct wined3d_gl_info *gl_info = &adapter->gl_info;
- struct shader_caps shader_caps;
- struct fragment_caps fragment_caps;
struct wined3d_vertex_caps vertex_caps;
DWORD ckey_caps, blit_caps, fx_caps;
+ struct fragment_caps fragment_caps;
+ struct shader_caps shader_caps;
TRACE("wined3d %p, adapter_idx %u, device_type %s, caps %p.\n",
wined3d, adapter_idx, debug_d3ddevicetype(device_type), caps);
@@ -5903,6 +5905,8 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapte
caps->ddraw_caps.caps |= WINEDDCAPS_3D;
}
+ caps->shader_double_precision = d3d_info->shader_double_precision;
+
return WINED3D_OK;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 3190d87..c518bda 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1097,6 +1097,7 @@ typedef void (*SHADER_HANDLER)(const struct wined3d_shader_instruction *);
#define WINED3D_SHADER_CAP_VS_CLIPPING 0x00000001
#define WINED3D_SHADER_CAP_SRGB_WRITE 0x00000002
+#define WINED3D_SHADER_CAP_DOUBLE_PRECISION 0x00000004
struct shader_caps
{
@@ -2299,6 +2300,7 @@ struct wined3d_d3d_info
BOOL shader_color_key;
DWORD valid_rt_mask;
DWORD wined3d_creation_flags;
+ BOOL shader_double_precision;
};
/* The adapter structure */
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 17343f6..e216520 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1888,6 +1888,8 @@ typedef struct _WINED3DCAPS
DWORD Reserved3;
struct wined3d_ddraw_caps ddraw_caps;
+
+ BOOL shader_double_precision;
} WINED3DCAPS;
struct wined3d_color_key
More information about the wine-cvs
mailing list