summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-11-12 11:22:53 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-11-12 11:22:53 +0000
commit34aa1e3b2702a55799a5655a3ba10bce4cc2065a (patch)
treea053cf39f083a65c36d1d66d5c8ad9e114678ab2
parent8f1afde57dca27e6542b0b8e7c87750f3d6367bf (diff)
sna: Compile against ancient libdrm
We need to trim the sprite video overlays if the prototypes are not known. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna.h4
-rw-r--r--src/sna/sna_display.c11
-rw-r--r--src/sna/sna_video_sprite.c14
3 files changed, 21 insertions, 8 deletions
diff --git a/src/sna/sna.h b/src/sna/sna.h
index 45cfebe3..f1b3beb8 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -371,8 +371,8 @@ static inline void sna_dri_close(struct sna *sna, ScreenPtr pScreen) { }
void sna_dri_pixmap_update_bo(struct sna *sna, PixmapPtr pixmap);
extern int sna_crtc_to_pipe(xf86CrtcPtr crtc);
-extern int sna_crtc_to_plane(xf86CrtcPtr crtc);
-extern int sna_crtc_id(xf86CrtcPtr crtc);
+extern uint32_t sna_crtc_to_plane(xf86CrtcPtr crtc);
+extern uint32_t sna_crtc_id(xf86CrtcPtr crtc);
CARD32 sna_format_for_depth(int depth);
CARD32 sna_render_format_for_depth(int depth);
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index d384bb2f..aefb6f7e 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -113,7 +113,7 @@ static inline uint32_t fb_id(struct kgem_bo *bo)
return bo->delta;
}
-int sna_crtc_id(xf86CrtcPtr crtc)
+uint32_t sna_crtc_id(xf86CrtcPtr crtc)
{
return to_sna_crtc(crtc)->id;
}
@@ -123,7 +123,7 @@ int sna_crtc_to_pipe(xf86CrtcPtr crtc)
return to_sna_crtc(crtc)->pipe;
}
-int sna_crtc_to_plane(xf86CrtcPtr crtc)
+uint32_t sna_crtc_to_plane(xf86CrtcPtr crtc)
{
return to_sna_crtc(crtc)->plane;
}
@@ -1458,9 +1458,10 @@ static const xf86CrtcFuncsRec sna_crtc_funcs = {
#endif
};
-static uint32_t
+static int
sna_crtc_find_plane(struct sna *sna, int pipe)
{
+#ifdef DRM_IOCTL_MODE_GETPLANERESOURCES
struct drm_mode_get_plane_res r;
uint32_t *planes, id = 0;
int i;
@@ -1496,7 +1497,11 @@ sna_crtc_find_plane(struct sna *sna, int pipe)
}
free(planes);
+ assert(id);
return id;
+#else
+ return 0;
+#endif
}
static void
diff --git a/src/sna/sna_video_sprite.c b/src/sna/sna_video_sprite.c
index ff3b4b33..d4eae913 100644
--- a/src/sna/sna_video_sprite.c
+++ b/src/sna/sna_video_sprite.c
@@ -37,9 +37,11 @@
#include <xf86xv.h>
#include <X11/extensions/Xv.h>
#include <fourcc.h>
-#include <drm_fourcc.h>
#include <i915_drm.h>
+#ifdef DRM_IOCTL_MODE_GETPLANERESOURCES
+#include <drm_fourcc.h>
+
#define IMAGE_MAX_WIDTH 2048
#define IMAGE_MAX_HEIGHT 2048
@@ -181,7 +183,7 @@ sna_video_sprite_show(struct sna *sna,
xf86CrtcPtr crtc,
BoxPtr dstBox)
{
- int plane = sna_crtc_to_plane(crtc);
+ uint32_t plane = sna_crtc_to_plane(crtc);
update_dst_box_to_crtc_coords(sna, crtc, dstBox);
if (crtc->rotation & (RR_Rotate_90 | RR_Rotate_270)) {
@@ -286,7 +288,7 @@ static int sna_video_sprite_put_image(ScrnInfoPtr scrn,
clip))
return Success;
- if (!crtc || !sna_crtc_to_plane(crtc)) {
+ if (!crtc || sna_crtc_to_plane(crtc) == 0) {
/* If the video isn't visible on any CRTC, turn it off */
sna_video_sprite_off(sna, video);
return Success;
@@ -441,3 +443,9 @@ XF86VideoAdaptorPtr sna_video_sprite_setup(struct sna *sna,
return adaptor;
}
+#else
+XF86VideoAdaptorPtr sna_video_sprite_setup(struct sna *sna, ScreenPtr screen)
+{
+ return NULL;
+}
+#endif