On 09/29/2017 10:45 AM, Andy Furniss wrote:
Marek Olšák wrote:
Can you test this?

My mpv test case is fixed by

radeonsi/uvd: fix planar formats broken since f70f6baaa3bb0f8b280ac2eaea69bb

With Andy's information that this happens on newer MPV, and with Marek's fixes, we know MPV is changed to interop decode buffer instead of previous output buffer, which means the CSC is done within MPV by most likely calling GL directly instead of previously done by VL shader. This might increase CPU usage for MPV in general.

Leo




Thanks,
Marek

On Fri, Sep 29, 2017 at 1:51 AM, Andy Furniss <adf.li...@gmail.com> wrote:
Mark Thompson wrote:

This reverts commit f70f6baaa3bb0f8b280ac2eaea69bbffaf7de840.


I just bisected to this as it also breaks

mpv --hwdec=vdpau --vo=opengl

amdgpu: The CS has been rejected, see dmesg for more information (-22).
amdgpu: The CS has been cancelled because the context is lost.

[drm:amdgpu_uvd_cs_pass2 [amdgpu]] *ERROR* buffer (2) to small (8355840 /
12441600)!



---
This commit broke VAAPI surface export (found by bisection). I think the
observed behaviour with playback is consistent with surfaces not being
updated some of the time, so something to do with sharing? I tried setting PIPE_BIND_SHARED on the surfaces explicitly, but that didn't help so I'm
somewhat unclear what's going on exactly.

I've included this patch in the series as a revert because it makes it
testable for other people, but it would be better if someone who understands how these interact could have a look and decide how to fix it properly.

Thanks,

- Mark


   src/gallium/drivers/radeon/r600_buffer_common.c | 13 +++++++++----
   src/gallium/drivers/radeon/r600_texture.c       |  4 ++++
   2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c
b/src/gallium/drivers/radeon/r600_buffer_common.c
index b3e60a46e4..706c7485c3 100644
--- a/src/gallium/drivers/radeon/r600_buffer_common.c
+++ b/src/gallium/drivers/radeon/r600_buffer_common.c
@@ -167,10 +167,12 @@ void si_init_resource_fields(struct
r600_common_screen *rscreen,
                          RADEON_FLAG_GTT_WC;
         }
- /* Displayable and shareable surfaces are not suballocated. */
-       if (res->b.b.bind & (PIPE_BIND_SHARED | PIPE_BIND_SCANOUT))
-               res->flags |= RADEON_FLAG_NO_SUBALLOC; /* shareable */
-       else
+ /* Only displayable single-sample textures can be shared between
+        * processes. */
+ if (!(res->b.b.bind & (PIPE_BIND_SHARED | PIPE_BIND_SCANOUT)) &&
+           (res->b.b.target == PIPE_BUFFER ||
+            res->b.b.nr_samples >= 2 ||
+ rtex->surface.micro_tile_mode != RADEON_MICRO_MODE_DISPLAY))
                 res->flags |= RADEON_FLAG_NO_INTERPROCESS_SHARING;
         /* If VRAM is just stolen system memory, allow both VRAM and
@@ -190,6 +192,9 @@ void si_init_resource_fields(struct r600_common_screen
*rscreen,
         if (rscreen->debug_flags & DBG_NO_WC)
                 res->flags &= ~RADEON_FLAG_GTT_WC;
   +     if (res->b.b.bind & PIPE_BIND_SHARED)
+               res->flags |= RADEON_FLAG_NO_SUBALLOC;
+
         /* Set expected VRAM and GART usage for the buffer. */
         res->vram_usage = 0;
         res->gart_usage = 0;
diff --git a/src/gallium/drivers/radeon/r600_texture.c
b/src/gallium/drivers/radeon/r600_texture.c
index a9a1b2627e..829d105827 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -1219,6 +1219,10 @@ r600_texture_create_object(struct pipe_screen
*screen,
si_init_resource_fields(rscreen, resource, rtex->size,
rtex->surface.surf_alignment);
   +             /* Displayable surfaces are not suballocated. */
+               if (resource->b.b.bind & PIPE_BIND_SCANOUT)
+                       resource->flags |= RADEON_FLAG_NO_SUBALLOC;
+
                 if (!si_alloc_resource(rscreen, resource)) {
                         FREE(rtex);
                         return NULL;


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to