svga: minor code refactor for svga_buffer_upload_command()
authorBrian Paul <brianp@vmware.com>
Wed, 22 Jun 2016 23:18:17 +0000 (17:18 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 23 Jun 2016 19:02:28 +0000 (13:02 -0600)
Put the HBS code into a separate function.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_resource_buffer_upload.c

index 1121b780af1ca4e1e4e8d79b74404571fe5cbfbb..a89225ded830a74443a8b09d4c4759a797da34bd 100644 (file)
@@ -223,6 +223,7 @@ svga_buffer_upload_gb_command(struct svga_context *svga,
    struct pipe_resource *dummy;
    unsigned i;
 
+   assert(svga_have_gb_objects(svga));
    assert(numBoxes);
    assert(sbuf->dma.updates == NULL);
 
@@ -318,11 +319,13 @@ svga_buffer_upload_gb_command(struct svga_context *svga,
 
 
 /**
- * Variant of SVGA3D_BufferDMA which leaves the copy box temporarily in blank.
+ * Issue DMA commands to transfer guest memory to the host.
+ * Note that the memory segments (offset, size) will be patched in
+ * later in the svga_buffer_upload_flush() function.
  */
 static enum pipe_error
-svga_buffer_upload_command(struct svga_context *svga,
-                           struct svga_buffer *sbuf)
+svga_buffer_upload_hb_command(struct svga_context *svga,
+                              struct svga_buffer *sbuf)
 {
    struct svga_winsys_context *swc = svga->swc;
    struct svga_winsys_buffer *guest = sbuf->hwbuf;
@@ -336,8 +339,7 @@ svga_buffer_upload_command(struct svga_context *svga,
    unsigned surface_flags;
    struct pipe_resource *dummy;
 
-   if (svga_have_gb_objects(svga))
-      return svga_buffer_upload_gb_command(svga, sbuf);
+   assert(!svga_have_gb_objects(svga));
 
    if (transfer == SVGA3D_WRITE_HOST_VRAM) {
       region_flags = SVGA_RELOC_READ;
@@ -393,6 +395,20 @@ svga_buffer_upload_command(struct svga_context *svga,
 }
 
 
+/**
+ * Issue commands to transfer guest memory to the host.
+ */
+static enum pipe_error
+svga_buffer_upload_command(struct svga_context *svga, struct svga_buffer *sbuf)
+{
+   if (svga_have_gb_objects(svga)) {
+      return svga_buffer_upload_gb_command(svga, sbuf);
+   } else {
+      return svga_buffer_upload_hb_command(svga, sbuf);
+   }
+}
+
+
 /**
  * Patch up the upload DMA command reserved by svga_buffer_upload_command
  * with the final ranges.