summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorAlexandros Frantzis <[email protected]>2019-06-27 10:48:50 +0300
committerChia-I Wu <[email protected]>2019-06-28 04:30:02 +0000
commit7da90a7cc909f691f97473be1e864aeccd5a587b (patch)
tree0df785ecf4204ebd38b15e9f1fd076e3a75a0239 /src/gallium
parent5388be039bc8dc4c0ed2875d0ca35c6f37053948 (diff)
virgl: Don't allow creating staging pipe_resources
Staging buffers are now created directly by the virgl_staging_mgr. We don't need to support creating staging pipe_resources. Signed-off-by: Alexandros Frantzis <[email protected]> Reviewed-by: Chia-I Wu <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/virgl/virgl_buffer.c6
-rw-r--r--src/gallium/drivers/virgl/virgl_resource.h20
-rw-r--r--src/gallium/drivers/virgl/virgl_texture.c6
3 files changed, 8 insertions, 24 deletions
diff --git a/src/gallium/drivers/virgl/virgl_buffer.c b/src/gallium/drivers/virgl/virgl_buffer.c
index bc12f3f8876..fb97ce15aae 100644
--- a/src/gallium/drivers/virgl/virgl_buffer.c
+++ b/src/gallium/drivers/virgl/virgl_buffer.c
@@ -90,12 +90,6 @@ static void virgl_buffer_transfer_unmap(struct pipe_context *ctx,
{
struct virgl_context *vctx = virgl_context(ctx);
struct virgl_transfer *trans = virgl_transfer(transfer);
- struct virgl_screen *vs = virgl_screen(ctx->screen);
- struct pipe_resource *res = transfer->resource;
-
- /* We don't transfer the contents of staging resources, since they don't
- * have any host-side storage. */
- assert(pipe_to_virgl_bind(vs, res->bind, res->flags) != VIRGL_BIND_STAGING);
if (trans->base.usage & PIPE_TRANSFER_WRITE) {
if (transfer->usage & PIPE_TRANSFER_FLUSH_EXPLICIT) {
diff --git a/src/gallium/drivers/virgl/virgl_resource.h b/src/gallium/drivers/virgl/virgl_resource.h
index 47aefb4bd38..f41c1ce98b3 100644
--- a/src/gallium/drivers/virgl/virgl_resource.h
+++ b/src/gallium/drivers/virgl/virgl_resource.h
@@ -33,12 +33,6 @@
#include "virgl_screen.h"
#define VR_MAX_TEXTURE_2D_LEVELS 15
-/* Indicates that the resource will be used as a staging buffer, not requiring
- * dedicated host-side storage. Can only be used with PIPE_BUFFER resources
- * that have a PIPE_BIND_CUSTOM bind type.
- */
-#define VIRGL_RESOURCE_FLAG_STAGING (PIPE_RESOURCE_FLAG_DRV_PRIV << 0)
-
struct winsys_handle;
struct virgl_screen;
struct virgl_context;
@@ -144,12 +138,8 @@ static inline unsigned pipe_to_virgl_bind(const struct virgl_screen *vs,
outbind |= VIRGL_BIND_STREAM_OUTPUT;
if (pbind & PIPE_BIND_CURSOR)
outbind |= VIRGL_BIND_CURSOR;
- if (pbind & PIPE_BIND_CUSTOM) {
- if (flags & VIRGL_RESOURCE_FLAG_STAGING)
- outbind |= VIRGL_BIND_STAGING;
- else
- outbind |= VIRGL_BIND_CUSTOM;
- }
+ if (pbind & PIPE_BIND_CUSTOM)
+ outbind |= VIRGL_BIND_CUSTOM;
if (pbind & PIPE_BIND_SCANOUT)
outbind |= VIRGL_BIND_SCANOUT;
if (pbind & PIPE_BIND_SHARED)
@@ -161,6 +151,12 @@ static inline unsigned pipe_to_virgl_bind(const struct virgl_screen *vs,
if (pbind & PIPE_BIND_COMMAND_ARGS_BUFFER)
if (vs->caps.caps.v2.capability_bits & VIRGL_CAP_BIND_COMMAND_ARGS)
outbind |= VIRGL_BIND_COMMAND_ARGS;
+
+ /* Staging resources should only be created directly through the winsys,
+ * not using pipe_resources.
+ */
+ assert(!(outbind & VIRGL_BIND_STAGING));
+
return outbind;
}
diff --git a/src/gallium/drivers/virgl/virgl_texture.c b/src/gallium/drivers/virgl/virgl_texture.c
index 8a85a28cec4..f33b3f8808d 100644
--- a/src/gallium/drivers/virgl/virgl_texture.c
+++ b/src/gallium/drivers/virgl/virgl_texture.c
@@ -313,14 +313,8 @@ static void virgl_texture_transfer_unmap(struct pipe_context *ctx,
{
struct virgl_context *vctx = virgl_context(ctx);
struct virgl_transfer *trans = virgl_transfer(transfer);
- struct virgl_screen *vs = virgl_screen(ctx->screen);
- struct pipe_resource *res = transfer->resource;
bool queue_unmap = false;
- /* We don't transfer the contents of staging resources, since they don't
- * have any host-side storage. */
- assert(pipe_to_virgl_bind(vs, res->bind, res->flags) != VIRGL_BIND_STAGING);
-
if (transfer->usage & PIPE_TRANSFER_WRITE &&
(transfer->usage & PIPE_TRANSFER_FLUSH_EXPLICIT) == 0) {