Rebase against 4c6aa8b2fa1678c39aa5a89d9b26cfc4002e744e

This commit is contained in:
Alistair Leslie-Hughes 2019-08-15 14:07:34 +10:00
parent 35a5f7db93
commit 67035d62f7
4 changed files with 55 additions and 67 deletions

View File

@ -264,18 +264,18 @@ index 2ba5a3c25b0..38a080a319f 100644
+ arg_offset += ret_data.size;
+ }
+
+ if (type_get_function_args(func->declspec.type))
+ if (type_function_get_args(func->declspec.type))
+ {
+ int i = 0;
+
+ arg_count = list_count(type_get_function_args(func->declspec.type));
+ arg_count = list_count(type_function_get_args(func->declspec.type));
+
+ arg_data = xmalloc(arg_count * sizeof(*arg_data));
+ arg_desc_offset = xmalloc(arg_count * sizeof(*arg_desc_offset));
+
+ arg_offset += arg_count * 2 * sizeof(short);
+
+ LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->declspec.type), const var_t, entry)
+ LIST_FOR_EACH_ENTRY(arg, type_function_get_args(func->declspec.type), const var_t, entry)
+ {
+ const attr_t *attr;
+
@ -360,7 +360,7 @@ index 2ba5a3c25b0..38a080a319f 100644
+
+ arg_offset += arg_count * 2 * sizeof(short);
+
+ LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->declspec.type), const var_t, entry)
+ LIST_FOR_EACH_ENTRY(arg, type_function_get_args(func->declspec.type), const var_t, entry)
+ {
+ short name, type_offset;
+

View File

@ -124,7 +124,7 @@ index 68d1241d61c..b122e0dc389 100644
arg_data_size = 0;
@@ -1220,13 +1268,16 @@ static int add_func_desc(struct sltg_typelib *typelib, struct sltg_data *data, v
LIST_FOR_EACH_ENTRY(arg, type_get_function_args(func->declspec.type), const var_t, entry)
LIST_FOR_EACH_ENTRY(arg, type_function_get_args(func->declspec.type), const var_t, entry)
{
const attr_t *attr;
+ short param_flags = get_param_flags(arg);

View File

@ -1,4 +1,4 @@
From 77ea40ff3762a598abd30edeee292c0275e73f4d Mon Sep 17 00:00:00 2001
From 5de05424cc34f3f98b1b2795d3d0544a9e7d916e Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Mon, 25 Feb 2019 14:47:28 +0300
Subject: [PATCH] wined3d: Report actual vertex shader float constants limit
@ -13,10 +13,10 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
4 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index a843706a5..630360286 100644
index 1e236fe23d4..1fb1884325a 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -3770,7 +3770,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
@@ -3788,7 +3788,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
d3d_info->limits.gs_version = shader_caps.gs_version;
d3d_info->limits.ps_version = shader_caps.ps_version;
d3d_info->limits.cs_version = shader_caps.cs_version;
@ -25,12 +25,12 @@ index a843706a5..630360286 100644
+ d3d_info->limits.vs_uniform_count = min(WINED3D_MAX_VS_CONSTS_F, shader_caps.vs_uniform_count);
d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count;
d3d_info->limits.varying_count = shader_caps.varying_count;
d3d_info->limits.max_compat_varying_count = shader_caps.max_compat_varying_count;
d3d_info->full_ffp_varyings = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_FULL_FFP_VARYINGS);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index c37f386f9..760ba5166 100644
index 7aa238b3311..ca18e439b38 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4064,10 +4064,21 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
@@ -4088,10 +4088,21 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
HRESULT CDECL wined3d_device_get_device_caps(const struct wined3d_device *device, struct wined3d_caps *caps)
{
@ -54,10 +54,10 @@ index c37f386f9..760ba5166 100644
HRESULT CDECL wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx,
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 564afbf15..71e05af57 100644
index 6147d2e88fc..2440ed7b517 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -11222,7 +11222,10 @@ static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct s
@@ -11234,7 +11234,10 @@ static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct s
caps->vs_version = gl_info->supported[ARB_VERTEX_SHADER] ? caps->vs_version : 0;
caps->ps_version = gl_info->supported[ARB_FRAGMENT_SHADER] ? caps->ps_version : 0;
@ -68,12 +68,12 @@ index 564afbf15..71e05af57 100644
+ : gl_info->limits.glsl_vs_float_constants);
caps->ps_uniform_count = min(WINED3D_MAX_PS_CONSTS_F, gl_info->limits.glsl_ps_float_constants);
caps->varying_count = gl_info->limits.glsl_varyings;
caps->max_compat_varying_count = shader_glsl_max_compat_varyings(gl_info);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 3cd0e9728..24eaf1bee 100644
index ab960191dee..bdf6f31ec87 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -166,6 +166,7 @@ struct wined3d_d3d_limits
@@ -167,6 +167,7 @@ struct wined3d_d3d_limits
{
unsigned int vs_version, hs_version, ds_version, gs_version, ps_version, cs_version;
DWORD vs_uniform_count;
@ -81,7 +81,7 @@ index 3cd0e9728..24eaf1bee 100644
DWORD ps_uniform_count;
unsigned int varying_count;
unsigned int ffp_textures;
@@ -701,6 +702,7 @@ enum wined3d_shader_conditional_op
@@ -703,6 +704,7 @@ enum wined3d_shader_conditional_op
#define WINED3D_MAX_CONSTS_B 16
#define WINED3D_MAX_CONSTS_I 16
#define WINED3D_MAX_VS_CONSTS_F 256
@ -90,5 +90,5 @@ index 3cd0e9728..24eaf1bee 100644
/* FIXME: This needs to go up to 2048 for
--
2.22.0
2.23.0.rc1

View File

@ -1,26 +1,26 @@
From 7b1185a7f5c98fea46c1857833c342d0a4cfa3c1 Mon Sep 17 00:00:00 2001
From dda3109aadc48a0d65d1b39138c92ed3b4f5451f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 20 Jul 2017 13:50:07 +0200
Subject: [PATCH] wined3d: Implement all 8 d3d11 color write masks.
---
dlls/d3d11/device.c | 29 ++++++++---------
dlls/d3d11/device.c | 29 +++++++++-----------
dlls/d3d11/state.c | 4 ---
dlls/wined3d/context.c | 10 +++---
dlls/wined3d/device.c | 6 ++--
dlls/wined3d/state.c | 57 ++++++++++++++++------------------
dlls/wined3d/stateblock.c | 11 ++++---
dlls/wined3d/surface.c | 7 ++---
dlls/wined3d/utils.c | 6 +++-
dlls/wined3d/context.c | 10 +++----
dlls/wined3d/device.c | 6 ++---
dlls/wined3d/state.c | 48 ++++++++++++++++++++--------------
dlls/wined3d/stateblock.c | 11 +++++---
dlls/wined3d/surface.c | 7 +++--
dlls/wined3d/utils.c | 6 ++++-
dlls/wined3d/wined3d_private.h | 1 +
include/wine/wined3d.h | 14 ++++++++-
10 files changed, 74 insertions(+), 71 deletions(-)
include/wine/wined3d.h | 14 +++++++++-
10 files changed, 77 insertions(+), 59 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 5fac1172c..f8bd0caee 100644
index e3886aa85ba..5292dc32177 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -708,6 +708,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -2087,6 +2087,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
static const float default_blend_factor[] = {1.0f, 1.0f, 1.0f, 1.0f};
struct d3d_blend_state *blend_state_impl;
const D3D11_BLEND_DESC *desc;
@ -28,7 +28,7 @@ index 5fac1172c..f8bd0caee 100644
TRACE("iface %p, blend_state %p, blend_factor %s, sample_mask 0x%08x.\n",
iface, blend_state, debug_float4(blend_factor), sample_mask);
@@ -722,14 +723,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -2101,14 +2102,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
wined3d_device_set_blend_state(device->wined3d_device, NULL,
(const struct wined3d_color *)blend_factor);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_ALPHABLENDENABLE, FALSE);
@ -48,7 +48,7 @@ index 5fac1172c..f8bd0caee 100644
wined3d_mutex_unlock();
return;
}
@@ -751,14 +749,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -2130,14 +2128,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_DESTBLENDALPHA, d->DestBlendAlpha);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_BLENDOPALPHA, d->BlendOpAlpha);
}
@ -71,7 +71,7 @@ index 5fac1172c..f8bd0caee 100644
}
diff --git a/dlls/d3d11/state.c b/dlls/d3d11/state.c
index 92b75f8e1..29dfec3ba 100644
index 92b75f8e1fb..29dfec3baa9 100644
--- a/dlls/d3d11/state.c
+++ b/dlls/d3d11/state.c
@@ -344,10 +344,6 @@ HRESULT d3d_blend_state_create(struct d3d_device *device, const D3D11_BLEND_DESC
@ -86,10 +86,10 @@ index 92b75f8e1..29dfec3ba 100644
/* glEnableIndexedEXT(GL_BLEND, ...) */
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 2509d90fd..9e23f57d8 100644
index 5d9195835bf..73796904781 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2736,7 +2736,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
@@ -2741,7 +2741,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
const struct wined3d_gl_info *gl_info;
uint32_t rt_mask, *cur_mask;
struct wined3d_texture *rt;
@ -98,7 +98,7 @@ index 2509d90fd..9e23f57d8 100644
SIZE rt_size;
TRACE("Setting up context %p for blitting.\n", context);
@@ -2843,10 +2843,8 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
@@ -2848,10 +2848,8 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
context_invalidate_state(context, STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE));
}
gl_info->gl_ops.gl.p_glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
@ -111,7 +111,7 @@ index 2509d90fd..9e23f57d8 100644
context->last_was_rhw = TRUE;
context_invalidate_state(context, STATE_VDECL); /* because of last_was_rhw = TRUE */
@@ -4830,7 +4828,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
@@ -4848,7 +4846,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
if (!(rtv = fb->render_targets[i]) || rtv->format->id == WINED3DFMT_NULL)
continue;
@ -121,7 +121,7 @@ index 2509d90fd..9e23f57d8 100644
wined3d_rendertarget_view_load_location(rtv, context, rtv->resource->draw_binding);
wined3d_rendertarget_view_invalidate_location(rtv, ~rtv->resource->draw_binding);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index c37f386f9..e23e624aa 100644
index a5b4eb7e9c5..ef077af089a 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -452,10 +452,8 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
@ -138,10 +138,10 @@ index c37f386f9..e23e624aa 100644
checkGLcall("glClearColor");
clear_mask = clear_mask | GL_COLOR_BUFFER_BIT;
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index d860d13bd..479e15e3d 100644
index 1bb3edc7e25..bfe5d6983de 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -1543,9 +1543,6 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
@@ -1553,9 +1553,6 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
{
const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info;
DWORD mask0 = state->render_states[WINED3D_RS_COLORWRITEENABLE];
@ -151,7 +151,7 @@ index d860d13bd..479e15e3d 100644
TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
mask0 & WINED3DCOLORWRITEENABLE_RED ? 1 : 0,
@@ -1558,13 +1555,7 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
@@ -1568,13 +1565,7 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
mask0 & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
checkGLcall("glColorMask(...)");
@ -166,7 +166,7 @@ index d860d13bd..479e15e3d 100644
}
static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DWORD mask)
@@ -1577,24 +1568,20 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW
@@ -1587,9 +1578,20 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW
checkGLcall("glColorMaski");
}
@ -174,34 +174,22 @@ index d860d13bd..479e15e3d 100644
+static void state_colorwrite_i(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
- set_color_mask(wined3d_context_gl(context)->gl_info, 0, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
-}
+ const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info;
+ int index;
-static void state_colorwrite1(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
- set_color_mask(wined3d_context_gl(context)->gl_info, 1, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
-}
+
+ if (state_id == WINED3D_RS_COLORWRITEENABLE) index = 0;
+ else if (state_id <= WINED3D_RS_COLORWRITEENABLE3) index = state_id - WINED3D_RS_COLORWRITEENABLE1 + 1;
+ else if (state_id <= WINED3D_RS_COLORWRITEENABLE7) index = state_id - WINED3D_RS_COLORWRITEENABLE4 + 4;
+ else return;
-static void state_colorwrite2(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
- set_color_mask(wined3d_context_gl(context)->gl_info, 2, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
-}
+
+ if (index >= gl_info->limits.buffers)
+ WARN("Ignoring color write value for index %d, because gpu only supports %d render targets\n", index, gl_info->limits.buffers);
-static void state_colorwrite3(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
- set_color_mask(wined3d_context_gl(context)->gl_info, 3, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
+
+ set_color_mask(gl_info, index, state->render_states[state_id]);
}
static void state_localviewer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
@@ -4657,18 +4644,26 @@ const struct wined3d_state_entry_template misc_state_template[] =
static void state_colorwrite1(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
@@ -4672,18 +4674,26 @@ const struct wined3d_state_entry_template misc_state_template[] =
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), { STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), state_msaa_w }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEMASK), { STATE_RENDER(WINED3D_RS_MULTISAMPLEMASK), state_multisampmask }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_DEBUGMONITORTOKEN), { STATE_RENDER(WINED3D_RS_DEBUGMONITORTOKEN), state_debug_monitor }, WINED3D_GL_EXT_NONE },
@ -236,7 +224,7 @@ index d860d13bd..479e15e3d 100644
{ STATE_RENDER(WINED3D_RS_ZVISIBLE), { STATE_RENDER(WINED3D_RS_ZVISIBLE), state_zvisible }, WINED3D_GL_EXT_NONE },
/* Samplers */
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 80e58114c..d67911fe6 100644
index 05149ad1af1..e16b0e2d489 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -44,6 +44,10 @@ static const DWORD pixel_states_render[] =
@ -286,7 +274,7 @@ index 80e58114c..d67911fe6 100644
static void init_default_texture_state(unsigned int i, DWORD stage[WINED3D_HIGHEST_TEXTURE_STATE + 1])
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 99ee1a4ad..cb1b08120 100644
index ec5cd99718d..44a15702d4a 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -153,6 +153,7 @@ void texture2d_blt_fbo(struct wined3d_device *device, struct wined3d_context *co
@ -311,7 +299,7 @@ index 99ee1a4ad..cb1b08120 100644
gl_info->gl_ops.gl.p_glDisable(GL_SCISSOR_TEST);
context_invalidate_state(context, STATE_RENDER(WINED3D_RS_SCISSORTESTENABLE));
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index b9cad2a56..8df7cc1b7 100644
index ba87a2cd60d..24095d7a84a 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4910,7 +4910,6 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
@ -338,10 +326,10 @@ index b9cad2a56..8df7cc1b7 100644
D3DSTATE_TO_STR(WINED3D_RS_DEPTHBIAS);
D3DSTATE_TO_STR(WINED3D_RS_WRAP8);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index c628b2fa8..c1b2d5cd3 100644
index 725fb24f408..caf05c35cb7 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -286,6 +286,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
@@ -291,6 +291,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
#define MAX_UNORDERED_ACCESS_VIEWS 8
#define MAX_TGSM_REGISTERS 8192
#define MAX_VERTEX_BLENDS 4
@ -350,10 +338,10 @@ index c628b2fa8..c1b2d5cd3 100644
struct min_lookup
{
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 3e46c23c1..aec72620c 100644
index 031e4bd99e9..820b466b085 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -398,8 +398,20 @@ enum wined3d_render_state
@@ -400,8 +400,20 @@ enum wined3d_render_state
WINED3D_RS_SRCBLENDALPHA = 207,
WINED3D_RS_DESTBLENDALPHA = 208,
WINED3D_RS_BLENDOPALPHA = 209,
@ -376,5 +364,5 @@ index 3e46c23c1..aec72620c 100644
enum wined3d_blend
{
--
2.22.0
2.23.0.rc1