wined3d-Indexed-Vertex-Blending: Fix rebase.

This commit is contained in:
Zebediah Figura 2018-03-11 14:18:10 -05:00
parent 4a31790533
commit e8d98eb7ba
9 changed files with 174 additions and 131 deletions

View File

@ -1,4 +1,4 @@
From f007c8f6a7fc3498d525c70a7f6e6540faf425c1 Mon Sep 17 00:00:00 2001
From b008821675b5e7ad2ed3d4f721d7fbb05c8f8ce4 Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Thu, 17 Aug 2017 17:46:50 +0300
Subject: d3d9/tests: Add test for indexed vertex blending.
@ -8,16 +8,15 @@ Subject: d3d9/tests: Add test for indexed vertex blending.
1 file changed, 252 insertions(+)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 4fdc41c26b..3b6215a274 100644
index 3686fc6..9e0c33b 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -20198,6 +20198,276 @@ done:
@@ -20263,6 +20263,257 @@ done:
DestroyWindow(window);
}
+static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char *test_id_str)
+{
+ IDirect3DPixelShader9 *ps;
+ D3DCAPS9 caps;
+ D3DCOLOR color;
+ HRESULT hr;
@ -34,48 +33,30 @@ index 4fdc41c26b..3b6215a274 100644
+ {{{
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ -4.0f, 4.0f, 0.0f, 1.0f
+ }}},
+ lower_left =
+ {{{
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ -4.0f, -4.0f, 0.0f, 1.0f
+ }}},
+ upper_right =
+ {{{
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 4.0f, 4.0f, 0.0f, 1.0f
+ }}},
+ lower_right =
+ {{{
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
+ 4.0f, -4.0f, 0.0f, 1.0f
+ }}},
+ identity =
+ {{{
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f
+ }}};
+
+ static const DWORD normal_ps[] =
+ {
+ 0xffff0200, /* ps_2_0 */
+ 0x05000051, 0xa00f0000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, /* def c0, 1, 0, 0, 0 */
+ 0x0200001f, 0x80000000, 0xb0070000, /* dcl t0.xyz */
+ 0x02000001, 0x80170000, 0xb0e40000, /* mov_sat r0.xyz, t0 */
+ 0x02000001, 0x80080000, 0xa0000000, /* mov r0.w, c0.x */
+ 0x02000001, 0x800f0800, 0x80e40000, /* mov oC0, r0 */
+ 0x0000ffff, /* end */
+ };
+ 4.0f, -4.0f, 0.0f, 1.0f
+ }}};
+
+ static const POINT quad_upper_right_points[] =
+ {
@ -288,7 +269,7 @@ index 4fdc41c26b..3b6215a274 100644
static void test_updatetexture(void)
{
BOOL r32f_supported, ati2n_supported, do_visual_test;
@@ -23864,6 +24134,7 @@ START_TEST(visual)
@@ -23930,6 +24181,7 @@ START_TEST(visual)
test_multisample_mismatch();
test_texcoordindex();
test_vertex_blending();
@ -297,5 +278,5 @@ index 4fdc41c26b..3b6215a274 100644
test_depthbias();
test_flip();
--
2.14.1
2.7.4

View File

@ -1,4 +1,4 @@
From 0b8b0f04a03d358ee4560502568a695641368812 Mon Sep 17 00:00:00 2001
From 67cb3d1151bf787bb66d54e4fa4e06dc6b5cb0ac Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Sat, 26 Aug 2017 00:59:29 +0200
Subject: wined3d: Implement hardware indexed vertex blending with 9 matrices.
@ -12,10 +12,10 @@ Subject: wined3d: Implement hardware indexed vertex blending with 9 matrices.
5 files changed, 51 insertions(+), 12 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 9b845b5ad44..3575b0be2e8 100644
index 9e0c33b..6d05d68 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -19844,7 +19844,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20392,7 +20392,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
if (caps.MaxVertexBlendMatrixIndex < 7 || caps.MaxVertexBlendMatrices < 4)
{
@ -25,10 +25,10 @@ index 9b845b5ad44..3575b0be2e8 100644
return;
}
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 1aa23ee33ad..3e84ad0d717 100644
index 6cc030a..12100a5 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -144,7 +144,7 @@ struct glsl_vs_program
@@ -143,7 +143,7 @@ struct glsl_vs_program
GLint uniform_b_locations[WINED3D_MAX_CONSTS_B];
GLint pos_fixup_location;
@ -37,7 +37,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
GLint projection_matrix_location;
GLint normal_matrix_location;
GLint texture_matrix_location[MAX_TEXTURES];
@@ -1786,7 +1786,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1818,7 +1818,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
{
struct wined3d_matrix mat;
@ -46,7 +46,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
{
if (prog->vs.modelview_matrix_location[i] == -1)
break;
@@ -8519,8 +8519,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8755,8 +8755,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
{
{"vec4", "ffp_attrib_position"}, /* WINED3D_FFP_POSITION */
{"vec4", "ffp_attrib_blendweight"}, /* WINED3D_FFP_BLENDWEIGHT */
@ -56,7 +56,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
{"vec3", "ffp_attrib_normal"}, /* WINED3D_FFP_NORMAL */
{"float", "ffp_attrib_psize"}, /* WINED3D_FFP_PSIZE */
{"vec4", "ffp_attrib_diffuse"}, /* WINED3D_FFP_DIFFUSE */
@@ -8532,6 +8531,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8768,6 +8767,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
BOOL legacy_lighting = priv->legacy_lighting;
GLuint shader_obj;
unsigned int i;
@ -64,7 +64,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
string_buffer_clear(buffer);
@@ -8550,7 +8550,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8786,7 +8786,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
}
shader_addline(buffer, "\n");
@ -73,7 +73,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
shader_addline(buffer, "uniform mat4 ffp_projection_matrix;\n");
shader_addline(buffer, "uniform mat3 ffp_normal_matrix;\n");
shader_addline(buffer, "uniform mat4 ffp_texture_matrix[%u];\n", MAX_TEXTURES);
@@ -8642,7 +8642,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8878,7 +8878,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
shader_addline(buffer, "vec4 ec_pos = vec4(0.0);\n");
for (i = 0; i < settings->vertexblends + 1; ++i)
@ -85,7 +85,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
shader_addline(buffer, "gl_Position = ffp_projection_matrix * ec_pos;\n");
if (settings->clipping)
@@ -8666,7 +8669,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8902,7 +8905,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
else
{
for (i = 0; i < settings->vertexblends + 1; ++i)
@ -97,7 +97,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
}
if (settings->normalize)
@@ -9539,7 +9545,7 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *
@@ -9775,7 +9781,7 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *
vs->pos_fixup_location = GL_EXTCALL(glGetUniformLocation(program_id, "pos_fixup"));
@ -106,7 +106,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
{
string_buffer_sprintf(name, "ffp_modelview_matrix[%u]", i);
vs->modelview_matrix_location[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer));
@@ -10114,7 +10120,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
@@ -10349,7 +10355,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
entry->constant_update_mask |= WINED3D_SHADER_CONST_FFP_MODELVIEW
| WINED3D_SHADER_CONST_FFP_PROJ;
@ -115,7 +115,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
{
if (entry->vs.modelview_matrix_location[i] != -1)
{
@@ -11076,7 +11082,7 @@ static void glsl_vertex_pipe_vp_get_caps(const struct wined3d_gl_info *gl_info,
@@ -11321,7 +11327,7 @@ static void glsl_vertex_pipe_vp_get_caps(const struct wined3d_gl_info *gl_info,
caps->ffp_generic_attributes = TRUE;
caps->max_active_lights = MAX_ACTIVE_LIGHTS;
caps->max_vertex_blend_matrices = MAX_VERTEX_BLENDS;
@ -124,7 +124,7 @@ index 1aa23ee33ad..3e84ad0d717 100644
caps->vertex_processing_caps = WINED3DVTXPCAPS_TEXGEN
| WINED3DVTXPCAPS_MATERIALSOURCE7
| WINED3DVTXPCAPS_VERTEXFOG
@@ -11494,6 +11500,11 @@ static const struct StateEntryTemplate glsl_vertex_pipe_vp_states[] =
@@ -11699,6 +11705,11 @@ static const struct StateEntryTemplate glsl_vertex_pipe_vp_states[] =
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(1)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(1)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(2)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(2)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(3)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(3)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
@ -137,10 +137,10 @@ index 1aa23ee33ad..3e84ad0d717 100644
{STATE_TEXTURESTAGE(1, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), {STATE_TEXTURESTAGE(1, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), glsl_vertex_pipe_texmatrix}, WINED3D_GL_EXT_NONE },
{STATE_TEXTURESTAGE(2, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), {STATE_TEXTURESTAGE(2, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), glsl_vertex_pipe_texmatrix}, WINED3D_GL_EXT_NONE },
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 5e29e7cd7a5..847429511b9 100644
index 7cb2007..60a9ee0 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -5810,6 +5810,9 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
@@ -5957,6 +5957,9 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
break;
}
@ -151,7 +151,7 @@ index 5e29e7cd7a5..847429511b9 100644
&& state->render_states[WINED3D_RS_CLIPPLANEENABLE];
settings->normal = !!(si->use_map & (1u << WINED3D_FFP_NORMAL));
diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
index 4fa6d54c37d..c6ab0ea09c9 100644
index 3d1518d..82348b4 100644
--- a/dlls/wined3d/vertexdeclaration.c
+++ b/dlls/wined3d/vertexdeclaration.c
@@ -119,6 +119,15 @@ static BOOL declaration_element_valid_ffp(const struct wined3d_vertex_element *e
@ -171,10 +171,10 @@ index 4fa6d54c37d..c6ab0ea09c9 100644
switch(element->format)
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 2c40b2d9838..7c20934ad40 100644
index 45a7903..64dad01 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -272,6 +272,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
@@ -275,6 +275,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
@ -182,7 +182,7 @@ index 2c40b2d9838..7c20934ad40 100644
#define MAX_MULTISAMPLE_TYPES 8
#define MAX_RENDER_TARGETS 8
@@ -2723,7 +2724,8 @@ struct wined3d_ffp_vs_settings
@@ -2741,7 +2742,8 @@ struct wined3d_ffp_vs_settings
DWORD ortho_fog : 1;
DWORD flatshading : 1;
DWORD swizzle_map : 16; /* MAX_ATTRIBS, 16 */
@ -192,7 +192,7 @@ index 2c40b2d9838..7c20934ad40 100644
DWORD texgen[MAX_TEXTURES];
};
@@ -4298,6 +4348,20 @@ static inline BOOL wined3d_format_is_typeless(const struct wined3d_format *forma
@@ -4326,6 +4328,20 @@ static inline BOOL wined3d_format_is_typeless(const struct wined3d_format *forma
return format->id == format->typeless_id && format->id != WINED3DFMT_UNKNOWN;
}
@ -214,5 +214,5 @@ index 2c40b2d9838..7c20934ad40 100644
{
/* Check state->vertex_declaration to allow this to be used before the
--
2.14.1
2.7.4

View File

@ -1,4 +1,4 @@
From ca7e96f08d1a718817dcb6f0527a5348161daf82 Mon Sep 17 00:00:00 2001
From feccefdad49772bbc87502daca1a78bbfbaaf85e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 31 Aug 2017 00:23:43 +0200
Subject: d3d9/tests: Test normal calculation when indexed vertex blending is
@ -9,10 +9,72 @@ Subject: d3d9/tests: Test normal calculation when indexed vertex blending is
1 file changed, 93 insertions(+), 22 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 3575b0be2e8..863a3c513de 100644
index 6d05d68..052327c 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -19798,6 +19817,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20265,6 +20265,7 @@ done:
static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char *test_id_str)
{
+ IDirect3DPixelShader9 *ps;
D3DCAPS9 caps;
D3DCOLOR color;
HRESULT hr;
@@ -20281,31 +20282,49 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
-4.0f, 4.0f, 0.0f, 1.0f
}}},
lower_left =
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
-4.0f, -4.0f, 0.0f, 1.0f
}}},
upper_right =
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
4.0f, 4.0f, 0.0f, 1.0f
}}},
lower_right =
{{{
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
4.0f, -4.0f, 0.0f, 1.0f
+ }}},
+ identity =
+ {{{
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f
}}};
+ static const DWORD normal_ps[] =
+ {
+ 0xffff0200, /* ps_2_0 */
+ 0x05000051, 0xa00f0000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, /* def c0, 1, 0, 0, 0 */
+ 0x0200001f, 0x80000000, 0xb0070000, /* dcl t0.xyz */
+ 0x02000001, 0x80170000, 0xb0e40000, /* mov_sat r0.xyz, t0 */
+ 0x02000001, 0x80080000, 0xa0000000, /* mov r0.w, c0.x */
+ 0x02000001, 0x800f0800, 0x80e40000, /* mov oC0, r0 */
+ 0x0000ffff, /* end */
+ };
+
static const POINT quad_upper_right_points[] =
{
{576, 48}, {-1, -1},
@@ -20346,6 +20365,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
struct vec3 position;
struct vec3 blendweights;
DWORD matrixIndices;
@ -20,7 +82,7 @@ index 3575b0be2e8..863a3c513de 100644
}
vertex_data[4];
const POINT *quad_points;
@@ -19807,34 +19827,34 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20355,34 +20375,34 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
{
/* upper right */
{
@ -71,7 +133,7 @@ index 3575b0be2e8..863a3c513de 100644
quad_fullscreen_points, quad_fullscreen_empty_points
}
};
@@ -19869,21 +19889,32 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20417,21 +20437,32 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
ok(hr == D3D_OK, "(%s) IDirect3DDevice9_SetRenderState D3DRS_INDEXEDVERTEXBLENDENABLE failed %08x.\n",
test_id_str, hr);
@ -106,7 +168,7 @@ index 3575b0be2e8..863a3c513de 100644
ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr);
hr = IDirect3DDevice9_EndScene(device);
@@ -19907,7 +19938,47 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20455,7 +20486,47 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
ok(SUCCEEDED(hr), "Failed to present, hr %#x.\n", hr);
@ -155,5 +217,5 @@ index 3575b0be2e8..863a3c513de 100644
static void test_indexed_vertex_blending(void)
--
2.14.1
2.7.4

View File

@ -1,4 +1,4 @@
From c0e0cc096b8e0dab0b7734424816dc70dca35261 Mon Sep 17 00:00:00 2001
From a62959a00ea79f2fff613f4a4dbc27d7cd426af0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 31 Aug 2017 01:00:04 +0200
Subject: wined3d: Fix calculation of normal when vertex blending is enabled.
@ -9,10 +9,10 @@ Subject: wined3d: Fix calculation of normal when vertex blending is enabled.
2 files changed, 36 insertions(+), 42 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 863a3c513de..49d519befb5 100644
index 052327c..1fe62fa 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -19962,7 +19962,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20510,7 +20510,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
while (point->x != -1 && point->y != -1)
{
color = getPixelColor(device, point->x, point->y);
@ -22,10 +22,10 @@ index 863a3c513de..49d519befb5 100644
}
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 3e84ad0d717..2aa0d0db0a4 100644
index 12100a5..bb3b1c2 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -145,8 +145,8 @@ struct glsl_vs_program
@@ -144,8 +144,8 @@ struct glsl_vs_program
GLint pos_fixup_location;
GLint modelview_matrix_location[MAX_VERTEX_INDEX_BLENDS];
@ -69,7 +69,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
static void shader_glsl_ffp_vertex_texmatrix_uniform(const struct wined3d_context *context,
const struct wined3d_state *state, unsigned int tex, struct glsl_shader_prog_link *prog)
{
@@ -1715,6 +1688,23 @@ static void shader_glsl_load_color_key_constant(const struct glsl_ps_program *ps
@@ -1747,6 +1720,23 @@ static void shader_glsl_load_color_key_constant(const struct glsl_ps_program *ps
GL_EXTCALL(glUniform4fv(ps->color_key_location, 2, &float_key[0].r));
}
@ -93,7 +93,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
/* Context activation is done by the caller (state handler). */
static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context *context,
const struct wined3d_state *state)
@@ -1725,6 +1715,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1757,6 +1747,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
const struct wined3d_gl_info *gl_info = context->gl_info;
struct shader_glsl_priv *priv = shader_priv;
float position_fixup[4];
@ -101,7 +101,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
DWORD update_mask;
struct glsl_shader_prog_link *prog = ctx_data->glsl_program;
@@ -1779,7 +1770,9 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1811,7 +1802,9 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
GL_EXTCALL(glUniformMatrix4fv(prog->vs.modelview_matrix_location[0], 1, FALSE, &mat._11));
checkGLcall("glUniformMatrix4fv");
@ -112,7 +112,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
}
if (update_mask & WINED3D_SHADER_CONST_FFP_VERTEXBLEND)
@@ -1794,6 +1787,10 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1826,6 +1819,10 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
get_modelview_matrix(context, state, i, &mat);
GL_EXTCALL(glUniformMatrix4fv(prog->vs.modelview_matrix_location[i], 1, FALSE, &mat._11));
checkGLcall("glUniformMatrix4fv");
@ -123,7 +123,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
}
}
@@ -8551,8 +8548,8 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8787,8 +8784,8 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
shader_addline(buffer, "\n");
shader_addline(buffer, "uniform mat4 ffp_modelview_matrix[%u];\n", MAX_VERTEX_INDEX_BLENDS);
@ -133,7 +133,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
shader_addline(buffer, "uniform mat4 ffp_texture_matrix[%u];\n", MAX_TEXTURES);
shader_addline(buffer, "uniform struct\n{\n");
@@ -8662,17 +8659,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8898,17 +8895,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
shader_addline(buffer, "vec3 normal = vec3(0.0);\n");
if (settings->normal)
{
@ -154,7 +154,7 @@ index 3e84ad0d717..2aa0d0db0a4 100644
}
if (settings->normalize)
@@ -9550,8 +9540,12 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *
@@ -9786,8 +9776,12 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *
string_buffer_sprintf(name, "ffp_modelview_matrix[%u]", i);
vs->modelview_matrix_location[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer));
}
@ -169,5 +169,5 @@ index 3e84ad0d717..2aa0d0db0a4 100644
{
string_buffer_sprintf(name, "ffp_texture_matrix[%u]", i);
--
2.14.1
2.7.4

View File

@ -1,19 +1,19 @@
From fadcafb0c6505447ba086d8dc4a6a024a040c61e Mon Sep 17 00:00:00 2001
From 2c5b6d42fa11db7fb80f91a3343bb27876b697b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 31 Aug 2017 01:07:25 +0200
Subject: wined3d: Move matrix inversion functions into utils.c
---
dlls/wined3d/glsl_shader.c | 275 -----------------------------------------
dlls/wined3d/utils.c | 275 +++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/wined3d_private.h | 2 +
3 files changed, 277 insertions(+), 275 deletions(-)
dlls/wined3d/glsl_shader.c | 287 -----------------------------------------
dlls/wined3d/utils.c | 287 +++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/wined3d_private.h | 3 +
3 files changed, 290 insertions(+), 287 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 2aa0d0db0a4..aaca2f63441 100644
index bb3b1c2..d53ad70 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1236,293 +1236,6 @@ static void shader_glsl_load_np2fixup_co
@@ -1236,293 +1236,6 @@ static void shader_glsl_load_np2fixup_constants(const struct glsl_ps_program *ps
GL_EXTCALL(glUniform4fv(ps->np2_fixup_location, ps->np2_fixup_info->num_consts, &np2fixup_constants[0].sx));
}
@ -308,10 +308,10 @@ index 2aa0d0db0a4..aaca2f63441 100644
const struct wined3d_state *state, unsigned int tex, struct glsl_shader_prog_link *prog)
{
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 847429511b9..b2effb5c2ec 100644
index 60a9ee0..8a07b3e 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -5373,6 +5373,293 @@ void multiply_matrix(struct wined3d_matr
@@ -5409,6 +5409,293 @@ void multiply_matrix(struct wined3d_matrix *dst, const struct wined3d_matrix *sr
*dst = tmp;
}
@ -386,7 +386,7 @@ index 847429511b9..b2effb5c2ec 100644
+ *b = tmp;
+}
+
+BOOL invert_matrix(struct wined3d_matrix *out, struct wined3d_matrix *m)
+BOOL invert_matrix(struct wined3d_matrix *out, const struct wined3d_matrix *m)
+{
+ float wtmp[4][8];
+ float m0, m1, m2, m3, s;
@ -606,18 +606,19 @@ index 847429511b9..b2effb5c2ec 100644
DWORD size = 0;
int i;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 7c20934ad40..08f4f01f7e6 100644
index 64dad01..92a5ef1 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3909,6 +3909,9 @@ GLenum gl_primitive_type_from_d3d(enum w
@@ -3911,6 +3911,9 @@ GLenum gl_primitive_type_from_d3d(enum wined3d_primitive_type primitive_type) DE
/* Math utils */
void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
const struct wined3d_matrix *src2) DECLSPEC_HIDDEN;
+BOOL invert_matrix_3d(struct wined3d_matrix *out, const struct wined3d_matrix *in) DECLSPEC_HIDDEN;
+BOOL invert_matrix(struct wined3d_matrix *out, struct wined3d_matrix *m) DECLSPEC_HIDDEN;
+BOOL invert_matrix(struct wined3d_matrix *out, const struct wined3d_matrix *m) DECLSPEC_HIDDEN;
+void transpose_matrix(struct wined3d_matrix *out, const struct wined3d_matrix *m) DECLSPEC_HIDDEN;
void wined3d_release_dc(HWND window, HDC dc) DECLSPEC_HIDDEN;
--
2.14.1
2.7.4

View File

@ -1,8 +1,7 @@
From 95d106f273fb8db213048c8aa54550248943f547 Mon Sep 17 00:00:00 2001
From 5221861c923787581dc67b8dd4d0901e0536d304 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 31 Aug 2017 01:26:38 +0200
Subject: [PATCH] wined3d: Implement software processing for indexed vertex
blending.
Subject: wined3d: Implement software processing for indexed vertex blending.
---
dlls/wined3d/context.c | 107 +++++++++++++++++++++++++++++++++++++++--
@ -13,10 +12,10 @@ Subject: [PATCH] wined3d: Implement software processing for indexed vertex
5 files changed, 148 insertions(+), 30 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 67a49db..b513705 100644
index 15981ea..c54982a 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -4496,6 +4496,100 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
@@ -4476,6 +4476,101 @@ static void draw_primitive_arrays(struct wined3d_context *context, const struct
}
}
@ -71,6 +70,7 @@ index 67a49db..b513705 100644
+ case WINED3D_FFP_EMIT_FLOAT4: vector[3] = data[3];
+ case WINED3D_FFP_EMIT_FLOAT3: vector[2] = data[2];
+ case WINED3D_FFP_EMIT_FLOAT2: vector[1] = data[1];
+ case WINED3D_FFP_EMIT_FLOAT1: vector[0] = data[0]; break;
+ default:
+ FIXME("unsupported value format: %u\n", SI_FORMAT(element_idx));
+ return (BYTE *)data;
@ -117,7 +117,7 @@ index 67a49db..b513705 100644
static unsigned int get_stride_idx(const void *idx_data, unsigned int idx_size,
unsigned int base_vertex_idx, unsigned int start_idx, unsigned int vertex_idx)
{
@@ -4524,6 +4618,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
@@ -4504,6 +4599,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
BOOL specular_fog = FALSE;
BOOL ps = use_ps(state);
const void *ptr;
@ -125,7 +125,7 @@ index 67a49db..b513705 100644
static unsigned int once;
@@ -4560,7 +4655,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
@@ -4540,7 +4636,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
if (!(use_map & 1u << element_idx))
continue;
@ -134,7 +134,7 @@ index 67a49db..b513705 100644
ops->generic[si->elements[element_idx].format->emit_idx](element_idx, ptr);
}
}
@@ -4672,7 +4767,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
@@ -4652,7 +4748,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
if (normal)
{
@ -143,7 +143,7 @@ index 67a49db..b513705 100644
ops->normal[si->elements[WINED3D_FFP_NORMAL].format->emit_idx](ptr);
}
@@ -4717,7 +4812,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
@@ -4697,7 +4793,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context *context, const
if (position)
{
@ -152,24 +152,23 @@ index 67a49db..b513705 100644
ops->position[si->elements[WINED3D_FFP_POSITION].format->emit_idx](ptr);
}
}
@@ -4939,6 +5034,12 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
@@ -4919,6 +5015,11 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
WARN_(d3d_perf)("Using software emulation because manual fog coordinates are provided.\n");
emulation = TRUE;
}
+ else if (use_indexed_vertex_blending(state, stream_info) && use_software_vertex_processing(context->device))
+ else if (use_indexed_vertex_blending(state, stream_info) && use_software_vertex_processing(context->device))
+ {
+ WARN_(d3d_perf)("Using software emulation because application requested SVP.\n");
+ emulation = TRUE;
+ }
+
if (emulation)
{
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index dfd0047..d47cd52 100644
index 7e14b88..717a7d3 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3959,31 +3959,15 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
@@ -3914,31 +3914,15 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
void CDECL wined3d_device_set_software_vertex_processing(struct wined3d_device *device, BOOL software)
{
@ -202,10 +201,10 @@ index dfd0047..d47cd52 100644
}
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index c857509..66a2921 100644
index d53ad70..3cfa901 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -8605,14 +8605,21 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8583,14 +8583,21 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
}
else
{
@ -233,7 +232,7 @@ index c857509..66a2921 100644
}
shader_addline(buffer, "gl_Position = ffp_projection_matrix * ec_pos;\n");
@@ -8630,10 +8637,17 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8608,10 +8615,17 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
shader_addline(buffer, "vec3 normal = vec3(0.0);\n");
if (settings->normal)
{
@ -255,10 +254,10 @@ index c857509..66a2921 100644
if (settings->normalize)
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 4a071cc..26b0fd2 100644
index 8a07b3e..870f261 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -6274,7 +6274,12 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
@@ -6245,7 +6245,12 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
}
if (use_indexed_vertex_blending(state, si))
@ -273,10 +272,10 @@ index 4a071cc..26b0fd2 100644
settings->clipping = state->render_states[WINED3D_RS_CLIPPING]
&& state->render_states[WINED3D_RS_CLIPPLANEENABLE];
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 7a79199..2f709d9 100644
index 92a5ef1..3d08572 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2746,7 +2746,7 @@ struct wined3d_ffp_vs_settings
@@ -2743,7 +2743,7 @@ struct wined3d_ffp_vs_settings
DWORD flatshading : 1;
DWORD swizzle_map : 16; /* MAX_ATTRIBS, 16 */
DWORD vb_indices : 1;
@ -285,7 +284,7 @@ index 7a79199..2f709d9 100644
DWORD texgen[MAX_TEXTURES];
};
@@ -4359,6 +4359,20 @@ static inline BOOL use_indexed_vertex_blending(const struct wined3d_state *state
@@ -4345,6 +4345,20 @@ static inline BOOL use_indexed_vertex_blending(const struct wined3d_state *state
return TRUE;
}
@ -307,5 +306,5 @@ index 7a79199..2f709d9 100644
{
/* Check state->vertex_declaration to allow this to be used before the
--
1.9.1
2.7.4

View File

@ -1,4 +1,4 @@
From 910fbdd6cd674e2ba1c9ca201787540db9de10f3 Mon Sep 17 00:00:00 2001
From 92cf51ff4ea2c2fa41d1996062a357b4b4017268 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 31 Aug 2017 01:47:49 +0200
Subject: d3d9/tests: Check MaxVertexBlendMatrixIndex capability.
@ -8,10 +8,10 @@ Subject: d3d9/tests: Check MaxVertexBlendMatrixIndex capability.
1 file changed, 28 insertions(+)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 49d519befb5..e7e6cf6e9e9 100644
index 1fe62fa..11b933f 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -19987,7 +19987,9 @@ static void test_indexed_vertex_blending(void)
@@ -20535,7 +20535,9 @@ static void test_indexed_vertex_blending(void)
IDirect3DDevice9 *device;
IDirect3D9 *d3d;
ULONG refcount;
@ -21,7 +21,7 @@ index 49d519befb5..e7e6cf6e9e9 100644
window = CreateWindowA("static", "d3d9_test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0, 640, 480, NULL, NULL, NULL, NULL);
@@ -20016,7 +20018,14 @@ static void test_indexed_vertex_blending(void)
@@ -20564,7 +20566,14 @@ static void test_indexed_vertex_blending(void)
if (SUCCEEDED(IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, window,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, &device)))
{
@ -36,7 +36,7 @@ index 49d519befb5..e7e6cf6e9e9 100644
refcount = IDirect3DDevice9_Release(device);
ok(!refcount, "Device has %u references left.\n", refcount);
}
@@ -20026,7 +20035,26 @@ static void test_indexed_vertex_blending(void)
@@ -20574,7 +20583,26 @@ static void test_indexed_vertex_blending(void)
if (SUCCEEDED(IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, window,
D3DCREATE_MIXED_VERTEXPROCESSING, &present_parameters, &device)))
{
@ -64,5 +64,5 @@ index 49d519befb5..e7e6cf6e9e9 100644
ok(!refcount, "Device has %u references left.\n", refcount);
}
--
2.14.1
2.7.4

View File

@ -1,4 +1,4 @@
From 405f1ca63e69fb5d9143ea26ec375ffef815e0a5 Mon Sep 17 00:00:00 2001
From 037c5691b9d2dd35a61017cfc8472c879048c182 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 31 Aug 2017 01:54:22 +0200
Subject: wined3d: Report correct number of blend matrices when software vertex
@ -11,10 +11,10 @@ Subject: wined3d: Report correct number of blend matrices when software vertex
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index e7e6cf6e9e9..1c219ab7cf4 100644
index 11b933f..2ea94fe 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -20021,7 +20021,7 @@ static void test_indexed_vertex_blending(void)
@@ -20569,7 +20569,7 @@ static void test_indexed_vertex_blending(void)
memset(&caps, 0, sizeof(caps));
hr = IDirect3DDevice9_GetDeviceCaps(device, &caps);
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
@ -23,7 +23,7 @@ index e7e6cf6e9e9..1c219ab7cf4 100644
caps.MaxVertexBlendMatrixIndex);
do_test_indexed_vertex_blending(device,"IVB software");
@@ -20047,7 +20047,7 @@ static void test_indexed_vertex_blending(void)
@@ -20595,7 +20595,7 @@ static void test_indexed_vertex_blending(void)
memset(&caps, 0, sizeof(caps));
hr = IDirect3DDevice9_GetDeviceCaps(device, &caps);
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
@ -33,10 +33,10 @@ index e7e6cf6e9e9..1c219ab7cf4 100644
hr = IDirect3DDevice9_SetSoftwareVertexProcessing(device, FALSE);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 31c7ea431d8..6b92bc679c2 100644
index 717a7d3..ea2d136 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3530,10 +3530,17 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
@@ -3480,10 +3480,17 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
HRESULT CDECL wined3d_device_get_device_caps(const struct wined3d_device *device, WINED3DCAPS *caps)
{
@ -56,10 +56,10 @@ index 31c7ea431d8..6b92bc679c2 100644
HRESULT CDECL wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx,
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index a34ead003cc..fe12e81b915 100644
index 86e790a..0acaa4d 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -5981,7 +5981,10 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapte
@@ -6002,7 +6002,10 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, UINT adapte
caps->MaxUserClipPlanes = vertex_caps.max_user_clip_planes;
caps->MaxActiveLights = vertex_caps.max_active_lights;
caps->MaxVertexBlendMatrices = vertex_caps.max_vertex_blend_matrices;
@ -72,5 +72,5 @@ index a34ead003cc..fe12e81b915 100644
caps->FVFCaps = vertex_caps.fvf_caps;
caps->RasterCaps |= vertex_caps.raster_caps;
--
2.14.1
2.7.4

View File

@ -1,4 +1,4 @@
From 8a4c30330dab1a81ffd0bd51215ffdd2f6bf9a61 Mon Sep 17 00:00:00 2001
From a769af7ae2309b0bd56753701bdd75daa236885a Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 31 Aug 2017 07:42:31 +0200
Subject: wined3d: Track updates of vertex blend matrices separately.
@ -9,10 +9,10 @@ Subject: wined3d: Track updates of vertex blend matrices separately.
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index a3050590dfb..31b892faf65 100644
index 3cfa901..28cf2c7 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1508,6 +1508,8 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1528,6 +1528,8 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
{
if (prog->vs.modelview_matrix_location[i] == -1)
break;
@ -21,7 +21,7 @@ index a3050590dfb..31b892faf65 100644
get_modelview_matrix(context, state, i, &mat);
GL_EXTCALL(glUniformMatrix4fv(prog->vs.modelview_matrix_location[i], 1, FALSE, &mat._11));
@@ -11002,7 +11004,8 @@ static void glsl_vertex_pipe_world(struct wined3d_context *context,
@@ -11243,7 +11245,8 @@ static void glsl_vertex_pipe_world(struct wined3d_context *context,
static void glsl_vertex_pipe_vertexblend(struct wined3d_context *context,
const struct wined3d_state *state, DWORD state_id)
{
@ -32,10 +32,10 @@ index a3050590dfb..31b892faf65 100644
static void glsl_vertex_pipe_view(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index a2be7326834..5089e6b8c32 100644
index 3d08572..8f791cb 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -435,13 +435,14 @@ enum wined3d_shader_resource_type
@@ -440,13 +440,14 @@ enum wined3d_shader_resource_type
#define WINED3D_SHADER_CONST_PS_Y_CORR 0x00001000
#define WINED3D_SHADER_CONST_PS_NP2_FIXUP 0x00002000
#define WINED3D_SHADER_CONST_FFP_MODELVIEW 0x00004000
@ -52,5 +52,5 @@ index a2be7326834..5089e6b8c32 100644
enum wined3d_shader_register_type
{
--
2.14.1
2.7.4