turnip: tu_cs_emit_array
authorChia-I Wu <olvaffe@gmail.com>
Mon, 25 Feb 2019 22:57:03 +0000 (14:57 -0800)
committerChia-I Wu <olvaffe@gmail.com>
Mon, 11 Mar 2019 17:02:13 +0000 (10:02 -0700)
Array version of tu_cs_emit.  Useful for updating multiple
consecutive array-like registers, or loading a shader binary with
SS6_DIRECT.

src/freedreno/vulkan/tu_cs.h

index 4df7fb806e3046329af0645a79165844716cc828..f3e0ade2a367b985316cd49fe60f78406166edef 100644 (file)
@@ -103,6 +103,17 @@ tu_cs_emit(struct tu_cs *cs, uint32_t value)
    ++cs->cur;
 }
 
+/**
+ * Emit an array of uint32_t into a command stream, without boundary checking.
+ */
+static inline void
+tu_cs_emit_array(struct tu_cs *cs, const uint32_t *values, uint32_t length)
+{
+   assert(cs->cur + length <= cs->reserved_end);
+   memcpy(cs->cur, values, sizeof(uint32_t) * length);
+   cs->cur += length;
+}
+
 static inline unsigned
 tu_odd_parity_bit(unsigned val)
 {