Mesa (staging/19.2): st/nine: Ignore D3DSIO_RET if it is the last instruction in a shader
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Sep 26 15:48:26 UTC 2019
Module: Mesa
Branch: staging/19.2
Commit: 960ab3e465f876195ea238d873fb2d4637f10d97
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=960ab3e465f876195ea238d873fb2d4637f10d97
Author: Danylo Piliaiev <danylo.piliaiev at globallogic.com>
Date: Tue Sep 24 14:12:39 2019 +0300
st/nine: Ignore D3DSIO_RET if it is the last instruction in a shader
RET as a last instruction could be safely ignored.
Remove it to prevent crashes/warnings in case underlying driver
doesn't implement arbitrary returns.
A better way would be to remove the RET after the whole shader
is parsed which will handle a possible case when the last RET is
followed by a comment.
CC: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Danylo Piliaiev <danylo.piliaiev at globallogic.com>
Reviewed-by: Axel Davy <davyaxel0 at gmail.com>
(cherry picked from commit 2d8f77db839cb3a83f0b1575a028d5aa4258c322)
---
src/gallium/state_trackers/nine/nine_shader.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/gallium/state_trackers/nine/nine_shader.c b/src/gallium/state_trackers/nine/nine_shader.c
index 93910f90741..1117b55faa1 100644
--- a/src/gallium/state_trackers/nine/nine_shader.c
+++ b/src/gallium/state_trackers/nine/nine_shader.c
@@ -1803,7 +1803,13 @@ DECL_SPECIAL(LOOP)
DECL_SPECIAL(RET)
{
- ureg_RET(tx->ureg);
+ /* RET as a last instruction could be safely ignored.
+ * Remove it to prevent crashes/warnings in case underlying
+ * driver doesn't implement arbitrary returns.
+ */
+ if (*(tx->parse_next) != NINED3DSP_END) {
+ ureg_RET(tx->ureg);
+ }
return D3D_OK;
}
More information about the mesa-commit
mailing list