[03/49] wined3d: Return the (binary) write mask from shader_glsl_add_dst_param()

H. Verbeet hverbeet at gmail.com
Mon Jan 15 12:30:28 CST 2007


We need to pass the write mask to shader_glsl_add_src_param() in a
later patch. While at this point we could still simply use "param &
WINED3DSP_WRITEMASK_ALL", the next patch adds some fixups to
shader_glsl_get_write_mask().

Changelog:
  - Return the (binary) write mask from shader_glsl_add_dst_param()
-------------- next part --------------
---

 dlls/wined3d/glsl_shader.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 8d41f25..7d88e0e 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -721,10 +721,11 @@ static void shader_glsl_get_register_name(
 }
 
 /* Get the GLSL write mask for the destination register */
-static void shader_glsl_get_write_mask(const DWORD param, char *write_mask) {
+static DWORD shader_glsl_get_write_mask(const DWORD param, char *write_mask) {
     char *ptr = write_mask;
+    DWORD mask = param & WINED3DSP_WRITEMASK_ALL;
 
-    if ((param & WINED3DSP_WRITEMASK_ALL) != WINED3DSP_WRITEMASK_ALL) {
+    if (mask != WINED3DSP_WRITEMASK_ALL) {
         *ptr++ = '.';
         if (param & WINED3DSP_WRITEMASK_0) *ptr++ = 'x';
         if (param & WINED3DSP_WRITEMASK_1) *ptr++ = 'y';
@@ -733,6 +734,8 @@ static void shader_glsl_get_write_mask(const DWORD param, char *write_mask) {
     }
 
     *ptr = '\0';
+
+    return mask;
 }
 
 static void shader_glsl_get_swizzle(const DWORD param, BOOL fixup, char *swizzle_str) {
@@ -783,15 +786,18 @@ static void shader_glsl_add_src_param(SHADER_OPCODE_ARG* arg, const DWORD param,
 /* From a given parameter token, generate the corresponding GLSL string.
  * Also, return the actual register name and swizzle in case the
  * caller needs this information as well. */
-static void shader_glsl_add_dst_param(SHADER_OPCODE_ARG* arg, const DWORD param,
+static DWORD shader_glsl_add_dst_param(SHADER_OPCODE_ARG* arg, const DWORD param,
         const DWORD addr_token, char *reg_name, char *write_mask, char *out_str) {
     BOOL is_color = FALSE;
+    DWORD mask;
     write_mask[0] = reg_name[0] = out_str[0] = 0;
 
     shader_glsl_get_register_name(param, addr_token, reg_name, &is_color, arg);
 
-    shader_glsl_get_write_mask(param, write_mask);
+    mask = shader_glsl_get_write_mask(param, write_mask);
     sprintf(out_str, "%s%s", reg_name, write_mask);
+
+    return mask;
 }
 
 /** Process GLSL instruction modifiers */


More information about the wine-patches mailing list