r300-gallium, radeon-winsys: Hide radeon_cs from r300 pipe.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 1 May 2009 13:01:52 +0000 (06:01 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 1 May 2009 13:01:52 +0000 (06:01 -0700)
src/gallium/drivers/r300/r300_winsys.h
src/gallium/winsys/drm/radeon/core/radeon_buffer.c
src/gallium/winsys/drm/radeon/core/radeon_buffer.h
src/gallium/winsys/drm/radeon/core/radeon_r300.c

index 761aedebfcfb1871dea0a5ecd21ba301c2d71392..a833bb0399af7021c01753ce73e8c63bf794de9f 100644 (file)
@@ -42,11 +42,6 @@ struct r300_winsys {
     /* Opaque Radeon-specific winsys object. */
     void* radeon_winsys;
 
-    /* CS object. This is very much like Intel's batchbuffer.
-     * Fill it full of dwords and relocs and then submit.
-     * Repeat as needed. */
-    struct radeon_cs* cs;
-
     /* PCI ID */
     uint32_t pci_id;
 
index 6313eb219eca7a0a4381b430e36ed678b38261b7..a15487352b22dbce33c8125bb3c6430b4ac664fb 100644 (file)
@@ -175,8 +175,7 @@ struct radeon_winsys* radeon_pipe_winsys(int fd)
         return NULL;
     }
 
-    bom = radeon_bo_manager_gem_ctor(fd);
-    radeon_ws->priv->bom = bom;
+    radeon_ws->priv->bom = radeon_bo_manager_gem_ctor(fd);
 
     radeon_ws->base.flush_frontbuffer = radeon_flush_frontbuffer;
 
index 73fa362acab3aacb834d02cec40fc9ca34c7b42d..ca8bbb3c117366e3894c9419e173fe4b59be635f 100644 (file)
@@ -60,6 +60,12 @@ struct radeon_winsys_priv {
     struct radeon_cs_space_check sc[RADEON_MAX_BOS];
     /* Current BO count. */
     unsigned bo_count;
+
+    /* Radeon CS manager. */
+    struct radeon_cs_manager* csm;
+
+    /* Current CS. */
+    struct radeon_cs* cs;
 };
 
 struct radeon_winsys {
index b17210743220f0d1ebfcc06b335f94187ff357ed..ac6cca36bfe79c2639db322a41ad160a764b9b66 100644 (file)
@@ -57,7 +57,7 @@ static boolean radeon_r300_validate(struct r300_winsys* winsys)
         (struct radeon_winsys_priv*)winsys->radeon_winsys;
     struct radeon_cs_space_check* sc = priv->sc;
 
-    retval = radeon_cs_space_check(winsys->cs, sc, priv->bo_count);
+    retval = radeon_cs_space_check(priv->cs, sc, priv->bo_count);
 
     if (retval == RADEON_CS_SPACE_OP_TO_BIG) {
         /* XXX we need to failover here */
@@ -83,13 +83,19 @@ static void radeon_r300_begin_cs(struct r300_winsys* winsys,
                                  const char* function,
                                  int line)
 {
-    radeon_cs_begin(winsys->cs, size, file, function, line);
+    struct radeon_winsys_priv* priv =
+        (struct radeon_winsys_priv*)winsys->radeon_winsys;
+
+    radeon_cs_begin(priv->cs, size, file, function, line);
 }
 
 static void radeon_r300_write_cs_dword(struct r300_winsys* winsys,
                                        uint32_t dword)
 {
-    radeon_cs_write_dword(winsys->cs, dword);
+    struct radeon_winsys_priv* priv =
+        (struct radeon_winsys_priv*)winsys->radeon_winsys;
+
+    radeon_cs_write_dword(priv->cs, dword);
 }
 
 static void radeon_r300_write_cs_reloc(struct r300_winsys* winsys,
@@ -98,7 +104,10 @@ static void radeon_r300_write_cs_reloc(struct r300_winsys* winsys,
                                        uint32_t wd,
                                        uint32_t flags)
 {
-    radeon_cs_write_reloc(winsys->cs,
+    struct radeon_winsys_priv* priv =
+        (struct radeon_winsys_priv*)winsys->radeon_winsys;
+
+    radeon_cs_write_reloc(priv->cs,
             ((struct radeon_pipe_buffer*)pbuffer)->bo, rd, wd, flags);
 }
 
@@ -107,19 +116,24 @@ static void radeon_r300_end_cs(struct r300_winsys* winsys,
                                const char* function,
                                int line)
 {
-    radeon_cs_end(winsys->cs, file, function, line);
+    struct radeon_winsys_priv* priv =
+        (struct radeon_winsys_priv*)winsys->radeon_winsys;
+
+    radeon_cs_end(priv->cs, file, function, line);
 }
 
 static void radeon_r300_flush_cs(struct r300_winsys* winsys)
 {
+    struct radeon_winsys_priv* priv =
+        (struct radeon_winsys_priv*)winsys->radeon_winsys;
     int retval = 0;
 
-    retval = radeon_cs_emit(winsys->cs);
+    retval = radeon_cs_emit(priv->cs);
     if (retval) {
         debug_printf("radeon: Bad CS, dumping...\n");
-        radeon_cs_print(winsys->cs, stderr);
+        radeon_cs_print(priv->cs, stderr);
     }
-    radeon_cs_erase(winsys->cs);
+    radeon_cs_erase(priv->cs);
 }
 
 /* Helper function to do the ioctls needed for setup and init. */
@@ -169,20 +183,22 @@ struct r300_winsys*
 radeon_create_r300_winsys(int fd, struct radeon_winsys* old_winsys)
 {
     struct r300_winsys* winsys = CALLOC_STRUCT(r300_winsys);
-    struct radeon_cs_manager* csm;
+    struct radeon_winsys_priv* priv;
 
     if (winsys == NULL) {
         return NULL;
     }
 
+    priv = old_winsys->priv;
+
     do_ioctls(winsys, fd);
 
-    csm = radeon_cs_manager_gem_ctor(fd);
+    priv->csm = radeon_cs_manager_gem_ctor(fd);
 
-    winsys->cs = radeon_cs_create(csm, 1024 * 64 / 4);
-    radeon_cs_set_limit(winsys->cs,
+    priv->cs = radeon_cs_create(priv->csm, 1024 * 64 / 4);
+    radeon_cs_set_limit(priv->cs,
             RADEON_GEM_DOMAIN_GTT, winsys->gart_size);
-    radeon_cs_set_limit(winsys->cs,
+    radeon_cs_set_limit(priv->cs,
             RADEON_GEM_DOMAIN_VRAM, winsys->vram_size);
 
     winsys->add_buffer = radeon_r300_add_buffer;