python/retrace: Cope with null constant buffers.
[mesa.git] / src / gallium / state_trackers / python / retrace / interpreter.py
index bc06429b77f4c9b7c89a38dc425381c2e1a80593..348f2e436831e89186895fc4a140e06ebf36de63 100755 (executable)
@@ -314,7 +314,7 @@ class Screen(Object):
         if texture is None:
             return None
         transfer = Transfer(texture.get_surface(face, level, zslice), x, y, w, h)
-        if transfer and usage != gallium.PIPE_TRANSFER_WRITE:
+        if transfer and usage & gallium.PIPE_TRANSFER_READ:
             if self.interpreter.options.all:
                 self.interpreter.present(transfer.surface, 'transf_read', x, y, w, h)
         return transfer
@@ -459,7 +459,7 @@ class Context(Object):
         sys.stdout.flush()
 
     def set_constant_buffer(self, shader, index, buffer):
-        if buffer is not None:
+        if buffer is not None and buffer.buffer is not None:
             self.real.set_constant_buffer(shader, index, buffer.buffer)
 
             self.dump_constant_buffer(buffer.buffer)
@@ -677,7 +677,7 @@ class Interpreter(parser.TraceDumper):
             self.interpret_call(call)
 
     def handle_call(self, call):
-        if self.options.stop and call.no >= self.options.stop:
+        if self.options.stop and call.no > self.options.stop:
             sys.exit(0)
 
         if (call.klass, call.method) in self.ignore_calls: