Module: Mesa
Branch: refs/keep-around/047ed02723071d7eccbed3210b5be6ae73603a53
Commit: 047ed02723071d7eccbed3210b5be6ae73603a53
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=047ed02723071d7eccbed3210b5be6ae73603a53

Author: Jason Ekstrand <[email protected]>
Date:   Wed Jun 10 12:43:02 2015 -0700

vk/emit: Use valgrind to validate every packed field

---

 src/vulkan/gen8_pack.h | 7 +++++++
 src/vulkan/private.h   | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/vulkan/gen8_pack.h b/src/vulkan/gen8_pack.h
index aeb5dadd02..54ad55ab49 100644
--- a/src/vulkan/gen8_pack.h
+++ b/src/vulkan/gen8_pack.h
@@ -32,6 +32,10 @@
 #include <stdio.h>
 #include <assert.h>
 
+#ifndef __gen_validate_value
+#define __gen_validate_value(x)
+#endif
+
 #ifndef __gen_field_functions
 #define __gen_field_functions
 
@@ -43,6 +47,7 @@ union __gen_value {
 static inline uint64_t
 __gen_field(uint64_t v, uint32_t start, uint32_t end)
 {
+   __gen_validate_value(v);
 #if DEBUG
    if (end - start + 1 < 64)
       assert(v < 1ul << (end - start + 1));
@@ -54,6 +59,7 @@ __gen_field(uint64_t v, uint32_t start, uint32_t end)
 static inline uint64_t
 __gen_offset(uint64_t v, uint32_t start, uint32_t end)
 {
+   __gen_validate_value(v);
 #if DEBUG
    uint64_t mask = (~0ul >> (64 - (end - start + 1))) << start;
 
@@ -66,6 +72,7 @@ __gen_offset(uint64_t v, uint32_t start, uint32_t end)
 static inline uint32_t
 __gen_float(float v)
 {
+   __gen_validate_value(v);
    return ((union __gen_value) { .f = (v) }).dw;
 }
 
diff --git a/src/vulkan/private.h b/src/vulkan/private.h
index 7ffba4f63b..095f8f0f86 100644
--- a/src/vulkan/private.h
+++ b/src/vulkan/private.h
@@ -34,6 +34,7 @@
 #include <valgrind.h>
 #include <memcheck.h>
 #define VG(x) x
+#define __gen_validate_value(x) VALGRIND_CHECK_MEM_IS_DEFINED(&(x), sizeof(x))
 #else
 #define VG(x)
 #endif
@@ -488,7 +489,6 @@ __gen_combine_address(struct anv_batch *batch, void 
*location,
       };                                                                \
       void *__dst = anv_batch_emit_dwords(batch, cmd ## _length);       \
       cmd ## _pack(batch, __dst, &__template);                          \
-      VG(VALGRIND_CHECK_MEM_IS_DEFINED(__dst, (cmd ## _length) * 4));   \
    } while (0)
 
 #define anv_batch_emitn(batch, n, cmd, ...) ({          \

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to