[PATCH 1/5] wined3d: Introduce a get_identity_matrix() function.

Matteo Bruni mbruni at codeweavers.com
Wed Mar 18 15:07:34 CDT 2015


---
 dlls/wined3d/stateblock.c      |  9 ++-------
 dlls/wined3d/utils.c           | 13 +++++++++++++
 dlls/wined3d/wined3d_private.h |  2 ++
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index dc146fc..62b1841 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -1121,16 +1121,11 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
         DWORD d;
     } tmpfloat;
     unsigned int i;
-    static const struct wined3d_matrix 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,
-    }}};
+    struct wined3d_matrix identity;
 
     TRACE("state %p, gl_info %p.\n", state, gl_info);
 
+    get_identity_matrix(&identity);
     state->gl_primitive_type = ~0u;
 
     /* Set some of the defaults for lights, transforms etc */
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 725318f..551dca8 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -3117,6 +3117,19 @@ BOOL is_invalid_op(const struct wined3d_state *state, int stage,
     return FALSE;
 }
 
+void get_identity_matrix(struct wined3d_matrix *mat)
+{
+    static const struct wined3d_matrix 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,
+    }}};
+
+    *mat = identity;
+}
+
 /* Setup this textures matrix according to the texture flags. */
 /* Context activation is done by the caller (state handler). */
 void set_texture_matrix(const struct wined3d_gl_info *gl_info, const float *smat, DWORD flags,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index b0c7a53..4f03b1b 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3037,6 +3037,8 @@ static inline BOOL shader_constant_is_local(const struct wined3d_shader *shader,
     return FALSE;
 }
 
+void get_identity_matrix(struct wined3d_matrix *mat) DECLSPEC_HIDDEN;
+
 /* Using additional shader constants (uniforms in GLSL / program environment
  * or local parameters in ARB) is costly:
  * ARB only knows float4 parameters and GLSL compiler are not really smart
-- 
2.0.5




More information about the wine-patches mailing list