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@lists.freedesktop.org>
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Axel Davy <davyaxel0@gmail.com>
(cherry picked from commit 2d8f77db83)
This commit is contained in:
Danylo Piliaiev 2019-09-24 14:12:39 +03:00 committed by Juan A. Suarez Romero
parent a74657d4aa
commit 2963e9fa3d

View file

@ -1802,7 +1802,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;
}