summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2016-02-09 23:15:21 +0100
committerAxel Davy <[email protected]>2016-05-18 23:37:14 +0200
commit44068af92e7500a63425905fc7a3a6a0db5c665a (patch)
tree3d91bc64938b12b8a551cb3ac67d6334c8866a1e
parenta77d8cd710ec5091e9c31167032427189ae77437 (diff)
st/nine: Fix some shader failures not triggering error
Some failures during shader translation would not raise errors before this patch. Signed-off-by: Axel Davy <[email protected]>
-rw-r--r--src/gallium/state_trackers/nine/nine_shader.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/nine/nine_shader.c b/src/gallium/state_trackers/nine/nine_shader.c
index 4698fd77e97..a9d5a59d68a 100644
--- a/src/gallium/state_trackers/nine/nine_shader.c
+++ b/src/gallium/state_trackers/nine/nine_shader.c
@@ -3116,6 +3116,7 @@ static void
sm1_parse_instruction(struct shader_translator *tx)
{
struct sm1_instruction *insn = &tx->insn;
+ HRESULT hr;
DWORD tok;
struct sm1_op_info *info = NULL;
unsigned i;
@@ -3180,11 +3181,13 @@ sm1_parse_instruction(struct shader_translator *tx)
sm1_instruction_check(insn);
if (info->handler)
- info->handler(tx);
+ hr = info->handler(tx);
else
- NineTranslateInstruction_Generic(tx);
+ hr = NineTranslateInstruction_Generic(tx);
tx_apply_dst0_modifiers(tx);
+ if (hr != D3D_OK)
+ tx->failure = TRUE;
tx->num_scratch = 0; /* reset */
TOKEN_JUMP(tx);