Stefan Dösinger : wined3d: Support ABS and ABSNEG with NV extensions if available.

Alexandre Julliard julliard at winehq.org
Thu May 21 09:35:52 CDT 2009


Module: wine
Branch: master
Commit: d0756ee537514795d20486809900f29933c4181a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d0756ee537514795d20486809900f29933c4181a

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu May 21 12:00:16 2009 +0200

wined3d: Support ABS and ABSNEG with NV extensions if available.

---

 dlls/wined3d/arb_program_shader.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 7e56175..63dd81e 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -811,6 +811,7 @@ static void shader_arb_get_src_param(const struct wined3d_shader_instruction *in
     char swzstr[20];
     int insert_line;
     SHADER_BUFFER *buffer = ins->ctx->buffer;
+    struct shader_arb_ctx_priv *ctx = ins->ctx->backend_data;
 
     /* Assume a new line will be added */
     insert_line = 1;
@@ -859,11 +860,20 @@ static void shader_arb_get_src_param(const struct wined3d_shader_instruction *in
         shader_addline(buffer, "MUL T%c, %s, T%c;\n", 'A' + tmpreg, regstr, 'A' + tmpreg);
         break;
     case WINED3DSPSM_ABS:
-        shader_addline(buffer, "ABS T%c, %s;\n", 'A' + tmpreg, regstr);
+        if(ctx->target_version >= NV2) {
+            sprintf(outregstr, "|%s%s|", regstr, swzstr);
+            insert_line = 0;
+        } else {
+            shader_addline(buffer, "ABS T%c, %s;\n", 'A' + tmpreg, regstr);
+        }
         break;
     case WINED3DSPSM_ABSNEG:
-        shader_addline(buffer, "ABS T%c, %s;\n", 'A' + tmpreg, regstr);
-        sprintf(outregstr, "-T%c%s", 'A' + tmpreg, swzstr);
+        if(ctx->target_version >= NV2) {
+            sprintf(outregstr, "-|%s%s|", regstr, swzstr);
+        } else {
+            shader_addline(buffer, "ABS T%c, %s;\n", 'A' + tmpreg, regstr);
+            sprintf(outregstr, "-T%c%s", 'A' + tmpreg, swzstr);
+        }
         insert_line = 0;
         break;
     default:




More information about the wine-cvs mailing list