diff options
author | zeising <zeising@058c260c-8361-11dd-a0ac-aa2bafec7d09> | 2013-07-17 21:38:03 +0800 |
---|---|---|
committer | zeising <zeising@058c260c-8361-11dd-a0ac-aa2bafec7d09> | 2013-07-17 21:38:03 +0800 |
commit | 70672196219e5d867eefd07001ccc98d5d604d76 (patch) | |
tree | 4b0768cd3155d08c6bbe3bdf979dcee0c81e1093 | |
parent | 86c078630aa470ab5c1eba8fbd74fa22015c2df3 (diff) | |
download | xorg-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/Makefile | 2 | ||||
-rw-r--r-- | x11-drivers/xf86-video-intel/distinfo | 4 | ||||
-rw-r--r-- | x11-drivers/xf86-video-intel/files/extra-src_sna_kgem.c | 153 |
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; |