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