diff options
author | Axel Davy <[email protected]> | 2014-12-24 09:58:49 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2015-01-22 22:16:21 +0000 |
commit | 018407b5d8ce894815f940480c52e9791beb9e97 (patch) | |
tree | 67de56590747fb63cd4165972aec1829665896c2 /src | |
parent | 8bbc5e27810a005b8e0c89ab1016a5ba6cff73d2 (diff) |
st/nine: Clamp ps 1.X constants
This is wine (and windows) behaviour.
Reviewed-by: Ilia Mirkin <[email protected]>
Signed-off-by: Axel Davy <[email protected]>
Cc: "10.4" <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/nine/nine_shader.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/nine/nine_shader.c b/src/gallium/state_trackers/nine/nine_shader.c index bd695039e33..883743eb39e 100644 --- a/src/gallium/state_trackers/nine/nine_shader.c +++ b/src/gallium/state_trackers/nine/nine_shader.c @@ -842,6 +842,13 @@ tx_src_param(struct shader_translator *tx, const struct sm1_src_param *param) nine_info_mark_const_f_used(tx->info, param->idx); src = ureg_src_register(TGSI_FILE_CONSTANT, param->idx); } + if (!IS_VS && tx->version.major < 2) { + /* ps 1.X clamps constants */ + tmp = tx_scratch(tx); + ureg_MIN(ureg, tmp, src, ureg_imm1f(ureg, 1.0f)); + ureg_MAX(ureg, tmp, ureg_src(tmp), ureg_imm1f(ureg, -1.0f)); + src = ureg_src(tmp); + } break; case D3DSPR_CONST2: case D3DSPR_CONST3: |