Mesa: update to Mesa-ckoenig-8d56907

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2013-09-26 03:50:45 +02:00
parent 762ce9da13
commit 96133da62c
6 changed files with 1 additions and 1731 deletions

View File

@ -24,7 +24,7 @@ case "$MESA" in
PKG_URL="ftp://freedesktop.org/pub/mesa/9.2/MesaLib-$PKG_VERSION.tar.bz2"
;;
master)
PKG_VERSION="8bbcc43"
PKG_VERSION="ckoenig-8d56907"
PKG_URL="$DISTRO_SRC/Mesa-$PKG_VERSION.tar.xz"
;;
esac

View File

@ -1,53 +0,0 @@
From a1e9f01ef29e803b2eb10e53c342db702a2cdccf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
Date: Sun, 22 Sep 2013 10:41:27 +0200
Subject: [PATCH 5/9] radeon/uvd: move alignment to winsys
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Similar to GFX and DMA.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
src/gallium/drivers/radeon/radeon_uvd.c | 6 ------
src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 6 ++++++
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/gallium/drivers/radeon/radeon_uvd.c b/src/gallium/drivers/radeon/radeon_uvd.c
index fa81105..a8b17e6 100644
--- a/src/gallium/drivers/radeon/radeon_uvd.c
+++ b/src/gallium/drivers/radeon/radeon_uvd.c
@@ -104,12 +104,6 @@ static unsigned alloc_stream_handle()
/* flush IB to the hardware */
static void flush(struct ruvd_decoder *dec)
{
- uint32_t *pm4 = dec->cs->buf;
-
- // align IB
- while(dec->cs->cdw % 16)
- pm4[dec->cs->cdw++] = RUVD_PKT2();
-
dec->ws->cs_flush(dec->cs, RADEON_FLUSH_ASYNC, 0);
}
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
index d530011..62f7704 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -494,6 +494,12 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags, ui
OUT_CS(&cs->base, 0x80000000); /* type2 nop packet */
}
break;
+ case RING_UVD:
+ while (rcs->cdw & 15)
+ OUT_CS(&cs->base, 0x80000000); /* type2 nop packet */
+ break;
+ default:
+ break;
}
if (rcs->cdw > RADEON_MAX_CMDBUF_DWORDS) {
--
1.8.3.1

View File

@ -1,103 +0,0 @@
From 760a3a7e464d1506ffbeaf8719abaa26d6bd0c03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
Date: Sun, 22 Sep 2013 12:16:20 +0200
Subject: [PATCH 6/9] st/vdpau: use a separate lock per decoder
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Christian König <christian.koenig@amd.com>
---
src/gallium/state_trackers/vdpau/decode.c | 20 +++++++++++---------
src/gallium/state_trackers/vdpau/vdpau_private.h | 1 +
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c
index b144b83..9a96a33 100644
--- a/src/gallium/state_trackers/vdpau/decode.c
+++ b/src/gallium/state_trackers/vdpau/decode.c
@@ -130,6 +130,8 @@ vlVdpDecoderCreate(VdpDevice device,
ret = VDP_STATUS_ERROR;
goto error_handle;
}
+
+ pipe_mutex_init(vldecoder->mutex);
pipe_mutex_unlock(dev->mutex);
return VDP_STATUS_OK;
@@ -155,9 +157,10 @@ vlVdpDecoderDestroy(VdpDecoder decoder)
if (!vldecoder)
return VDP_STATUS_INVALID_HANDLE;
- pipe_mutex_lock(vldecoder->device->mutex);
+ pipe_mutex_lock(vldecoder->mutex);
vldecoder->decoder->destroy(vldecoder->decoder);
- pipe_mutex_unlock(vldecoder->device->mutex);
+ pipe_mutex_unlock(vldecoder->mutex);
+ pipe_mutex_destroy(vldecoder->mutex);
vlRemoveDataHTAB(decoder);
FREE(vldecoder);
@@ -478,8 +481,6 @@ vlVdpDecoderRender(VdpDecoder decoder,
// TODO: Recreate decoder with correct chroma
return VDP_STATUS_INVALID_CHROMA_TYPE;
- pipe_mutex_lock(vlsurf->device->mutex);
-
buffer_support[0] = screen->get_video_param(screen, dec->profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE);
buffer_support[1] = screen->get_video_param(screen, dec->profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
@@ -490,6 +491,8 @@ vlVdpDecoderRender(VdpDecoder decoder,
dec->profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM) ||
!buffer_support[vlsurf->video_buffer->interlaced]) {
+ pipe_mutex_lock(vlsurf->device->mutex);
+
/* destroy the old one */
if (vlsurf->video_buffer)
vlsurf->video_buffer->destroy(vlsurf->video_buffer);
@@ -511,6 +514,7 @@ vlVdpDecoderRender(VdpDecoder decoder,
return VDP_STATUS_NO_IMPLEMENTATION;
}
vlVdpVideoSurfaceClear(vlsurf);
+ pipe_mutex_unlock(vlsurf->device->mutex);
}
for (i = 0; i < bitstream_buffer_count; ++i) {
@@ -536,18 +540,16 @@ vlVdpDecoderRender(VdpDecoder decoder,
ret = vlVdpDecoderRenderH264(&desc.h264, (VdpPictureInfoH264 *)picture_info);
break;
default:
- pipe_mutex_unlock(vlsurf->device->mutex);
return VDP_STATUS_INVALID_DECODER_PROFILE;
}
- if (ret != VDP_STATUS_OK) {
- pipe_mutex_unlock(vlsurf->device->mutex);
+ if (ret != VDP_STATUS_OK)
return ret;
- }
+ pipe_mutex_lock(vldecoder->mutex);
dec->begin_frame(dec, vlsurf->video_buffer, &desc.base);
dec->decode_bitstream(dec, vlsurf->video_buffer, &desc.base, bitstream_buffer_count, buffers, sizes);
dec->end_frame(dec, vlsurf->video_buffer, &desc.base);
- pipe_mutex_unlock(vlsurf->device->mutex);
+ pipe_mutex_unlock(vldecoder->mutex);
return ret;
}
diff --git a/src/gallium/state_trackers/vdpau/vdpau_private.h b/src/gallium/state_trackers/vdpau/vdpau_private.h
index 54545fe..0812767 100644
--- a/src/gallium/state_trackers/vdpau/vdpau_private.h
+++ b/src/gallium/state_trackers/vdpau/vdpau_private.h
@@ -387,6 +387,7 @@ typedef struct
typedef struct
{
vlVdpDevice *device;
+ pipe_mutex mutex;
struct pipe_video_codec *decoder;
} vlVdpDecoder;
--
1.8.3.1

View File

@ -1,479 +0,0 @@
From 43fc7abc4ec27aa99fbfb0e72fa4ff6bb4663b0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
Date: Sun, 22 Sep 2013 13:18:30 +0200
Subject: [PATCH 7/9] radeon/winsys: keep screen pointer in winsys
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Only create one screen for each winsys instance.
This helps with buffer sharing and interop handling.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
src/gallium/drivers/r300/r300_screen.c | 3 +++
src/gallium/drivers/r600/r600_pipe.c | 3 +++
src/gallium/drivers/radeonsi/radeonsi_pipe.c | 3 +++
src/gallium/targets/dri-r300/target.c | 13 ++++++++-----
src/gallium/targets/dri-r600/target.c | 13 ++++++++-----
src/gallium/targets/dri-radeonsi/target.c | 13 ++++++++-----
src/gallium/targets/vdpau-r300/target.c | 13 ++++++++-----
src/gallium/targets/vdpau-r600/target.c | 13 ++++++++-----
src/gallium/targets/vdpau-radeonsi/target.c | 13 ++++++++-----
src/gallium/targets/xorg-r600/target.c | 13 ++++++++-----
src/gallium/targets/xorg-radeonsi/target.c | 13 ++++++++-----
src/gallium/targets/xvmc-r300/target.c | 13 ++++++++-----
src/gallium/targets/xvmc-r600/target.c | 13 ++++++++-----
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 4 ----
src/gallium/winsys/radeon/drm/radeon_winsys.h | 5 +++++
15 files changed, 94 insertions(+), 54 deletions(-)
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index 063bc09..45a815a 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -540,6 +540,9 @@ static void r300_destroy_screen(struct pipe_screen* pscreen)
struct r300_screen* r300screen = r300_screen(pscreen);
struct radeon_winsys *rws = radeon_winsys(pscreen);
+ if (rws && !pipe_reference(&rws->reference, NULL))
+ return;
+
pipe_mutex_destroy(r300screen->cmask_mutex);
if (rws)
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 50ff06c..4dee37b 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -958,6 +958,9 @@ static void r600_destroy_screen(struct pipe_screen* pscreen)
if (rscreen == NULL)
return;
+ if (!pipe_reference(&rscreen->b.ws->reference, NULL))
+ return;
+
pipe_mutex_destroy(rscreen->aux_context_lock);
rscreen->aux_context->destroy(rscreen->aux_context);
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index 138268c..8529380 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -648,6 +648,9 @@ static void r600_destroy_screen(struct pipe_screen* pscreen)
if (rscreen == NULL)
return;
+ if (!pipe_reference(&rscreen->b.ws->reference, NULL))
+ return;
+
if (rscreen->fences.bo) {
struct r600_fence_block *entry, *tmp;
diff --git a/src/gallium/targets/dri-r300/target.c b/src/gallium/targets/dri-r300/target.c
index 07b0705..d363885 100644
--- a/src/gallium/targets/dri-r300/target.c
+++ b/src/gallium/targets/dri-r300/target.c
@@ -1,25 +1,28 @@
#include "target-helpers/inline_debug_helper.h"
#include "state_tracker/drm_driver.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r300/r300_public.h"
static struct pipe_screen *
create_screen(int fd)
{
struct radeon_winsys *sws;
- struct pipe_screen *screen;
sws = radeon_drm_winsys_create(fd);
if (!sws)
return NULL;
- screen = r300_screen_create(sws);
- if (!screen)
+ if (sws->screen)
+ return sws->screen;
+
+ sws->screen = r300_screen_create(sws);
+ if (!sws->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ sws->screen = debug_screen_wrap(sws->screen);
- return screen;
+ return sws->screen;
}
DRM_DRIVER_DESCRIPTOR("r300", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/dri-r600/target.c b/src/gallium/targets/dri-r600/target.c
index 9bff6f2..3fc4422 100644
--- a/src/gallium/targets/dri-r600/target.c
+++ b/src/gallium/targets/dri-r600/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r600/r600_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = r600_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = r600_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
static const struct drm_conf_ret throttle_ret = {
diff --git a/src/gallium/targets/dri-radeonsi/target.c b/src/gallium/targets/dri-radeonsi/target.c
index 1350ba2..a294633 100644
--- a/src/gallium/targets/dri-radeonsi/target.c
+++ b/src/gallium/targets/dri-radeonsi/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "radeonsi/radeonsi_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = radeonsi_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = radeonsi_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
static const struct drm_conf_ret throttle_ret = {
diff --git a/src/gallium/targets/vdpau-r300/target.c b/src/gallium/targets/vdpau-r300/target.c
index 2fd7c2f..042e080 100644
--- a/src/gallium/targets/vdpau-r300/target.c
+++ b/src/gallium/targets/vdpau-r300/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r300/r300_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = r300_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = r300_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
DRM_DRIVER_DESCRIPTOR("r300", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/vdpau-r600/target.c b/src/gallium/targets/vdpau-r600/target.c
index 3b7795b..b51c6af 100644
--- a/src/gallium/targets/vdpau-r600/target.c
+++ b/src/gallium/targets/vdpau-r600/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r600/r600_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = r600_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = r600_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
DRM_DRIVER_DESCRIPTOR("r600", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/vdpau-radeonsi/target.c b/src/gallium/targets/vdpau-radeonsi/target.c
index ffb6662..4d0b9e9 100644
--- a/src/gallium/targets/vdpau-radeonsi/target.c
+++ b/src/gallium/targets/vdpau-radeonsi/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "radeonsi/radeonsi_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = radeonsi_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = radeonsi_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
DRM_DRIVER_DESCRIPTOR("radeonsi", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/xorg-r600/target.c b/src/gallium/targets/xorg-r600/target.c
index 75785da..81b5488 100644
--- a/src/gallium/targets/xorg-r600/target.c
+++ b/src/gallium/targets/xorg-r600/target.c
@@ -2,25 +2,28 @@
#include "target-helpers/inline_debug_helper.h"
#include "state_tracker/drm_driver.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r600/r600_public.h"
static struct pipe_screen *
create_screen(int fd)
{
struct radeon_winsys *sws;
- struct pipe_screen *screen;
sws = radeon_drm_winsys_create(fd);
if (!sws)
return NULL;
- screen = r600_screen_create(sws);
- if (!screen)
+ if (sws->screen)
+ return sws->screen;
+
+ sws->screen = r600_screen_create(sws);
+ if (!sws->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ sws->screen = debug_screen_wrap(sws->screen);
- return screen;
+ return sws->screen;
}
DRM_DRIVER_DESCRIPTOR("r600", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/xorg-radeonsi/target.c b/src/gallium/targets/xorg-radeonsi/target.c
index c023c68..6e618ad 100644
--- a/src/gallium/targets/xorg-radeonsi/target.c
+++ b/src/gallium/targets/xorg-radeonsi/target.c
@@ -2,25 +2,28 @@
#include "target-helpers/inline_debug_helper.h"
#include "state_tracker/drm_driver.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "radeonsi/radeonsi_public.h"
static struct pipe_screen *
create_screen(int fd)
{
struct radeon_winsys *sws;
- struct pipe_screen *screen;
sws = radeon_drm_winsys_create(fd);
if (!sws)
return NULL;
- screen = radeonsi_screen_create(sws);
- if (!screen)
+ if (sws->screen)
+ return sws->screen;
+
+ sws->screen = radeonsi_screen_create(sws);
+ if (!sws->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ sws->screen = debug_screen_wrap(sws->screen);
- return screen;
+ return sws->screen;
}
DRM_DRIVER_DESCRIPTOR("radeonsi", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/xvmc-r300/target.c b/src/gallium/targets/xvmc-r300/target.c
index 2fd7c2f..042e080 100644
--- a/src/gallium/targets/xvmc-r300/target.c
+++ b/src/gallium/targets/xvmc-r300/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r300/r300_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = r300_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = r300_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
DRM_DRIVER_DESCRIPTOR("r300", "radeon", create_screen, NULL)
diff --git a/src/gallium/targets/xvmc-r600/target.c b/src/gallium/targets/xvmc-r600/target.c
index 3b7795b..b51c6af 100644
--- a/src/gallium/targets/xvmc-r600/target.c
+++ b/src/gallium/targets/xvmc-r600/target.c
@@ -1,24 +1,27 @@
#include "state_tracker/drm_driver.h"
#include "target-helpers/inline_debug_helper.h"
#include "radeon/drm/radeon_drm_public.h"
+#include "radeon/drm/radeon_winsys.h"
#include "r600/r600_public.h"
static struct pipe_screen *create_screen(int fd)
{
struct radeon_winsys *radeon;
- struct pipe_screen *screen;
radeon = radeon_drm_winsys_create(fd);
if (!radeon)
return NULL;
- screen = r600_screen_create(radeon);
- if (!screen)
+ if (radeon->screen)
+ return radeon->screen;
+
+ radeon->screen = r600_screen_create(radeon);
+ if (!radeon->screen)
return NULL;
- screen = debug_screen_wrap(screen);
+ radeon->screen = debug_screen_wrap(radeon->screen);
- return screen;
+ return radeon->screen;
}
DRM_DRIVER_DESCRIPTOR("r600", "radeon", create_screen, NULL)
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
index 61f0913..4f43093 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
@@ -424,10 +424,6 @@ static void radeon_winsys_destroy(struct radeon_winsys *rws)
{
struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws;
- if (!pipe_reference(&ws->base.reference, NULL)) {
- return;
- }
-
if (ws->thread) {
ws->kill_thread = 1;
pipe_semaphore_signal(&ws->cs_queued);
diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h
index 1367982..7ed2437 100644
--- a/src/gallium/winsys/radeon/drm/radeon_winsys.h
+++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h
@@ -208,6 +208,11 @@ struct radeon_winsys {
struct pipe_reference reference;
/**
+ * The screen object this winsys was created for
+ */
+ struct pipe_screen *screen;
+
+ /**
* Destroy this winsys.
*
* \param ws The winsys this function is called from.
--
1.8.3.1

View File

@ -1,40 +0,0 @@
From e5e2ed6a6f05200cfa8652cd9dff046d1c2c485d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
Date: Sun, 22 Sep 2013 15:59:17 +0200
Subject: [PATCH 8/9] radeon/uvd: try to place msg/fb buffer into GART
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is only supported on NI+, but the kernel takes care of those limitations.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
src/gallium/drivers/radeon/radeon_uvd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/radeon/radeon_uvd.c b/src/gallium/drivers/radeon/radeon_uvd.c
index a8b17e6..382b410 100644
--- a/src/gallium/drivers/radeon/radeon_uvd.c
+++ b/src/gallium/drivers/radeon/radeon_uvd.c
@@ -148,7 +148,7 @@ static void send_msg(struct ruvd_decoder *dec, struct ruvd_msg *msg)
/* and send it to the hardware */
send_cmd(dec, RUVD_CMD_MSG_BUFFER, buf->cs_handle, 0,
- RADEON_USAGE_READ, RADEON_DOMAIN_VRAM);
+ RADEON_USAGE_READ, RADEON_DOMAIN_GTT);
}
/* create a buffer in the winsys */
@@ -794,7 +794,7 @@ static void ruvd_end_frame(struct pipe_video_codec *decoder,
send_cmd(dec, RUVD_CMD_DECODING_TARGET_BUFFER, dt, 0,
RADEON_USAGE_WRITE, RADEON_DOMAIN_VRAM);
send_cmd(dec, RUVD_CMD_FEEDBACK_BUFFER, msg_fb_buf->cs_handle,
- 0x1000, RADEON_USAGE_WRITE, RADEON_DOMAIN_VRAM);
+ 0x1000, RADEON_USAGE_WRITE, RADEON_DOMAIN_GTT);
set_reg(dec, RUVD_ENGINE_CNTL, 1);
flush(dec);
--
1.8.3.1