summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/nine/pixelshader9.h
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2015-05-14 01:27:33 +0200
committerAxel Davy <[email protected]>2015-08-21 22:21:48 +0200
commit4a00e4cdc970582df338ebf880168a4ef4ec05d9 (patch)
tree723eb1477cdae122d7a9b02a82256ca948bf5db1 /src/gallium/state_trackers/nine/pixelshader9.h
parentb7261528ea964f6cba3173f72608c1afc0750d6b (diff)
st/nine: Programmable ps D3DTTSS_PROJECTED support
The implementation used Wine tests for conformance Signed-off-by: Axel Davy <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/nine/pixelshader9.h')
-rw-r--r--src/gallium/state_trackers/nine/pixelshader9.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/nine/pixelshader9.h b/src/gallium/state_trackers/nine/pixelshader9.h
index 5d1f5041c47..e09009f6621 100644
--- a/src/gallium/state_trackers/nine/pixelshader9.h
+++ b/src/gallium/state_trackers/nine/pixelshader9.h
@@ -27,6 +27,7 @@
#include "nine_shader.h"
#include "nine_state.h"
#include "basetexture9.h"
+#include "nine_ff.h"
struct nine_lconstf;
@@ -67,6 +68,7 @@ NinePixelShader9_UpdateKey( struct NinePixelShader9 *ps,
{
uint16_t samplers_shadow;
uint32_t samplers_ps1_types;
+ uint16_t projected;
uint64_t key;
BOOL res;
@@ -90,6 +92,11 @@ NinePixelShader9_UpdateKey( struct NinePixelShader9 *ps,
key |= ((uint64_t)state->rs[D3DRS_FOGTABLEMODE]) << 33;
}
+ if (unlikely(ps->byte_code.version < 0x14)) {
+ projected = nine_ff_get_projected_key(state);
+ key |= ((uint64_t) projected) << 48;
+ }
+
res = ps->last_key != key;
if (res)
ps->next_key = key;