diff options
author | Marek Olšák <[email protected]> | 2017-01-27 00:12:37 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-02-14 21:46:16 +0100 |
commit | 55ad59d2b72d6d6e38bd0a54586b713a7a93bb10 (patch) | |
tree | eb46201b7ce87773e0199399a75a469c389f3dc7 /src/gallium/drivers/swr/swr_context.cpp | |
parent | 998396c32e4e95fef5a1efef6cb1a9efb0868aa6 (diff) |
gallium: set pipe_context uploaders in drivers (v3)
Notes:
- make sure the default size is large enough to handle all state trackers
- pipe wrappers don't receive transfer calls from stream_uploader, because
pipe_context::stream_uploader points directly to the underlying driver's
stream_uploader (to keep it simple for now)
v2: add error handling to nv50, nvc0, noop
v3: set const_uploader
Reviewed-by: Nicolai Hähnle <[email protected]>
Tested-by: Edmondo Tommasina <[email protected]> (v1)
Tested-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src/gallium/drivers/swr/swr_context.cpp')
-rw-r--r-- | src/gallium/drivers/swr/swr_context.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/swr_context.cpp b/src/gallium/drivers/swr/swr_context.cpp index 89330857ae0..2e37bacfac6 100644 --- a/src/gallium/drivers/swr/swr_context.cpp +++ b/src/gallium/drivers/swr/swr_context.cpp @@ -33,6 +33,7 @@ #include "util/u_inlines.h" #include "util/u_format.h" #include "util/u_atomic.h" +#include "util/u_upload_mgr.h" extern "C" { #include "util/u_transfer.h" @@ -369,6 +370,9 @@ swr_destroy(struct pipe_context *pipe) pipe_sampler_view_reference(&ctx->sampler_views[PIPE_SHADER_VERTEX][i], NULL); } + if (ctx->pipe.stream_uploader) + u_upload_destroy(ctx->pipe.stream_uploader); + /* Idle core after destroying buffer resources, but before deleting * context. Destroying resources has potentially called StoreTiles.*/ SwrWaitForIdle(ctx->swrContext); @@ -493,6 +497,11 @@ swr_create_context(struct pipe_screen *p_screen, void *priv, unsigned flags) swr_draw_init(&ctx->pipe); swr_query_init(&ctx->pipe); + ctx->pipe.stream_uploader = u_upload_create_default(&ctx->pipe); + if (!ctx->pipe.stream_uploader) + goto fail; + ctx->pipe.const_uploader = ctx->pipe.stream_uploader; + ctx->pipe.blit = swr_blit; ctx->blitter = util_blitter_create(&ctx->pipe); if (!ctx->blitter) |