u_vbuf_mgr: add a way to specify the BIND flag for the upload buffer
This commit is contained in:
@@ -114,6 +114,7 @@ struct u_vbuf_mgr *
|
|||||||
u_vbuf_mgr_create(struct pipe_context *pipe,
|
u_vbuf_mgr_create(struct pipe_context *pipe,
|
||||||
unsigned upload_buffer_size,
|
unsigned upload_buffer_size,
|
||||||
unsigned upload_buffer_alignment,
|
unsigned upload_buffer_alignment,
|
||||||
|
unsigned upload_buffer_bind,
|
||||||
enum u_fetch_alignment fetch_alignment)
|
enum u_fetch_alignment fetch_alignment)
|
||||||
{
|
{
|
||||||
struct u_vbuf_mgr_priv *mgr = CALLOC_STRUCT(u_vbuf_mgr_priv);
|
struct u_vbuf_mgr_priv *mgr = CALLOC_STRUCT(u_vbuf_mgr_priv);
|
||||||
@@ -123,7 +124,7 @@ u_vbuf_mgr_create(struct pipe_context *pipe,
|
|||||||
|
|
||||||
mgr->b.uploader = u_upload_create(pipe, upload_buffer_size,
|
mgr->b.uploader = u_upload_create(pipe, upload_buffer_size,
|
||||||
upload_buffer_alignment,
|
upload_buffer_alignment,
|
||||||
PIPE_BIND_VERTEX_BUFFER);
|
upload_buffer_bind);
|
||||||
|
|
||||||
mgr->caps.fetch_dword_unaligned =
|
mgr->caps.fetch_dword_unaligned =
|
||||||
fetch_alignment == U_VERTEX_FETCH_BYTE_ALIGNED;
|
fetch_alignment == U_VERTEX_FETCH_BYTE_ALIGNED;
|
||||||
|
@@ -83,6 +83,7 @@ struct u_vbuf_mgr *
|
|||||||
u_vbuf_mgr_create(struct pipe_context *pipe,
|
u_vbuf_mgr_create(struct pipe_context *pipe,
|
||||||
unsigned upload_buffer_size,
|
unsigned upload_buffer_size,
|
||||||
unsigned upload_buffer_alignment,
|
unsigned upload_buffer_alignment,
|
||||||
|
unsigned upload_buffer_bind,
|
||||||
enum u_fetch_alignment fetch_alignment);
|
enum u_fetch_alignment fetch_alignment);
|
||||||
|
|
||||||
void u_vbuf_mgr_destroy(struct u_vbuf_mgr *mgr);
|
void u_vbuf_mgr_destroy(struct u_vbuf_mgr *mgr);
|
||||||
|
@@ -434,6 +434,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
|
|||||||
r300_init_resource_functions(r300);
|
r300_init_resource_functions(r300);
|
||||||
|
|
||||||
r300->vbuf_mgr = u_vbuf_mgr_create(&r300->context, 1024 * 1024, 16,
|
r300->vbuf_mgr = u_vbuf_mgr_create(&r300->context, 1024 * 1024, 16,
|
||||||
|
PIPE_BIND_VERTEX_BUFFER,
|
||||||
U_VERTEX_FETCH_DWORD_ALIGNED);
|
U_VERTEX_FETCH_DWORD_ALIGNED);
|
||||||
if (!r300->vbuf_mgr)
|
if (!r300->vbuf_mgr)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@@ -166,6 +166,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
|
|||||||
}
|
}
|
||||||
|
|
||||||
rctx->vbuf_mgr = u_vbuf_mgr_create(&rctx->context, 1024 * 1024, 16,
|
rctx->vbuf_mgr = u_vbuf_mgr_create(&rctx->context, 1024 * 1024, 16,
|
||||||
|
PIPE_BIND_VERTEX_BUFFER,
|
||||||
U_VERTEX_FETCH_BYTE_ALIGNED);
|
U_VERTEX_FETCH_BYTE_ALIGNED);
|
||||||
if (!rctx->vbuf_mgr) {
|
if (!rctx->vbuf_mgr) {
|
||||||
r600_destroy_context(&rctx->context);
|
r600_destroy_context(&rctx->context);
|
||||||
|
Reference in New Issue
Block a user