diff options
-rw-r--r-- | fontconfig/fc-cache/fc-cache.c | 7 | ||||
-rw-r--r-- | fontconfig/src/fccfg.c | 2 | ||||
-rw-r--r-- | fontconfig/src/fcstat.c | 5 | ||||
-rw-r--r-- | fontconfig/src/fcstr.c | 2 | ||||
-rwxr-xr-x | fontconfig/src/fcxml.c | 1 | ||||
-rw-r--r-- | mesalib/src/gallium/auxiliary/util/u_inlines.h | 20 | ||||
-rw-r--r-- | mesalib/src/mesa/main/mtypes.h | 1 | ||||
-rw-r--r-- | mesalib/src/mesa/main/syncobj.c | 14 | ||||
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 51 | ||||
-rw-r--r-- | pixman/pixman/pixman-combine32.c | 58 | ||||
-rw-r--r-- | pixman/test/utils-prng.c | 12 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/rules/base.xml.in | 6 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/symbols/de | 10 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/symbols/pl | 2 |
14 files changed, 158 insertions, 33 deletions
diff --git a/fontconfig/fc-cache/fc-cache.c b/fontconfig/fc-cache/fc-cache.c index 9fb383be0..220609604 100644 --- a/fontconfig/fc-cache/fc-cache.c +++ b/fontconfig/fc-cache/fc-cache.c @@ -138,13 +138,6 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, fflush (stdout); } - if (!dir) - { - if (verbose) - printf ("skipping, no such directory\n"); - continue; - } - if (FcStrSetMember (processed_dirs, dir)) { if (verbose) diff --git a/fontconfig/src/fccfg.c b/fontconfig/src/fccfg.c index 45b486945..f94f0e051 100644 --- a/fontconfig/src/fccfg.c +++ b/fontconfig/src/fccfg.c @@ -398,7 +398,7 @@ FcConfigSetCurrent (FcConfig *config) if (config == _fcConfig) return FcTrue; - if (!config->fonts) + if (!config->fonts[FcSetSystem]) if (!FcConfigBuildFonts (config)) return FcFalse; diff --git a/fontconfig/src/fcstat.c b/fontconfig/src/fcstat.c index d8663d036..d4431e00e 100644 --- a/fontconfig/src/fcstat.c +++ b/fontconfig/src/fcstat.c @@ -178,8 +178,9 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum) { struct Adler32 ctx; struct dirent **files; - int n, ret = 0; + int n; #ifndef HAVE_STRUCT_DIRENT_D_TYPE + int ret = 0; size_t len = strlen ((const char *)dir); #endif @@ -229,8 +230,10 @@ FcDirChecksum (const FcChar8 *dir, time_t *checksum) free (files[n]); } free (files); +#ifndef HAVE_STRUCT_DIRENT_D_TYPE if (ret == -1) return -1; +#endif *checksum = Adler32Finish (&ctx); diff --git a/fontconfig/src/fcstr.c b/fontconfig/src/fcstr.c index 99b59da0a..cc1465cc9 100644 --- a/fontconfig/src/fcstr.c +++ b/fontconfig/src/fcstr.c @@ -1193,7 +1193,7 @@ FcStrSetAddLangs (FcStrSet *strs, const char *languages) while ((next = strchr (p, ':'))) { len = next - p; - len = FC_MIN (len, 128); + len = FC_MIN (len, 127); strncpy ((char *) lang, p, len); lang[len] = 0; /* ignore an empty item */ diff --git a/fontconfig/src/fcxml.c b/fontconfig/src/fcxml.c index 0c8c80561..c840027d1 100755 --- a/fontconfig/src/fcxml.c +++ b/fontconfig/src/fcxml.c @@ -1862,6 +1862,7 @@ FcParseDir (FcConfigParse *parse) if (!data) { FcConfigMessage (parse, FcSevereError, "out of memory"); + data = prefix; goto bail; } if (prefix) diff --git a/mesalib/src/gallium/auxiliary/util/u_inlines.h b/mesalib/src/gallium/auxiliary/util/u_inlines.h index cb06ee2e0..469f95461 100644 --- a/mesalib/src/gallium/auxiliary/util/u_inlines.h +++ b/mesalib/src/gallium/auxiliary/util/u_inlines.h @@ -548,6 +548,26 @@ util_pipe_tex_to_tgsi_tex(enum pipe_texture_target pipe_tex_target, } } + +static INLINE void +util_copy_constant_buffer(struct pipe_constant_buffer *dst, + const struct pipe_constant_buffer *src) +{ + if (src) { + pipe_resource_reference(&dst->buffer, src->buffer); + dst->buffer_offset = src->buffer_offset; + dst->buffer_size = src->buffer_size; + dst->user_buffer = src->user_buffer; + } + else { + pipe_resource_reference(&dst->buffer, NULL); + dst->buffer_offset = 0; + dst->buffer_size = 0; + dst->user_buffer = NULL; + } +} + + #ifdef __cplusplus } #endif diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index b353e7026..11a832281 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -2513,7 +2513,6 @@ struct gl_query_state /** Sync object state */ struct gl_sync_object { - struct set_entry *SetEntry; GLenum Type; /**< GL_SYNC_FENCE */ GLuint Name; /**< Fence name */ GLint RefCount; /**< Reference count */ diff --git a/mesalib/src/mesa/main/syncobj.c b/mesalib/src/mesa/main/syncobj.c index 12e325ccd..f155fea8b 100644 --- a/mesalib/src/mesa/main/syncobj.c +++ b/mesalib/src/mesa/main/syncobj.c @@ -199,10 +199,16 @@ _mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) void GLAPIENTRY _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { + struct set_entry *entry; + _glthread_LOCK_MUTEX(ctx->Shared->Mutex); syncObj->RefCount--; if (syncObj->RefCount == 0) { - _mesa_set_remove(ctx->Shared->SyncObjects, syncObj->SetEntry); + entry = _mesa_set_search(ctx->Shared->SyncObjects, + _mesa_hash_pointer(syncObj), + syncObj); + assert (entry != NULL); + _mesa_set_remove(ctx->Shared->SyncObjects, entry); _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); ctx->Driver.DeleteSyncObject(ctx, syncObj); @@ -290,9 +296,9 @@ _mesa_FenceSync(GLenum condition, GLbitfield flags) ctx->Driver.FenceSync(ctx, syncObj, condition, flags); _glthread_LOCK_MUTEX(ctx->Shared->Mutex); - syncObj->SetEntry = _mesa_set_add(ctx->Shared->SyncObjects, - _mesa_hash_pointer(syncObj), - syncObj); + _mesa_set_add(ctx->Shared->SyncObjects, + _mesa_hash_pointer(syncObj), + syncObj); _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); return (GLsync) syncObj; diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index a4df4e5fa..1d96e905c 100644 --- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -442,6 +442,9 @@ public: void merge_registers(void); void renumber_registers(void); + void emit_block_mov(ir_assignment *ir, const struct glsl_type *type, + st_dst_reg *l, st_src_reg *r); + void *mem_ctx; }; @@ -2244,6 +2247,44 @@ glsl_to_tgsi_visitor::process_move_condition(ir_rvalue *ir) } void +glsl_to_tgsi_visitor::emit_block_mov(ir_assignment *ir, const struct glsl_type *type, + st_dst_reg *l, st_src_reg *r) +{ + if (type->base_type == GLSL_TYPE_STRUCT) { + for (unsigned int i = 0; i < type->length; i++) { + emit_block_mov(ir, type->fields.structure[i].type, l, r); + } + return; + } + + if (type->is_array()) { + for (unsigned int i = 0; i < type->length; i++) { + emit_block_mov(ir, type->fields.array, l, r); + } + return; + } + + if (type->is_matrix()) { + const struct glsl_type *vec_type; + + vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT, + type->vector_elements, 1); + + for (int i = 0; i < type->matrix_columns; i++) { + emit_block_mov(ir, vec_type, l, r); + } + return; + } + + assert(type->is_scalar() || type->is_vector()); + + r->type = type->base_type; + emit(ir, TGSI_OPCODE_MOV, *l, *r); + l->index++; + r->index++; +} + +void glsl_to_tgsi_visitor::visit(ir_assignment *ir) { st_dst_reg l; @@ -2347,15 +2388,7 @@ glsl_to_tgsi_visitor::visit(ir_assignment *ir) new_inst->saturate = inst->saturate; inst->dead_mask = inst->dst.writemask; } else { - for (i = 0; i < type_size(ir->lhs->type); i++) { - if (ir->rhs->type->is_array()) - r.type = ir->rhs->type->element_type()->base_type; - else if (ir->rhs->type->is_record()) - r.type = ir->rhs->type->fields.structure[i].type->base_type; - emit(ir, TGSI_OPCODE_MOV, l, r); - l.index++; - r.index++; - } + emit_block_mov(ir, ir->rhs->type, &l, &r); } } diff --git a/pixman/pixman/pixman-combine32.c b/pixman/pixman/pixman-combine32.c index 54cc8771b..3ac7576bd 100644 --- a/pixman/pixman/pixman-combine32.c +++ b/pixman/pixman/pixman-combine32.c @@ -196,14 +196,58 @@ combine_over_u (pixman_implementation_t *imp, { int i; - for (i = 0; i < width; ++i) + if (!mask) { - uint32_t s = combine_mask (src, mask, i); - uint32_t d = *(dest + i); - uint32_t ia = ALPHA_8 (~s); - - UN8x4_MUL_UN8_ADD_UN8x4 (d, ia, s); - *(dest + i) = d; + for (i = 0; i < width; ++i) + { + uint32_t s = *(src + i); + uint32_t a = ALPHA_8 (s); + if (a == 0xFF) + { + *(dest + i) = s; + } + else if (s) + { + uint32_t d = *(dest + i); + uint32_t ia = a ^ 0xFF; + UN8x4_MUL_UN8_ADD_UN8x4 (d, ia, s); + *(dest + i) = d; + } + } + } + else + { + for (i = 0; i < width; ++i) + { + uint32_t m = ALPHA_8 (*(mask + i)); + if (m == 0xFF) + { + uint32_t s = *(src + i); + uint32_t a = ALPHA_8 (s); + if (a == 0xFF) + { + *(dest + i) = s; + } + else if (s) + { + uint32_t d = *(dest + i); + uint32_t ia = a ^ 0xFF; + UN8x4_MUL_UN8_ADD_UN8x4 (d, ia, s); + *(dest + i) = d; + } + } + else if (m) + { + uint32_t s = *(src + i); + if (s) + { + uint32_t d = *(dest + i); + UN8x4_MUL_UN8 (s, m); + UN8x4_MUL_UN8_ADD_UN8x4 (d, ALPHA_8 (~s), s); + *(dest + i) = d; + } + } + } } } diff --git a/pixman/test/utils-prng.c b/pixman/test/utils-prng.c index 7c2dd6a9a..967b8989a 100644 --- a/pixman/test/utils-prng.c +++ b/pixman/test/utils-prng.c @@ -27,6 +27,10 @@ #include "utils.h" #include "utils-prng.h" +#if defined(GCC_VECTOR_EXTENSIONS_SUPPORTED) && defined(__SSE2__) +#include <xmmintrin.h> +#endif + void smallprng_srand_r (smallprng_t *x, uint32_t seed) { uint32_t i; @@ -77,6 +81,14 @@ store_rand_128_data (void *addr, prng_rand_128_data_t *d, int aligned) *(uint8x16 *)addr = d->vb; return; } + else + { +#ifdef __SSE2__ + /* workaround for http://gcc.gnu.org/PR55614 */ + _mm_storeu_si128 (addr, _mm_loadu_si128 ((__m128i *)d)); + return; +#endif + } #endif /* we could try something better for unaligned writes (packed attribute), * but GCC is not very reliable: http://gcc.gnu.org/PR55454 */ diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in index 5f0618166..8d8075004 100644 --- a/xorg-server/xkeyboard-config/rules/base.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.xml.in @@ -1598,6 +1598,12 @@ <variantList> <variant> <configItem> + <name>legacy</name> + <_description>German (legacy)</_description> + </configItem> + </variant> + <variant> + <configItem> <name>nodeadkeys</name> <_description>German (Austria, eliminate dead keys)</_description> </configItem> diff --git a/xorg-server/xkeyboard-config/symbols/de b/xorg-server/xkeyboard-config/symbols/de index 9793952d6..6ac1e6711 100644 --- a/xorg-server/xkeyboard-config/symbols/de +++ b/xorg-server/xkeyboard-config/symbols/de @@ -50,6 +50,16 @@ xkb_symbols "basic" { }; partial alphanumeric_keys +xkb_symbols "legacy" { + // previous standard German layout with tilde as dead key + + include "de(basic)" + name[Group1]="German (legacy)"; + + key <AD12> { [ plus, asterisk, dead_tilde, dead_macron ] }; +}; + +partial alphanumeric_keys xkb_symbols "nodeadkeys" { // modify the basic German layout to not have any dead keys diff --git a/xorg-server/xkeyboard-config/symbols/pl b/xorg-server/xkeyboard-config/symbols/pl index 1fbc6aa04..b769307ce 100644 --- a/xorg-server/xkeyboard-config/symbols/pl +++ b/xorg-server/xkeyboard-config/symbols/pl @@ -283,8 +283,6 @@ xkb_symbols "dvp" { // home row, right side key <AC09> { [ n, N, nacute, Nacute ] }; key <AC10> { [ s, S, sacute, Sacute ] }; - key <AC11> { [ minus, underscore, hyphen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; - key <BKSL> { [ backslash, bar ] }; // lower row, left side key <AB03> { [ j, J, doublelowquotemark, rightdoublequotemark ] }; |