diff --git a/0001-qxl-add-header-file.patch b/0001-qxl-add-header-file.patch new file mode 100644 index 0000000..a41c2c3 --- /dev/null +++ b/0001-qxl-add-header-file.patch @@ -0,0 +1,184 @@ +From 8915e1aae7cdf97992ea012259aa52149e892509 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Tue, 12 Mar 2013 06:53:16 +1000 +Subject: [PATCH] qxl: add header file + +--- + include/drm/Makefile.am | 1 + + include/drm/qxl_drm.h | 152 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 153 insertions(+) + create mode 100644 include/drm/qxl_drm.h + +diff --git a/include/drm/Makefile.am b/include/drm/Makefile.am +index 2923ab4..9870a7f 100644 +--- a/include/drm/Makefile.am ++++ b/include/drm/Makefile.am +@@ -31,6 +31,7 @@ klibdrminclude_HEADERS = \ + i915_drm.h \ + mga_drm.h \ + nouveau_drm.h \ ++ qxl_drm.h \ + r128_drm.h \ + radeon_drm.h \ + savage_drm.h \ +diff --git a/include/drm/qxl_drm.h b/include/drm/qxl_drm.h +new file mode 100644 +index 0000000..5d7de70 +--- /dev/null ++++ b/include/drm/qxl_drm.h +@@ -0,0 +1,152 @@ ++/* ++ * Copyright 2013 Red Hat ++ * All Rights Reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++#ifndef QXL_DRM_H ++#define QXL_DRM_H ++ ++#include ++#include "drm/drm.h" ++ ++/* Please note that modifications to all structs defined here are ++ * subject to backwards-compatibility constraints. ++ * ++ * Do not use pointers, use uint64_t instead for 32 bit / 64 bit user/kernel ++ * compatibility Keep fields aligned to their size ++ */ ++ ++#define QXL_GEM_DOMAIN_CPU 0 ++#define QXL_GEM_DOMAIN_VRAM 1 ++#define QXL_GEM_DOMAIN_SURFACE 2 ++ ++#define DRM_QXL_ALLOC 0x00 ++#define DRM_QXL_MAP 0x01 ++#define DRM_QXL_EXECBUFFER 0x02 ++#define DRM_QXL_UPDATE_AREA 0x03 ++#define DRM_QXL_GETPARAM 0x04 ++#define DRM_QXL_CLIENTCAP 0x05 ++ ++#define DRM_QXL_ALLOC_SURF 0x06 ++ ++struct drm_qxl_alloc { ++ uint32_t size; ++ uint32_t handle; /* 0 is an invalid handle */ ++}; ++ ++struct drm_qxl_map { ++ uint64_t offset; /* use for mmap system call */ ++ uint32_t handle; ++ uint32_t pad; ++}; ++ ++/* ++ * dest is the bo we are writing the relocation into ++ * src is bo we are relocating. ++ * *(dest_handle.base_addr + dest_offset) = physical_address(src_handle.addr + ++ * src_offset) ++ */ ++#define QXL_RELOC_TYPE_BO 1 ++#define QXL_RELOC_TYPE_SURF 2 ++ ++struct drm_qxl_reloc { ++ uint64_t src_offset; /* offset into src_handle or src buffer */ ++ uint64_t dst_offset; /* offset in dest handle */ ++ uint32_t src_handle; /* dest handle to compute address from */ ++ uint32_t dst_handle; /* 0 if to command buffer */ ++ uint32_t reloc_type; ++ uint32_t pad; ++}; ++ ++struct drm_qxl_command { ++ uint64_t command; /* void* */ ++ uint64_t relocs; /* struct drm_qxl_reloc* */ ++ uint32_t type; ++ uint32_t command_size; ++ uint32_t relocs_num; ++ uint32_t pad; ++}; ++ ++/* XXX: call it drm_qxl_commands? */ ++struct drm_qxl_execbuffer { ++ uint32_t flags; /* for future use */ ++ uint32_t commands_num; ++ uint64_t commands; /* struct drm_qxl_command* */ ++}; ++ ++struct drm_qxl_update_area { ++ uint32_t handle; ++ uint32_t top; ++ uint32_t left; ++ uint32_t bottom; ++ uint32_t right; ++ uint32_t pad; ++}; ++ ++#define QXL_PARAM_NUM_SURFACES 1 /* rom->n_surfaces */ ++#define QXL_PARAM_MAX_RELOCS 2 ++struct drm_qxl_getparam { ++ uint64_t param; ++ uint64_t value; ++}; ++ ++/* these are one bit values */ ++struct drm_qxl_clientcap { ++ uint32_t index; ++ uint32_t pad; ++}; ++ ++struct drm_qxl_alloc_surf { ++ uint32_t format; ++ uint32_t width; ++ uint32_t height; ++ int32_t stride; ++ uint32_t handle; ++ uint32_t pad; ++}; ++ ++#define DRM_IOCTL_QXL_ALLOC \ ++ DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC, struct drm_qxl_alloc) ++ ++#define DRM_IOCTL_QXL_MAP \ ++ DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_MAP, struct drm_qxl_map) ++ ++#define DRM_IOCTL_QXL_EXECBUFFER \ ++ DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_EXECBUFFER,\ ++ struct drm_qxl_execbuffer) ++ ++#define DRM_IOCTL_QXL_UPDATE_AREA \ ++ DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_UPDATE_AREA,\ ++ struct drm_qxl_update_area) ++ ++#define DRM_IOCTL_QXL_GETPARAM \ ++ DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_GETPARAM,\ ++ struct drm_qxl_getparam) ++ ++#define DRM_IOCTL_QXL_CLIENTCAP \ ++ DRM_IOW(DRM_COMMAND_BASE + DRM_QXL_CLIENTCAP,\ ++ struct drm_qxl_clientcap) ++ ++#define DRM_IOCTL_QXL_ALLOC_SURF \ ++ DRM_IOWR(DRM_COMMAND_BASE + DRM_QXL_ALLOC_SURF,\ ++ struct drm_qxl_alloc_surf) ++ ++#endif +-- +1.8.1.2 + diff --git a/libdrm.spec b/libdrm.spec index 983df31..541a5bd 100644 --- a/libdrm.spec +++ b/libdrm.spec @@ -3,7 +3,7 @@ Summary: Direct Rendering Manager runtime library Name: libdrm Version: 2.4.42 -Release: 1%{?dist} +Release: 2%{?dist} License: MIT Group: System Environment/Libraries URL: http://dri.sourceforge.net @@ -36,6 +36,8 @@ Patch3: libdrm-make-dri-perms-okay.patch Patch4: libdrm-2.4.0-no-bc.patch # make rule to print the list of test programs Patch5: libdrm-2.4.25-check-programs.patch +# add qxl header +Patch6: 0001-qxl-add-header-file.patch %description Direct Rendering Manager runtime library @@ -62,6 +64,7 @@ Utility programs for the kernel DRM interface. Will void your warranty. %patch3 -p1 -b .forceperms %patch4 -p1 -b .no-bc %patch5 -p1 -b .check +%patch6 -p1 -b .qxlheader %build autoreconf -v --install || exit 1 @@ -197,6 +200,9 @@ done %{_mandir}/man7/drm*.7* %changelog +* Tue Mar 12 2013 Dave Airlie 2.4.42-2 +- add qxl header file + * Tue Feb 05 2013 Adam Jackson 2.4.42-1 - libdrm 2.4.42