python/retrace: Dump constants.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Wed, 19 Nov 2008 16:02:03 +0000 (01:02 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Wed, 19 Nov 2008 16:02:03 +0000 (01:02 +0900)
src/gallium/state_trackers/python/retrace/interpreter.py

index 1918fc9bdae69af6ba1f9adf361f39c08d80623f..a7ae4c26259ba35b927271dc20d3031cca266546 100755 (executable)
@@ -28,6 +28,8 @@
 
 
 import sys
+import struct
+
 import gallium
 import model
 import parser
@@ -206,7 +208,8 @@ class Winsys(Object):
                                          4, 
                                          gallium.PIPE_BUFFER_USAGE_CPU_READ |
                                          gallium.PIPE_BUFFER_USAGE_CPU_WRITE )
-        buffer.write(data, size)
+        assert size == len(data)
+        buffer.write(data)
         return buffer
     
     def buffer_create(self, alignment, usage, size):
@@ -216,7 +219,8 @@ class Winsys(Object):
         pass
     
     def buffer_write(self, buffer, data, size):
-        buffer.write(data, size)
+        assert size == len(data)
+        buffer.write(data)
         
     def fence_finish(self, fence, flags):
         pass
@@ -369,6 +373,15 @@ class Context(Object):
         if state is not None:
             self.real.set_constant_buffer(shader, index, state.buffer)
 
+            if 1:
+                data = state.buffer.read()
+                format = '4f'
+                index = 0
+                for offset in range(0, len(data), struct.calcsize(format)):
+                    x, y, z, w = struct.unpack_from(format, data, offset)
+                    sys.stdout.write('\tCONST[%2u] = {%10.4f, %10.4f, %10.4f, %10.4f}\n' % (index, x, y, z, w))
+                    index += 1
+
     def set_framebuffer_state(self, state):
         _state = gallium.Framebuffer()
         _state.width = state.width