On 11.06.2017 20:42, Karol Herbst wrote:
Signed-off-by: Karol Herbst <[email protected]>
---
  src/gallium/auxiliary/tgsi/tgsi_text.c | 15 +++++++++++++--
  1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c 
b/src/gallium/auxiliary/tgsi/tgsi_text.c
index 93a05568f4..c5fcb3283d 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -999,6 +999,7 @@ parse_texoffset_operand(
  static boolean
  match_inst(const char **pcur,
             unsigned *saturate,
+           unsigned *precise,
             const struct tgsi_opcode_info *info)
  {
     const char *cur = *pcur;
@@ -1007,6 +1008,7 @@ match_inst(const char **pcur,
     if (str_match_nocase_whole(&cur, info->mnemonic)) {
        *pcur = cur;
        *saturate = 0;
+      *precise = 0;
        return TRUE;
     }
@@ -1015,8 +1017,15 @@ match_inst(const char **pcur,
        if (str_match_nocase_whole(&cur, "_SAT")) {
           *pcur = cur;
           *saturate = 1;
-         return TRUE;
        }
+
+      if (str_match_nocase_whole(&cur, "_PRECISE")) {
+         *pcur = cur;
+         *precise = 1;
+      }

I think this doesn't properly handle the case where both _SAT and _PRECISE are present, because of using str_match_nocase_whole.

Cheers,
Nicolai

+
+      if (*precise || *saturate)
+         return TRUE;
     }
return FALSE;
@@ -1029,6 +1038,7 @@ parse_instruction(
  {
     uint i;
     uint saturate = 0;
+   uint precise = 0;
     const struct tgsi_opcode_info *info;
     struct tgsi_full_instruction inst;
     const char *cur;
@@ -1043,7 +1053,7 @@ parse_instruction(
        cur = ctx->cur;
info = tgsi_get_opcode_info( i );
-      if (match_inst(&cur, &saturate, info)) {
+      if (match_inst(&cur, &saturate, &precise, info)) {
           if (info->num_dst + info->num_src + info->is_tex == 0) {
              ctx->cur = cur;
              break;
@@ -1064,6 +1074,7 @@ parse_instruction(
inst.Instruction.Opcode = i;
     inst.Instruction.Saturate = saturate;
+   inst.Instruction.Precise = precise;
     inst.Instruction.NumDstRegs = info->num_dst;
     inst.Instruction.NumSrcRegs = info->num_src;


--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
Nouveau mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to