From 7fe3631a7a0ad7602b4e947ac87ef86875c8bb3f Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Tue, 10 Apr 2012 05:14:26 +0200 Subject: u_vbuf: make use of the new CAPs to determine what to do This adds the ability to initialize u_vbuf_caps before creating u_vbuf itself. It will be useful for determining if u_vbuf should be used or not. Also adapt r300g and r600g. --- src/gallium/drivers/r300/r300_context.c | 11 +++++++---- src/gallium/drivers/r300/r300_screen.c | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/gallium/drivers/r300') diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index 74d5e8ed36c..fd464f32afd 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -428,13 +428,16 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, r300->context.create_video_buffer = vl_video_buffer_create; if (r300->screen->caps.has_tcl) { - r300->vbuf_mgr = u_vbuf_create(&r300->context, 1024 * 1024, 4, + struct u_vbuf_caps caps; + + u_vbuf_get_caps(screen, &caps); + caps.format_fixed32 = 0; + + r300->vbuf_mgr = u_vbuf_create(&r300->context, &caps, 1024 * 1024, 4, PIPE_BIND_VERTEX_BUFFER | - PIPE_BIND_INDEX_BUFFER, - U_VERTEX_FETCH_DWORD_ALIGNED); + PIPE_BIND_INDEX_BUFFER); if (!r300->vbuf_mgr) goto fail; - r300->vbuf_mgr->caps.format_fixed32 = 0; } r300->blitter = util_blitter_create(&r300->context); diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index d12fa4e8249..8c12865e9ce 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -103,6 +103,9 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_CAN_COMPACT_VARYINGS: case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS: case PIPE_CAP_VERTEX_COLOR_CLAMPED: + case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY: + case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY: + case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY: return 1; case PIPE_CAP_GLSL_FEATURE_LEVEL: @@ -141,6 +144,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME: case PIPE_CAP_FRAGMENT_COLOR_CLAMPED: case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: + case PIPE_CAP_USER_VERTEX_BUFFERS: return 0; /* SWTCL-only features. */ -- cgit v1.2.3