From 622b65d33bcc46a6b2cede6081b32a26a4ec7c7f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 24 Feb 2012 00:38:33 +0100 Subject: [PATCH] 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 { -- 2.7.4