summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeising <zeising@058c260c-8361-11dd-a0ac-aa2bafec7d09>2013-07-17 21:38:03 +0800
committerzeising <zeising@058c260c-8361-11dd-a0ac-aa2bafec7d09>2013-07-17 21:38:03 +0800
commit70672196219e5d867eefd07001ccc98d5d604d76 (patch)
tree4b0768cd3155d08c6bbe3bdf979dcee0c81e1093
parent86c078630aa470ab5c1eba8fbd74fa22015c2df3 (diff)
downloadxorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.tar
xorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.tar.gz
xorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.tar.bz2
xorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.tar.lz
xorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.tar.xz
xorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.tar.zst
xorg-devel-ports-70672196219e5d867eefd07001ccc98d5d604d76.zip
Update to 2.21.12.
Work around our lack of some gnu/linux cpuid macros. In this instance, these macros are used to calculate the cache size of the CPU, for now we hardcode to 64k. This will need to be revised. git-svn-id: https://trillian.chruetertee.ch/svn/ports/trunk@1034 058c260c-8361-11dd-a0ac-aa2bafec7d09
-rw-r--r--x11-drivers/xf86-video-intel/Makefile2
-rw-r--r--x11-drivers/xf86-video-intel/distinfo4
-rw-r--r--x11-drivers/xf86-video-intel/files/extra-src_sna_kgem.c153
3 files changed, 75 insertions, 84 deletions
diff --git a/x11-drivers/xf86-video-intel/Makefile b/x11-drivers/xf86-video-intel/Makefile
index 7becdb8..1f6b793 100644
--- a/x11-drivers/xf86-video-intel/Makefile
+++ b/x11-drivers/xf86-video-intel/Makefile
@@ -28,7 +28,7 @@ MAN4= intel.4x
.include <bsd.port.options.mk>
.if defined(WITH_NEW_XORG)
-INTEL_VERSION= 2.21.11
+INTEL_VERSION= 2.21.12
INTEL_REVISION= 0
CONFIGURE_ARGS+= --enable-sna
MAKE_JOBS_UNSAFE=yes
diff --git a/x11-drivers/xf86-video-intel/distinfo b/x11-drivers/xf86-video-intel/distinfo
index 5b01a25..22d6fd9 100644
--- a/x11-drivers/xf86-video-intel/distinfo
+++ b/x11-drivers/xf86-video-intel/distinfo
@@ -1,4 +1,4 @@
SHA256 (xorg/driver/xf86-video-intel-2.7.1.tar.bz2) = 255c0d54249cc0132f743254a43c21fac695fab2139c8ed96a07cf3c628e5f42
SIZE (xorg/driver/xf86-video-intel-2.7.1.tar.bz2) = 780625
-SHA256 (xorg/driver/xf86-video-intel-2.21.11.tar.bz2) = 523aa13f2ba65f0be871de338956a5acccb0d3a3d9c195ed3cd47abc2c025e22
-SIZE (xorg/driver/xf86-video-intel-2.21.11.tar.bz2) = 1916261
+SHA256 (xorg/driver/xf86-video-intel-2.21.12.tar.bz2) = 02120a1e9297ff094e0b0ae3b2d032304da2fde2630660829bd8b333611a970b
+SIZE (xorg/driver/xf86-video-intel-2.21.12.tar.bz2) = 1923576
diff --git a/x11-drivers/xf86-video-intel/files/extra-src_sna_kgem.c b/x11-drivers/xf86-video-intel/files/extra-src_sna_kgem.c
index 9771d08..f04c054 100644
--- a/x11-drivers/xf86-video-intel/files/extra-src_sna_kgem.c
+++ b/x11-drivers/xf86-video-intel/files/extra-src_sna_kgem.c
@@ -1,91 +1,82 @@
---- src/sna/kgem.c.orig 2013-03-11 11:19:02.000000000 +0100
-+++ src/sna/kgem.c 2013-03-12 12:56:49.452065668 +0100
-@@ -658,7 +658,11 @@
- if (file) {
- size_t len = 0;
- char *line = NULL;
-+#ifdef __GLIBC__
- while (getline(&line, &len, file) != -1) {
-+#else
-+ while ((line = fgetln(file, &len)) != (char *) NULL) {
+--- src/sna/kgem.c.orig 2013-07-17 15:16:33.145697556 +0200
++++ src/sna/kgem.c 2013-07-17 15:22:43.826678496 +0200
+@@ -38,7 +38,9 @@
+ #include <time.h>
+ #include <errno.h>
+ #include <fcntl.h>
++#ifdef __linux__
+ #include <cpuid.h>
+#endif
- int mb;
- if (sscanf(line, "cache size : %d KB", &mb) == 1) {
- /* Paranoid check against gargantuan caches */
-@@ -1666,7 +1670,8 @@
- static struct kgem_bo *
- search_snoop_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags)
- {
-- struct kgem_bo *bo, *first = NULL;
-+ struct kgem_bo *bo = NULL;
-+ struct kgem_bo *first = NULL;
-
- DBG(("%s: num_pages=%d, flags=%x\n", __FUNCTION__, num_pages, flags));
-@@ -1868,7 +1873,8 @@
+ #include <xf86drm.h>
- static bool kgem_retire__flushing(struct kgem *kgem)
- {
-- struct kgem_bo *bo, *next;
-+ struct kgem_bo *bo = NULL;
-+ struct kgem_bo *next;
- bool retired = false;
+@@ -697,8 +699,9 @@
+ return 0;
+ }
- list_for_each_entry_safe(bo, next, &kgem->flushing, request) {
-@@ -2073,7 +2079,8 @@
- static void kgem_commit(struct kgem *kgem)
++#ifdef __linux__
+ static unsigned
+-cpu_cache_size(void)
++cpu_cache_size__cpuid4(void)
{
- struct kgem_request *rq = kgem->next_request;
-- struct kgem_bo *bo, *next;
-+ struct kgem_bo *bo = NULL;
-+ struct kgem_bo *next;
+ /* Deterministic Cache Parmaeters (Function 04h)":
+ * When EAX is initialized to a value of 4, the CPUID instruction
+@@ -739,6 +742,42 @@
- list_for_each_entry_safe(bo, next, &rq->buffers, request) {
- assert(next->request.prev == &bo->request);
-@@ -2154,7 +2161,8 @@
-
- static void kgem_finish_buffers(struct kgem *kgem)
- {
-- struct kgem_buffer *bo, *next;
-+ struct kgem_buffer *bo = NULL;
-+ struct kgem_buffer *next;
+ return llc_size;
+ }
++#endif /* __linux__ */
++
++static unsigned
++cpu_cache_size(void)
++{
++ unsigned size;
++#ifdef __linux__
++ FILE *file;
++
++ size = cpu_cache_size__cpuid4();
++ if (size)
++ return size;
++
++ file = fopen("/proc/cpuinfo", "r");
++ if (file) {
++ size_t len = 0;
++ char *line = NULL;
++ while (getline(&line, &len, file) != -1) {
++ int kb;
++ if (sscanf(line, "cache size : %d KB", &kb) == 1) {
++ /* Paranoid check against gargantuan caches */
++ if (kb <= 1<<20)
++ size = kb * 1024;
++ break;
++ }
++ }
++ free(line);
++ fclose(file);
++ }
++
++ if (size == 0)
++#endif /* __linux__ */
++ size = 64 * 1024;
++
++ return size;
++}
- list_for_each_entry_safe(bo, next, &kgem->batch_buffers, base.list) {
- DBG(("%s: buffer handle=%d, used=%d, exec?=%d, write=%d, mmapped=%d\n",
-@@ -2963,7 +2971,8 @@
- static struct kgem_bo *
- search_linear_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags)
+ static int gem_param(struct kgem *kgem, int name)
{
-- struct kgem_bo *bo, *first = NULL;
-+ struct kgem_bo *bo = NULL;
-+ struct kgem_bo *first = NULL;
- bool use_active = (flags & CREATE_INACTIVE) == 0;
- struct list *cache;
+@@ -1242,6 +1281,7 @@
+ kgem->buffer_size = kgem->half_cpu_cache_pages << 12;
+ DBG(("%s: buffer size=%d [%d KiB]\n", __FUNCTION__,
+ kgem->buffer_size, kgem->buffer_size / 1024));
++ assert(kgem->buffer_size);
-@@ -3521,7 +3530,7 @@
- uint32_t flags)
- {
- struct list *cache;
-- struct kgem_bo *bo;
-+ struct kgem_bo *bo = NULL;
- uint32_t pitch, tiled_height, size;
- uint32_t handle;
- int i, bucket, retry;
-@@ -4834,7 +4843,7 @@
- void kgem_clear_dirty(struct kgem *kgem)
- {
- struct list * const buffers = &kgem->next_request->buffers;
-- struct kgem_bo *bo;
-+ struct kgem_bo *bo = NULL;
-
- list_for_each_entry(bo, buffers, request) {
- if (!bo->dirty)
-@@ -5072,7 +5081,7 @@
- uint32_t size, uint32_t flags,
- void **ret)
- {
-- struct kgem_buffer *bo;
-+ struct kgem_buffer *bo = NULL;
- unsigned offset, alloc;
- struct kgem_bo *old;
+ kgem->max_object_size = 3 * (kgem->aperture_high >> 12) << 10;
+ kgem->max_gpu_size = kgem->max_object_size;
+@@ -5617,6 +5657,7 @@
+ alloc = ALIGN(size, kgem->buffer_size);
+ if (alloc > MAX_CACHE_SIZE)
+ alloc = PAGE_ALIGN(size);
++ assert(alloc);
+ if (alloc > kgem->aperture_mappable / 4)
+ flags &= ~KGEM_BUFFER_INPLACE;