[gtk+/wip/otte/shader: 119/176] gskslexpression: Add spv writing optimization



commit 7af3a24a6d4c2d47eb57b4c8041c78c8b66f6b9e
Author: Benjamin Otte <otte redhat com>
Date:   Tue Oct 10 04:02:08 2017 +0200

    gskslexpression: Add spv writing optimization
    
    For assignable expressions, we can always use an access chain to query
    the value. Access chains are not just faster, they also contain lots of
    optimizations for merging swizzles and whatnot.

 gsk/gskslexpression.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/gsk/gskslexpression.c b/gsk/gskslexpression.c
index f0c79c3..5e76756 100644
--- a/gsk/gskslexpression.c
+++ b/gsk/gskslexpression.c
@@ -2654,5 +2654,16 @@ guint32
 gsk_sl_expression_write_spv (const GskSlExpression *expression,
                              GskSpvWriter          *writer)
 {
+  GskSpvAccessChain *chain;
+  guint32 result_id;
+
+  chain = gsk_sl_expression_get_spv_access_chain (expression, writer);
+  if (chain)
+    {
+      result_id = gsk_spv_access_chain_load (chain);
+      gsk_spv_access_chain_free (chain);
+      return result_id;
+    }
+
   return expression->class->write_spv (expression, writer);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]