Mesa (master): r600g: check for R600_STREAMOUT env var in winsys

Marek Olšák mareko at kemper.freedesktop.org
Mon Feb 27 01:04:42 UTC 2012


Module: Mesa
Branch: master
Commit: 622b65d33bcc46a6b2cede6081b32a26a4ec7c7f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=622b65d33bcc46a6b2cede6081b32a26a4ec7c7f

Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri Feb 24 00:38:33 2012 +0100

r600g: check for R600_STREAMOUT env var in winsys

---

 src/gallium/drivers/r600/r600_pipe.c              |    4 ++--
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.c |    4 ++++
 src/gallium/winsys/radeon/drm/radeon_winsys.h     |    1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 3a68d47..9929baa 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -421,9 +421,9 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
 
 	/* Stream output. */
 	case PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS:
-		return debug_get_bool_option("R600_STREAMOUT", FALSE) ? 4 : 0;
+		return rscreen->info.r600_has_streamout ? 4 : 0;
 	case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME:
-		return debug_get_bool_option("R600_STREAMOUT", FALSE) ? 1 : 0;
+		return rscreen->info.r600_has_streamout ? 1 : 0;
 	case PIPE_CAP_MAX_STREAM_OUTPUT_SEPARATE_COMPONENTS:
 	case PIPE_CAP_MAX_STREAM_OUTPUT_INTERLEAVED_COMPONENTS:
 		return 16*4;
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
index 0c83c68..956fe85 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
@@ -278,6 +278,7 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws)
                                       &ws->info.r600_backend_map))
                 ws->info.r600_backend_map_valid = TRUE;
         }
+
         ws->info.r600_virtual_address = FALSE;
         if (ws->info.drm_minor >= 13) {
             ws->info.r600_virtual_address = TRUE;
@@ -288,6 +289,9 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws)
                                       &ws->info.r600_ib_vm_max_size))
                 ws->info.r600_virtual_address = FALSE;
         }
+
+	/* XXX don't enable this for R700 yet, it's broken on those asics */
+	ws->info.r600_has_streamout = debug_get_bool_option("R600_STREAMOUT", FALSE);
     }
 
     return TRUE;
diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h
index 6fbe765..ef07d37 100644
--- a/src/gallium/winsys/radeon/drm/radeon_winsys.h
+++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h
@@ -99,6 +99,7 @@ struct radeon_info {
     boolean r600_virtual_address;
     uint32_t r600_va_start;
     uint32_t r600_ib_vm_max_size;
+    boolean r600_has_streamout;
 };
 
 enum radeon_feature_id {




More information about the mesa-commit mailing list