diff --git a/patches/wined3d-Indexed_Vertex_Blending/0001-d3d9-tests-Add-test-for-indexed-vertex-blending.patch b/patches/wined3d-Indexed_Vertex_Blending/0001-d3d9-tests-Add-test-for-indexed-vertex-blending.patch index 77b19d71..6f82cb51 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0001-d3d9-tests-Add-test-for-indexed-vertex-blending.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0001-d3d9-tests-Add-test-for-indexed-vertex-blending.patch @@ -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 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0002-wined3d-Implement-hardware-indexed-vertex-blending-w.patch b/patches/wined3d-Indexed_Vertex_Blending/0002-wined3d-Implement-hardware-indexed-vertex-blending-w.patch index c26eecfe..164cfd09 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0002-wined3d-Implement-hardware-indexed-vertex-blending-w.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0002-wined3d-Implement-hardware-indexed-vertex-blending-w.patch @@ -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 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0003-d3d9-tests-Test-normal-calculation-when-indexed-vert.patch b/patches/wined3d-Indexed_Vertex_Blending/0003-d3d9-tests-Test-normal-calculation-when-indexed-vert.patch index abfe1410..ba6af1ef 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0003-d3d9-tests-Test-normal-calculation-when-indexed-vert.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0003-d3d9-tests-Test-normal-calculation-when-indexed-vert.patch @@ -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?= 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0004-wined3d-Fix-calculation-of-normal-when-vertex-blendi.patch b/patches/wined3d-Indexed_Vertex_Blending/0004-wined3d-Fix-calculation-of-normal-when-vertex-blendi.patch index fc788f01..3daa7011 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0004-wined3d-Fix-calculation-of-normal-when-vertex-blendi.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0004-wined3d-Fix-calculation-of-normal-when-vertex-blendi.patch @@ -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?= 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0005-wined3d-Move-matrix-inversion-functions-into-utils.c.patch b/patches/wined3d-Indexed_Vertex_Blending/0005-wined3d-Move-matrix-inversion-functions-into-utils.c.patch index 269efc09..351df804 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0005-wined3d-Move-matrix-inversion-functions-into-utils.c.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0005-wined3d-Move-matrix-inversion-functions-into-utils.c.patch @@ -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?= 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 + diff --git a/patches/wined3d-Indexed_Vertex_Blending/0006-wined3d-Implement-software-processing-for-indexed-ve.patch b/patches/wined3d-Indexed_Vertex_Blending/0006-wined3d-Implement-software-processing-for-indexed-ve.patch index 30dd1d06..f7db2fe4 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0006-wined3d-Implement-software-processing-for-indexed-ve.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0006-wined3d-Implement-software-processing-for-indexed-ve.patch @@ -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?= 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0007-d3d9-tests-Check-MaxVertexBlendMatrixIndex-capabilit.patch b/patches/wined3d-Indexed_Vertex_Blending/0007-d3d9-tests-Check-MaxVertexBlendMatrixIndex-capabilit.patch index ca4788fb..a0f20f67 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0007-d3d9-tests-Check-MaxVertexBlendMatrixIndex-capabilit.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0007-d3d9-tests-Check-MaxVertexBlendMatrixIndex-capabilit.patch @@ -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?= 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0008-wined3d-Report-correct-number-of-blend-matrices-when.patch b/patches/wined3d-Indexed_Vertex_Blending/0008-wined3d-Report-correct-number-of-blend-matrices-when.patch index 8aff61bc..feedcd1d 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0008-wined3d-Report-correct-number-of-blend-matrices-when.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0008-wined3d-Report-correct-number-of-blend-matrices-when.patch @@ -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?= 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 diff --git a/patches/wined3d-Indexed_Vertex_Blending/0009-wined3d-Track-updates-of-vertex-blend-matrices-separ.patch b/patches/wined3d-Indexed_Vertex_Blending/0009-wined3d-Track-updates-of-vertex-blend-matrices-separ.patch index 1fb71ef7..f287071c 100644 --- a/patches/wined3d-Indexed_Vertex_Blending/0009-wined3d-Track-updates-of-vertex-blend-matrices-separ.patch +++ b/patches/wined3d-Indexed_Vertex_Blending/0009-wined3d-Track-updates-of-vertex-blend-matrices-separ.patch @@ -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 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