summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2018-04-04 16:04:25 +0200
committerThierry Reding <treding@nvidia.com>2018-05-29 16:48:37 +0200
commit9e539012dfaa848fc4cfde83c3f3a83fee274ca4 (patch)
tree235069029b566aa10c7b6796fd4536c114defbb5 /src
parent9603d81df05105857b676f20dff964ef3ab0ecff (diff)
tegra: Treat resources with modifiers as scanout
Resources created with modifiers are treated as scanout because there is no way for applications to specify the usage (though that capability may be useful to have in the future). Currently all the resources created by applications with modifiers are for scanout, so make sure they have bind flags set accordingly. This is necessary in order to properly export buffers for such resources so that they can be shared with scanout hardware. Tested-by: Daniel Kolesa <daniel@octaforge.org> Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/tegra/tegra_screen.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/tegra/tegra_screen.c b/src/gallium/drivers/tegra/tegra_screen.c
index 8b61c090160..e03e71f81a2 100644
--- a/src/gallium/drivers/tegra/tegra_screen.c
+++ b/src/gallium/drivers/tegra/tegra_screen.c
@@ -515,6 +515,7 @@ tegra_screen_resource_create_with_modifiers(struct pipe_screen *pscreen,
int count)
{
struct tegra_screen *screen = to_tegra_screen(pscreen);
+ struct pipe_resource tmpl = *template;
struct tegra_resource *resource;
int err;
@@ -522,8 +523,18 @@ tegra_screen_resource_create_with_modifiers(struct pipe_screen *pscreen,
if (!resource)
return NULL;
+ /*
+ * Assume that resources created with modifiers will always be used for
+ * scanout. This is necessary because some of the APIs that are used to
+ * create resources with modifiers (e.g. gbm_bo_create_with_modifiers())
+ * can't pass along usage information. Adding that capability might be
+ * worth adding to remove this ambiguity. Not all future use-cases that
+ * involve modifiers may always be targetting scanout hardware.
+ */
+ tmpl.bind |= PIPE_BIND_SCANOUT;
+
resource->gpu = screen->gpu->resource_create_with_modifiers(screen->gpu,
- template,
+ &tmpl,
modifiers,
count);
if (!resource->gpu)