summaryrefslogtreecommitdiff
path: root/src/X11/va_dricommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/X11/va_dricommon.h')
-rw-r--r--src/X11/va_dricommon.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/X11/va_dricommon.h b/src/X11/va_dricommon.h
new file mode 100644
index 0000000..a2a51a6
--- /dev/null
+++ b/src/X11/va_dricommon.h
@@ -0,0 +1,68 @@
+#ifndef _VA_DRICOMMON_H_
+#define _VA_DRICOMMON_H_
+
+#include <X11/Xlib.h>
+
+#include <xf86drm.h>
+#include <drm.h>
+#include <drm_sarea.h>
+
+#include "va_backend.h"
+
+enum
+{
+ VA_NONE = 0,
+ VA_DRI1 = 1,
+ VA_DRI2 = 2
+};
+
+union dri_buffer
+{
+ struct {
+ unsigned int attachment;
+ unsigned int name;
+ unsigned int pitch;
+ unsigned int cpp;
+ unsigned int flags;
+ } dri2;
+
+ struct {
+ } dri1;
+};
+
+struct dri_drawable
+{
+ XID x_drawable;
+ int x;
+ int y;
+ unsigned int width;
+ unsigned int height;
+ struct dri_drawable *next;
+};
+
+#define DRAWABLE_HASH_SZ 32
+struct dri_state
+{
+ int fd;
+ int driConnectedFlag; /* 0: disconnected, 1: DRI, 2: DRI2 */
+ drm_handle_t hSAREA;
+ drm_context_t hwContext;
+ drmAddress pSAREA;
+ XID hwContextID;
+ struct dri_drawable *drawable_hash[DRAWABLE_HASH_SZ];
+
+ struct dri_drawable *(*createDrawable)(VADriverContextP ctx, XID x_drawable);
+ void (*destroyDrawable)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+ void (*swapBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+ union dri_buffer *(*getRenderingBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+ void (*close)(VADriverContextP ctx);
+};
+
+Bool isDRI2Connected(VADriverContextP ctx, char **driver_name);
+Bool isDRI1Connected(VADriverContextP ctx, char **driver_name);
+void free_drawable_hashtable(VADriverContextP ctx);
+struct dri_drawable *dri_get_drawable(VADriverContextP ctx, XID drawable);
+void dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+union dri_buffer *dri_get_rendering_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+
+#endif /* _VA_DRICOMMON_H_ */