aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fontconfig/configure.ac18
-rw-r--r--libX11/configure.ac10
-rw-r--r--mesalib/Makefile.am2
-rw-r--r--mesalib/configs/default2
-rw-r--r--mesalib/configure.ac25
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_blitter.c15
-rw-r--r--mesalib/src/glsl/ast_to_hir.cpp19
-rw-r--r--mesalib/src/glsl/link_uniforms.cpp5
-rw-r--r--mesalib/src/mapi/glapi/gen/glX_proto_send.py4
-rw-r--r--mesalib/src/mesa/main/extensions.c11
-rw-r--r--mesalib/src/mesa/main/fbobject.c4
-rw-r--r--mesalib/src/mesa/main/get.c59
-rw-r--r--mesalib/src/mesa/main/imports.h22
-rw-r--r--mesalib/src/mesa/main/teximage.c12
-rw-r--r--mesalib/src/mesa/main/teximage.h2
-rw-r--r--mesalib/src/mesa/main/texstorage.c126
-rw-r--r--mesalib/src/mesa/main/version.h4
-rw-r--r--xorg-server/xkeyboard-config/NEWS3
-rw-r--r--xorg-server/xkeyboard-config/configure.in3
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_s.part5
-rw-r--r--xorg-server/xkeyboard-config/symbols/Makefile.am2
-rw-r--r--xorg-server/xkeyboard-config/symbols/sharp_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x0074
-rw-r--r--xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh73
-rw-r--r--xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh73
-rw-r--r--xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh78
-rw-r--r--xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh67
27 files changed, 623 insertions, 103 deletions
diff --git a/fontconfig/configure.ac b/fontconfig/configure.ac
index 1270ba5bf..870979df8 100644
--- a/fontconfig/configure.ac
+++ b/fontconfig/configure.ac
@@ -136,7 +136,23 @@ AC_TYPE_PID_T
# Checks for library functions.
AC_FUNC_VPRINTF
AC_FUNC_MMAP
-AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree posix_fadvise fstatvfs fstatfs])
+AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs])
+
+dnl AC_CHECK_FUNCS doesn't check for header files.
+dnl posix_fadvise() may be not available in older libc.
+fc_saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
+AC_MSG_CHECKING([for posix_fadvise])
+AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #include <fcntl.h>
+ int main(void) {
+ return posix_fadvise(0, 0, 0, 0);
+ }
+ ]])],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the `posix_fadvise' function.])
+ ],[AC_MSG_RESULT([no])])
+CFLAGS="$fc_saved_CFLAGS"
#
if test "x$ac_cv_func_fstatvfs" = "xyes"; then
diff --git a/libX11/configure.ac b/libX11/configure.ac
index 48a0c8ab9..a45f9d956 100644
--- a/libX11/configure.ac
+++ b/libX11/configure.ac
@@ -306,7 +306,15 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], )
# Find keysymdef.h
#
AC_MSG_CHECKING([keysym definitions])
-KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
+AC_ARG_WITH([keysymdefdir],
+ [AC_HELP_STRING([--with-keysymdefdir=DIR], [The location of keysymdef.h (defaults to xproto include dir)])],
+ [KEYSYMDEFDIR=$withval],
+ [KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11])
+
+if test ! -d "$KEYSYMDEFDIR"; then
+ AC_MSG_ERROR([$KEYSYMDEFDIR doesn't exist or isn't a directory])
+fi
+
FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
for i in $FILES; do
if test -f "$KEYSYMDEFDIR/$i"; then
diff --git a/mesalib/Makefile.am b/mesalib/Makefile.am
index 36bcf1f0b..e411218eb 100644
--- a/mesalib/Makefile.am
+++ b/mesalib/Makefile.am
@@ -52,7 +52,7 @@ distclean-local:
# Rules for making release tarballs
-PACKAGE_VERSION=9.0-devel
+PACKAGE_VERSION=9.1-devel
PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
diff --git a/mesalib/configs/default b/mesalib/configs/default
index 5e4cc5678..7b9e1c61a 100644
--- a/mesalib/configs/default
+++ b/mesalib/configs/default
@@ -9,7 +9,7 @@ CONFIG_NAME = default
# Version info
MESA_MAJOR=9
-MESA_MINOR=0
+MESA_MINOR=1
MESA_TINY=0
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
diff --git a/mesalib/configure.ac b/mesalib/configure.ac
index 6e67ec039..4193496de 100644
--- a/mesalib/configure.ac
+++ b/mesalib/configure.ac
@@ -6,7 +6,7 @@ dnl Tell the user about autoconf.html in the --help output
m4_divert_once([HELP_END], [
See docs/autoconf.html for more details on the options for Mesa.])
-AC_INIT([Mesa], [9.0.0],
+AC_INIT([Mesa], [9.1.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
AC_CONFIG_AUX_DIR([bin])
AC_CANONICAL_HOST
@@ -26,6 +26,10 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
LT_PREREQ([2.2])
LT_INIT([disable-static])
+dnl Set internal versions
+OSMESA_VERSION=8
+AC_SUBST([OSMESA_VERSION])
+
dnl Versions for external dependencies
LIBDRM_REQUIRED=2.4.24
LIBDRM_RADEON_REQUIRED=2.4.39
@@ -563,11 +567,13 @@ AC_ARG_ENABLE([xa],
[enable build of the XA X Acceleration API @<:@default=no@:>@])],
[enable_xa="$enableval"],
[enable_xa=no])
-AC_ARG_ENABLE([d3d1x],
- [AS_HELP_STRING([--enable-d3d1x],
- [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
- [enable_d3d1x="$enableval"],
- [enable_d3d1x=no])
+dnl Broken, unmaintained. Don't want to see bug reports about it without patches.
+enable_d3d1x=no
+dnl AC_ARG_ENABLE([d3d1x],
+dnl [AS_HELP_STRING([--enable-d3d1x],
+dnl [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
+dnl [enable_d3d1x="$enableval"],
+dnl [enable_d3d1x=no])
AC_ARG_ENABLE([gbm],
[AS_HELP_STRING([--enable-gbm],
[enable gbm library @<:@default=auto@:>@])],
@@ -855,13 +861,12 @@ xyesyes)
xyesno)
# DRI-based GLX
PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
- GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
if test x"$driglx_direct" = xyes; then
if test "x$have_libdrm" != xyes; then
AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
fi
PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
- GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
+ GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
fi
# find the DRI deps for libGL
@@ -1919,10 +1924,6 @@ AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
-# To pass as an argument to libtool's -version-number flag
-VERSION_NUMBER=`echo "$VERSION" | $SED 's/\./:/g'`
-AC_SUBST([VERSION_NUMBER])
-
dnl prepend CORE_DIRS to SRC_DIRS
SRC_DIRS="$CORE_DIRS $SRC_DIRS"
diff --git a/mesalib/src/gallium/auxiliary/util/u_blitter.c b/mesalib/src/gallium/auxiliary/util/u_blitter.c
index 44295c136..35b8edba7 100644
--- a/mesalib/src/gallium/auxiliary/util/u_blitter.c
+++ b/mesalib/src/gallium/auxiliary/util/u_blitter.c
@@ -1213,6 +1213,21 @@ void util_blitter_copy_texture_view(struct blitter_context *blitter,
pipe->bind_fragment_sampler_states(pipe, 2, samplers);
pipe_sampler_view_reference(&views[1], NULL);
+ } else if (blit_stencil) {
+ /* Set a stencil-only sampler view for it not to sample depth instead. */
+ struct pipe_sampler_view templ;
+ struct pipe_sampler_view *view;
+
+ templ = *src;
+ templ.format = util_format_stencil_only(templ.format);
+ assert(templ.format != PIPE_FORMAT_NONE);
+
+ view = pipe->create_sampler_view(pipe, src->texture, &templ);
+
+ pipe->set_fragment_sampler_views(pipe, 1, &view);
+ pipe->bind_fragment_sampler_states(pipe, 1, &ctx->sampler_state);
+
+ pipe_sampler_view_reference(&view, NULL);
} else {
pipe->set_fragment_sampler_views(pipe, 1, &src);
pipe->bind_fragment_sampler_states(pipe, 1, &ctx->sampler_state);
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp
index 02fe66b60..5157661b3 100644
--- a/mesalib/src/glsl/ast_to_hir.cpp
+++ b/mesalib/src/glsl/ast_to_hir.cpp
@@ -2086,9 +2086,24 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
} else {
var->location = qual->location;
}
+
if (qual->flags.q.explicit_index) {
- var->explicit_index = true;
- var->index = qual->index;
+ /* From the GLSL 4.30 specification, section 4.4.2 (Output
+ * Layout Qualifiers):
+ *
+ * "It is also a compile-time error if a fragment shader
+ * sets a layout index to less than 0 or greater than 1."
+ *
+ * Older specifications don't mandate a behavior; we take
+ * this as a clarification and always generate the error.
+ */
+ if (qual->index < 0 || qual->index > 1) {
+ _mesa_glsl_error(loc, state,
+ "explicit index may only be 0 or 1\n");
+ } else {
+ var->explicit_index = true;
+ var->index = qual->index;
+ }
}
}
} else if (qual->flags.q.explicit_index) {
diff --git a/mesalib/src/glsl/link_uniforms.cpp b/mesalib/src/glsl/link_uniforms.cpp
index eef9025cf..aa8a8b3fb 100644
--- a/mesalib/src/glsl/link_uniforms.cpp
+++ b/mesalib/src/glsl/link_uniforms.cpp
@@ -572,8 +572,11 @@ link_assign_uniform_locations(struct gl_shader_program *prog)
/* FINISHME: Update code to process built-in uniforms!
*/
- if (strncmp("gl_", var->name, 3) == 0)
+ if (strncmp("gl_", var->name, 3) == 0) {
+ uniform_size.num_shader_uniform_components +=
+ var->type->component_slots();
continue;
+ }
uniform_size.process(var);
}
diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_send.py b/mesalib/src/mapi/glapi/gen/glX_proto_send.py
index d42f661ea..34aa2c31f 100644
--- a/mesalib/src/mapi/glapi/gen/glX_proto_send.py
+++ b/mesalib/src/mapi/glapi/gen/glX_proto_send.py
@@ -423,9 +423,9 @@ __indirect_get_proc_address(const char *name)
print ''
print '#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)'
print ' if (gc->isDirect) {'
- print ' const _glapi_proc *const table = GET_DISPATCH();'
+ print ' const _glapi_proc *const disp_table = GET_DISPATCH();'
print ' PFNGL%sPROC p =' % (name.upper())
- print ' (PFNGL%sPROC) table[%d];' % (name.upper(), func.offset)
+ print ' (PFNGL%sPROC) disp_table[%d];' % (name.upper(), func.offset)
print ' %sp(%s);' % (ret_string, func.get_called_parameter_string())
print ' } else'
print '#endif'
diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c
index 36e1fcf62..e6f4541f0 100644
--- a/mesalib/src/mesa/main/extensions.c
+++ b/mesalib/src/mesa/main/extensions.c
@@ -927,7 +927,7 @@ _mesa_get_extension_count(struct gl_context *ctx)
base = (GLboolean *) &ctx->Extensions;
for (i = extension_table; i->name != 0; ++i) {
- if (base[i->offset]) {
+ if (base[i->offset] && (i->api_set & (1 << ctx->API))) {
ctx->Extensions.Count++;
}
}
@@ -947,10 +947,11 @@ _mesa_get_enabled_extension(struct gl_context *ctx, GLuint index)
base = (GLboolean*) &ctx->Extensions;
n = 0;
for (i = extension_table; i->name != 0; ++i) {
- if (n == index && base[i->offset]) {
- return (const GLubyte*) i->name;
- } else if (base[i->offset]) {
- ++n;
+ if (base[i->offset] & (i->api_set & (1 << ctx->API))) {
+ if (n == index)
+ return (const GLubyte*) i->name;
+ else
+ ++n;
}
}
diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c
index 59a5ec32d..abc9d83a6 100644
--- a/mesalib/src/mesa/main/fbobject.c
+++ b/mesalib/src/mesa/main/fbobject.c
@@ -2979,8 +2979,8 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
/* extra checks for multisample copies... */
if (readFb->Visual.samples > 0 || drawFb->Visual.samples > 0) {
/* src and dest region sizes must be the same */
- if (srcX1 - srcX0 != dstX1 - dstX0 ||
- srcY1 - srcY0 != dstY1 - dstY0) {
+ if (abs(srcX1 - srcX0) != abs(dstX1 - dstX0) ||
+ abs(srcY1 - srcY0) != abs(dstY1 - dstY0)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBlitFramebufferEXT(bad src/dst multisample region sizes)");
return;
diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c
index 24d2a18fe..6800cc353 100644
--- a/mesalib/src/mesa/main/get.c
+++ b/mesalib/src/mesa/main/get.c
@@ -789,6 +789,15 @@ static const struct value_desc values[] = {
#endif /* FEATURE_GL || FEATURE_ES2 */
+#if FEATURE_ES1 || FEATURE_ES2
+ { 0, 0, TYPE_API_MASK, API_OPENGLES | API_OPENGLES2_BIT, NO_EXTRA },
+ /* GL_OES_EGL_image_external */
+ { GL_TEXTURE_BINDING_EXTERNAL_OES, LOC_CUSTOM,
+ TYPE_INT, TEXTURE_EXTERNAL_INDEX, extra_OES_EGL_image_external },
+ { GL_TEXTURE_EXTERNAL_OES, LOC_CUSTOM,
+ TYPE_BOOLEAN, 0, extra_OES_EGL_image_external },
+#endif
+
#if FEATURE_ES2
/* Enums unique to OpenGL ES 2.0 */
{ 0, 0, TYPE_API_MASK, API_OPENGLES2_BIT, NO_EXTRA },
@@ -801,12 +810,6 @@ static const struct value_desc values[] = {
{ GL_SHADER_BINARY_FORMATS, CONST(0), NO_EXTRA },
#endif /* FEATURE_ES2 */
- /* GL_OES_EGL_image_external */
- { GL_TEXTURE_BINDING_EXTERNAL_OES, LOC_CUSTOM,
- TYPE_INT, TEXTURE_EXTERNAL_INDEX, extra_OES_EGL_image_external },
- { GL_TEXTURE_EXTERNAL_OES, LOC_CUSTOM,
- TYPE_BOOLEAN, 0, extra_OES_EGL_image_external },
-
#if FEATURE_GL
/* Remaining enums are only in OpenGL */
{ 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGL_CORE_BIT, NO_EXTRA },
@@ -1398,29 +1401,29 @@ print_table_stats(void)
for (i = 0; i < Elements(table); i++) {
if (!table[i])
- continue;
+ continue;
count++;
d = &values[table[i]];
hash = (d->pname * prime_factor);
j = 0;
while (1) {
- if (values[table[hash & mask]].pname == d->pname)
- break;
- hash += prime_step;
- j++;
+ if (values[table[hash & mask]].pname == d->pname)
+ break;
+ hash += prime_step;
+ j++;
}
if (j < 10)
- collisions[j]++;
+ collisions[j]++;
else
- collisions[10]++;
+ collisions[10]++;
}
printf("number of enums: %d (total %d)\n", count, Elements(values));
for (i = 0; i < Elements(collisions) - 1; i++)
if (collisions[i] > 0)
- printf(" %d enums with %d %scollisions\n",
- collisions[i], i, i == 10 ? "or more " : "");
+ printf(" %d enums with %d %scollisions\n",
+ collisions[i], i, i == 10 ? "or more " : "");
}
#endif
@@ -1442,20 +1445,20 @@ void _mesa_init_get_hash(struct gl_context *ctx)
for (i = 0; i < Elements(values); i++) {
if (values[i].type == TYPE_API_MASK) {
- api_mask = values[i].offset;
- continue;
+ api_mask = values[i].offset;
+ continue;
}
if (!(api_mask & api_bit))
- continue;
+ continue;
hash = (values[i].pname * prime_factor) & mask;
while (1) {
- index = hash & mask;
- if (!table[index]) {
- table[index] = i;
- break;
- }
- hash += prime_step;
+ index = hash & mask;
+ if (!table[index]) {
+ table[index] = i;
+ break;
+ }
+ hash += prime_step;
}
}
@@ -1992,13 +1995,13 @@ find_value(const char *func, GLenum pname, void **p, union value *v)
/* If the enum isn't valid, the hash walk ends with index 0,
* which is the API mask entry at the beginning of values[]. */
if (unlikely(d->type == TYPE_API_MASK)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func,
- _mesa_lookup_enum_by_nr(pname));
- return &error_value;
+ _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func,
+ _mesa_lookup_enum_by_nr(pname));
+ return &error_value;
}
if (likely(d->pname == pname))
- break;
+ break;
hash += prime_step;
}
diff --git a/mesalib/src/mesa/main/imports.h b/mesalib/src/mesa/main/imports.h
index abf216c99..81da51047 100644
--- a/mesalib/src/mesa/main/imports.h
+++ b/mesalib/src/mesa/main/imports.h
@@ -520,6 +520,28 @@ extern unsigned int
_mesa_bitcount_64(uint64_t n);
#endif
+/**
+ * Find the last (most significant) bit set in a word.
+ *
+ * Essentially ffs() in the reverse direction.
+ */
+static inline unsigned int
+_mesa_fls(unsigned int n)
+{
+#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 304)
+ return n == 0 ? 0 : 32 - __builtin_clz(n);
+#else
+ unsigned int v = 1;
+
+ if (n == 0)
+ return 0;
+
+ while (n >>= 1)
+ v++;
+
+ return v;
+#endif
+}
extern GLhalfARB
_mesa_float_to_half(float f);
diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c
index 3cf74f295..02bd87ac6 100644
--- a/mesalib/src/mesa/main/teximage.c
+++ b/mesalib/src/mesa/main/teximage.c
@@ -660,8 +660,8 @@ _mesa_is_proxy_texture(GLenum target)
/**
* Return the proxy target which corresponds to the given texture target
*/
-static GLenum
-get_proxy_target(GLenum target)
+GLenum
+_mesa_get_proxy_target(GLenum target)
{
switch (target) {
case GL_TEXTURE_1D:
@@ -692,7 +692,7 @@ get_proxy_target(GLenum target)
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
return GL_PROXY_TEXTURE_2D_ARRAY_EXT;
default:
- _mesa_problem(NULL, "unexpected target in get_proxy_target()");
+ _mesa_problem(NULL, "unexpected target in _mesa_get_proxy_target()");
return 0;
}
}
@@ -1703,7 +1703,7 @@ texture_error_check( struct gl_context *ctx,
GLint width, GLint height,
GLint depth, GLint border )
{
- const GLenum proxyTarget = get_proxy_target(target);
+ const GLenum proxyTarget = _mesa_get_proxy_target(target);
const GLboolean isProxy = target == proxyTarget;
GLboolean sizeOK = GL_TRUE;
GLboolean colorFormat;
@@ -1933,7 +1933,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
GLsizei height, GLsizei depth, GLint border,
GLsizei imageSize)
{
- const GLenum proxyTarget = get_proxy_target(target);
+ const GLenum proxyTarget = _mesa_get_proxy_target(target);
const GLint maxLevels = _mesa_max_texture_levels(ctx, target);
GLint expectedSize;
GLenum choose_format;
@@ -2308,7 +2308,7 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
GLenum target, GLint level, GLint internalFormat,
GLint width, GLint height, GLint border )
{
- const GLenum proxyTarget = get_proxy_target(target);
+ const GLenum proxyTarget = _mesa_get_proxy_target(target);
const GLenum type = GL_FLOAT;
GLboolean sizeOK;
GLint baseFormat;
diff --git a/mesalib/src/mesa/main/teximage.h b/mesalib/src/mesa/main/teximage.h
index feaaf0cba..36fd1c2bc 100644
--- a/mesalib/src/mesa/main/teximage.h
+++ b/mesalib/src/mesa/main/teximage.h
@@ -66,6 +66,8 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat );
extern GLboolean
_mesa_is_proxy_texture(GLenum target);
+extern GLenum
+_mesa_get_proxy_target(GLenum target);
extern struct gl_texture_image *
_mesa_new_texture_image( struct gl_context *ctx );
diff --git a/mesalib/src/mesa/main/texstorage.c b/mesalib/src/mesa/main/texstorage.c
index f8af8bf01..f8a939794 100644
--- a/mesalib/src/mesa/main/texstorage.c
+++ b/mesalib/src/mesa/main/texstorage.c
@@ -192,9 +192,10 @@ setup_texstorage(struct gl_context *ctx,
return;
}
- }
- texObj->Immutable = GL_TRUE;
+ /* Only set this field for non-proxy texture objects */
+ texObj->Immutable = GL_TRUE;
+ }
}
@@ -242,25 +243,68 @@ tex_storage_error_check(struct gl_context *ctx, GLuint dims, GLenum target,
GLsizei levels, GLenum internalformat,
GLsizei width, GLsizei height, GLsizei depth)
{
- const GLboolean isProxy = _mesa_is_proxy_texture(target);
struct gl_texture_object *texObj;
GLuint maxDim;
+ GLboolean legalFormat;
+
+ /* check internal format - note that only sized formats are allowed */
+ switch (internalformat) {
+ case GL_ALPHA:
+ case GL_LUMINANCE:
+ case GL_LUMINANCE_ALPHA:
+ case GL_INTENSITY:
+ case GL_RED:
+ case GL_RG:
+ case GL_RGB:
+ case GL_RGBA:
+ case GL_BGRA:
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_STENCIL:
+ case GL_COMPRESSED_ALPHA:
+ case GL_COMPRESSED_LUMINANCE_ALPHA:
+ case GL_COMPRESSED_LUMINANCE:
+ case GL_COMPRESSED_INTENSITY:
+ case GL_COMPRESSED_RGB:
+ case GL_COMPRESSED_RGBA:
+ case GL_COMPRESSED_SRGB:
+ case GL_COMPRESSED_SRGB_ALPHA:
+ case GL_COMPRESSED_SLUMINANCE:
+ case GL_COMPRESSED_SLUMINANCE_ALPHA:
+ case GL_RED_INTEGER:
+ case GL_GREEN_INTEGER:
+ case GL_BLUE_INTEGER:
+ case GL_ALPHA_INTEGER:
+ case GL_RGB_INTEGER:
+ case GL_RGBA_INTEGER:
+ case GL_BGR_INTEGER:
+ case GL_BGRA_INTEGER:
+ case GL_LUMINANCE_INTEGER_EXT:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+ /* these unsized formats are illegal */
+ legalFormat = GL_FALSE;
+ break;
+ default:
+ legalFormat = _mesa_base_tex_format(ctx, internalformat) > 0;
+ }
+
+ if (!legalFormat) {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glTexStorage%uD(internalformat = %s)", dims,
+ _mesa_lookup_enum_by_nr(internalformat));
+ return GL_TRUE;
+ }
/* size check */
if (width < 1 || height < 1 || depth < 1) {
- if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glTexStorage%uD(width, height or depth < 1)", dims);
- }
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glTexStorage%uD(width, height or depth < 1)", dims);
return GL_TRUE;
}
/* levels check */
if (levels < 1 || height < 1 || depth < 1) {
- if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glTexStorage%uD(levels < 1)",
- dims);
- }
+ _mesa_error(ctx, GL_INVALID_VALUE, "glTexStorage%uD(levels < 1)",
+ dims);
return GL_TRUE;
}
@@ -274,40 +318,32 @@ tex_storage_error_check(struct gl_context *ctx, GLuint dims, GLenum target,
/* check levels against maximum */
if (levels > _mesa_max_texture_levels(ctx, target)) {
- if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexStorage%uD(levels too large)", dims);
- }
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glTexStorage%uD(levels too large)", dims);
return GL_TRUE;
}
/* check levels against width/height/depth */
maxDim = MAX3(width, height, depth);
if (levels > _mesa_logbase2(maxDim) + 1) {
- if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexStorage%uD(too many levels for max texture dimension)",
- dims);
- }
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glTexStorage%uD(too many levels for max texture dimension)",
+ dims);
return GL_TRUE;
}
/* non-default texture object check */
texObj = _mesa_get_current_tex_object(ctx, target);
- if (!texObj || (texObj->Name == 0 && !isProxy)) {
- if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexStorage%uD(texture object 0)", dims);
- }
+ if (!texObj || (texObj->Name == 0)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glTexStorage%uD(texture object 0)", dims);
return GL_TRUE;
}
/* Check if texObj->Immutable is set */
if (texObj->Immutable) {
- if (!isProxy) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glTexStorage%uD(immutable)",
- dims);
- }
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glTexStorage%uD(immutable)",
+ dims);
return GL_TRUE;
}
@@ -323,22 +359,38 @@ texstorage(GLuint dims, GLenum target, GLsizei levels, GLenum internalformat,
GLsizei width, GLsizei height, GLsizei depth)
{
struct gl_texture_object *texObj;
- GLboolean error;
+ GLboolean sizeOK;
+ GLenum proxyTarget = _mesa_get_proxy_target(target);
GET_CURRENT_CONTEXT(ctx);
texObj = _mesa_get_current_tex_object(ctx, target);
- error = tex_storage_error_check(ctx, dims, target, levels,
- internalformat, width, height, depth);
- if (!error) {
+ if (tex_storage_error_check(ctx, dims, target, levels,
+ internalformat, width, height, depth)) {
+ return; /* error was recorded */
+ }
+
+ sizeOK = ctx->Driver.TestProxyTexImage(ctx, proxyTarget, 0,
+ internalformat, GL_NONE, GL_NONE,
+ width, height, depth, 0);
+
+ if (!sizeOK) {
+ if (_mesa_is_proxy_texture(texObj->Target)) {
+ /* clear all image fields for [levels] */
+ clear_image_fields(ctx, dims, texObj);
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glTexStorage%uD(invalid width, height or depth)",
+ dims);
+ return;
+ }
+ }
+ else {
setup_texstorage(ctx, texObj, dims, levels, internalformat,
width, height, depth);
}
- else if (_mesa_is_proxy_texture(target)) {
- /* clear all image fields for [levels] */
- clear_image_fields(ctx, dims, texObj);
- }
}
diff --git a/mesalib/src/mesa/main/version.h b/mesalib/src/mesa/main/version.h
index 5b2e85afd..f0ba6f267 100644
--- a/mesalib/src/mesa/main/version.h
+++ b/mesalib/src/mesa/main/version.h
@@ -33,9 +33,9 @@ struct gl_context;
/* Mesa version */
#define MESA_MAJOR 9
-#define MESA_MINOR 0
+#define MESA_MINOR 1
#define MESA_PATCH 0
-#define MESA_VERSION_STRING "9.0-devel"
+#define MESA_VERSION_STRING "9.1-devel"
/* To make version comparison easy */
#define MESA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/xorg-server/xkeyboard-config/NEWS b/xorg-server/xkeyboard-config/NEWS
index e53dd344c..731a2e474 100644
--- a/xorg-server/xkeyboard-config/NEWS
+++ b/xorg-server/xkeyboard-config/NEWS
@@ -1,3 +1,6 @@
+2.7 8 bugs fixed, most important:
+ - Fxx fixed (CTRL+ALT type)
+ - *.dir files not produced any more
2.6 16 bugs fixed
Updated translations
Using proper gettext, instead of glib-gettext
diff --git a/xorg-server/xkeyboard-config/configure.in b/xorg-server/xkeyboard-config/configure.in
index a43c379c8..9ba1819be 100644
--- a/xorg-server/xkeyboard-config/configure.in
+++ b/xorg-server/xkeyboard-config/configure.in
@@ -1,4 +1,4 @@
-AC_INIT(xkeyboard-config, 2.6)
+AC_INIT(xkeyboard-config, 2.6.99)
AC_CONFIG_SRCDIR(rules/base.xml.in)
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
@@ -97,6 +97,7 @@ symbols/macintosh_vndr/Makefile
symbols/nec_vndr/Makefile
symbols/nokia_vndr/Makefile
symbols/sgi_vndr/Makefile
+symbols/sharp_vndr/Makefile
symbols/sony_vndr/Makefile
symbols/sun_vndr/Makefile
symbols/xfree68_vndr/Makefile
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_s.part b/xorg-server/xkeyboard-config/rules/base.ml_s.part
index 5d3b46d61..7e0148672 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml_s.part
@@ -36,6 +36,11 @@
olpc $olpclayouts = olpc+%l%(m)
olpc * = olpc+%l%(v)
$thinkpads br = pc+br(thinkpad)
+ sl-c3x00 * = pc+sharp_vndr/sl-c3x00(basic)
+ ws003sh * = pc+sharp_vndr/ws003sh(basic)
+ ws007sh * = pc+sharp_vndr/ws007sh(basic)
+ ws011sh * = pc+sharp_vndr/ws011sh(basic)
+ ws020sh * = pc+sharp_vndr/ws020sh(basic)
htcdream $htcdreamlayouts = %l(htcdream)
* $nonlatin = pc+us+%l%(v):2
* * = pc+%l%(v)
diff --git a/xorg-server/xkeyboard-config/symbols/Makefile.am b/xorg-server/xkeyboard-config/symbols/Makefile.am
index c67a60088..af0322f0c 100644
--- a/xorg-server/xkeyboard-config/symbols/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = digital_vndr fujitsu_vndr hp_vndr macintosh_vndr nec_vndr nokia_vndr sgi_vndr sony_vndr sun_vndr xfree68_vndr
+SUBDIRS = digital_vndr fujitsu_vndr hp_vndr macintosh_vndr nec_vndr nokia_vndr sharp_vndr sgi_vndr sony_vndr sun_vndr xfree68_vndr
symbolsdir = $(xkb_base)/symbols
symbols_DATA = \
diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/sharp_vndr/Makefile.am
new file mode 100644
index 000000000..5b2d4aafd
--- /dev/null
+++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/Makefile.am
@@ -0,0 +1,8 @@
+symbolsdir = $(xkb_base)/symbols/sharp_vndr
+
+dist_symbols_DATA = \
+sl-c3x00 \
+ws003sh \
+ws007sh \
+ws011sh \
+ws020sh
diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00 b/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00
new file mode 100644
index 000000000..d1dca0cb9
--- /dev/null
+++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00
@@ -0,0 +1,74 @@
+// $NetBSD: sl-c3x00,v 1.1 2009/12/13 04:54:51 nonaka Exp $
+// $OpenBSD: zaurus,v 1.2 2008/03/05 17:24:55 matthieu Exp $
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Sharp SL-C3x00";
+
+ // Upper row
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, quoteright ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, asciitilde ] };
+ key <BKSP> { type="CTRL+ALT",
+ symbols[Group1]= [ BackSpace, Terminate_Server ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W, asciicircum ] };
+ key <AD03> { [ e, E, equal ] };
+ key <AD04> { [ r, R, plus ] };
+ key <AD05> { [ t, T, bracketleft ] };
+ key <AD06> { [ y, Y, bracketright ] };
+ key <AD07> { [ u, U, braceleft ] };
+ key <AD08> { [ i, I, braceright ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab, Caps_Lock ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D, quoteleft ] };
+ key <AC04> { [ f, F, backslash ] };
+ key <AC05> { [ g, G, semicolon ] };
+ key <AC06> { [ h, H, colon ] };
+ key <AC07> { [ j, J, asterisk ] };
+ key <AC08> { [ k, K, yen ] };
+ key <AC09> { [ l, L, bar ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X, SunCut ] };
+ key <AB03> { [ c, C, SunCopy ] };
+ key <AB04> { [ v, V, SunPaste ] };
+ key <AB05> { [ b, B, underscore ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <RTSH> { [ Shift_R ] };
+ key <RTRN> { [ Return ] };
+
+ key <RALT> { [ ISO_Level3_Shift ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <AE11> { [ minus, minus, at ] };
+ key <SPCE> { [ space ] };
+ key <AB08> { [ comma, slash, less ] };
+ key <AB09> { [ period, question, greater ] };
+ // End alphanumeric section
+
+ // keypad
+ key <UP> { [ Up, Up, Prior ] };
+ key <LEFT> { [ Left, Left, Home ] };
+ key <DOWN> { [ Down, Down, Next ] };
+ key <RGHT> { [ Right, Right, End ] };
+
+ key <ESC> { [ Escape ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh
new file mode 100644
index 000000000..7c3d98fdf
--- /dev/null
+++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh
@@ -0,0 +1,73 @@
+// $NetBSD: ws003sh,v 1.1 2010/05/15 15:33:30 nonaka Exp $
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Sharp WS003SH";
+
+ // Upper row
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, quoteright, quoteleft ] };
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0 ] };
+ key <AE11> { [ minus, equal, backslash ] };
+ key <BKSP> { [ BackSpace, BackSpace, Delete ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W, asciicircum ] };
+ key <AD03> { [ e, E, asciitilde ] };
+ key <AD04> { [ r, R, bar ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U, bracketleft ] };
+ key <AD08> { [ i, I, bracketright ] };
+ key <AD09> { [ o, O, underscore ] };
+ key <AD10> { [ p, P, at ] };
+
+ key <TAB> { [ Tab, Tab, Escape ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K, plus ] };
+ key <AC09> { [ l, L, asterisk ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, semicolon, less ] };
+ key <AB09> { [ period, colon, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+ key <RTRN> { [ Return ] };
+
+ key <RALT> { [ ISO_Level3_Shift ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <SPCE> { [ space ] };
+ // End alphanumeric section
+
+ // keypad
+ key <UP> { [ Up, Up, Prior ] };
+ key <LEFT> { [ Left, Left, Home ] };
+ key <DOWN> { [ Down, Down, Next ] };
+ key <RGHT> { [ Right, Right, End ] };
+
+ key <ESC> { [ Escape ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh
new file mode 100644
index 000000000..d287eb528
--- /dev/null
+++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh
@@ -0,0 +1,73 @@
+// $NetBSD: ws007sh,v 1.1 2010/05/15 15:33:30 nonaka Exp $
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Sharp WS007SH";
+
+ // Upper row
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, quoteright, quoteleft ] };
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0 ] };
+ key <AE11> { [ minus, equal, backslash ] };
+ key <BKSP> { [ BackSpace, BackSpace, Delete ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W, asciicircum ] };
+ key <AD03> { [ e, E, asciitilde ] };
+ key <AD04> { [ r, R, bar ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U, bracketleft ] };
+ key <AD08> { [ i, I, bracketright ] };
+ key <AD09> { [ o, O, underscore ] };
+ key <AD10> { [ p, P, at ] };
+
+ key <TAB> { [ Tab, Tab, Escape ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K, plus ] };
+ key <AC09> { [ l, L, asterisk ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, semicolon, less ] };
+ key <AB09> { [ period, colon, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+ key <RTRN> { [ Return ] };
+
+ key <RALT> { [ ISO_Level3_Shift ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <SPCE> { [ space ] };
+ // End alphanumeric section
+
+ // keypad
+ key <UP> { [ Up, Up, Prior ] };
+ key <LEFT> { [ Left, Left, Home ] };
+ key <DOWN> { [ Down, Down, Next ] };
+ key <RGHT> { [ Right, Right, End ] };
+
+ key <ESC> { [ Escape ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh
new file mode 100644
index 000000000..45976dff9
--- /dev/null
+++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh
@@ -0,0 +1,78 @@
+// $NetBSD: ws011sh,v 1.2 2010/05/30 10:10:20 nonaka Exp $
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Sharp WS011SH";
+
+ // Upper row
+ key <HZTG> {
+ type[Group1] = "THREE_LEVEL",
+ symbols[Group1] = [ Zenkaku_Hankaku, Zenkaku_Hankaku, exclam ]
+ };
+
+ key <AD01> { [ q, Q, quotedbl ] };
+ key <AD02> { [ w, W, numbersign ] };
+ key <AD03> { [ e, E, dollar ] };
+ key <AD04> { [ r, R, percent ] };
+ key <AD05> { [ t, T, ampersand ] };
+ key <AD06> { [ y, Y, 1 ] };
+ key <AD07> { [ u, U, 2 ] };
+ key <AD08> { [ i, I, 3 ] };
+ key <AD09> { [ o, O, underscore ] };
+ key <AD10> { [ p, P, at ] };
+ key <BKSP> { [ BackSpace, BackSpace, Delete ] };
+
+ key <TAB> { [ Tab, Tab, Escape ] };
+ key <AC01> { [ a, A, bracketleft ] };
+ key <AC02> { [ s, S, apostrophe ] };
+ key <AC03> { [ d, D, parenleft ] };
+ key <AC04> { [ f, F, parenright ] };
+ key <AC05> { [ g, G, asterisk ] };
+ key <AC06> { [ h, H, 4 ] };
+ key <AC07> { [ j, J, 5 ] };
+ key <AC08> { [ k, K, 6 ] };
+ key <AC09> { [ l, L, plus ] };
+ key <AE11> { [ minus, equal, backslash ] };
+ key <AE02> { [ grave, braceleft, braceright ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z, bracketright ] };
+ key <AB02> { [ x, X, asciicircum ] };
+ key <AB03> { [ c, C, asciitilde ] };
+ key <AB04> { [ v, V, bar ] };
+ key <AB05> { [ b, B, 7 ] };
+ key <AB06> { [ n, N, 8 ] };
+ key <AB07> { [ m, M, 9 ] };
+ key <AB08> { [ comma, less, semicolon ] };
+ key <AB09> { [ period, greater, colon ] };
+ key <AB10> { [ slash, question, 0 ] };
+ key <RTSH> { [ Shift_R ] };
+ key <RTRN> { [ Return ] };
+
+ key <RALT> { [ ISO_Level3_Shift ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <SPCE> { [ space ] };
+ // End alphanumeric section
+
+ key <UP> { [ Up, Up, Prior ] };
+ key <LEFT> { [ Left, Left, Home ] };
+ key <DOWN> { [ Down, Down, Next ] };
+ key <RGHT> { [ Right, Right, End ] };
+
+ key <ESC> { [ Escape ] };
+
+ // keypad
+ key <KP1> { [ 1 ] };
+ key <KP2> { [ 2 ] };
+ key <KP3> { [ 3 ] };
+ key <KP4> { [ 4 ] };
+ key <KP5> { [ 5 ] };
+ key <KP6> { [ 6 ] };
+ key <KP7> { [ 7 ] };
+ key <KP8> { [ 8 ] };
+ key <KP9> { [ 9 ] };
+ key <KP0> { [ 0 ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh
new file mode 100644
index 000000000..5231e1483
--- /dev/null
+++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh
@@ -0,0 +1,67 @@
+// $NetBSD: ws020sh,v 1.1 2010/05/25 13:12:51 nonaka Exp $
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Sharp WS020SH";
+
+ // Upper row
+ key <HZTG> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1]= [ Zenkaku_Hankaku, Zenkaku_Hankaku, exclam ]
+ };
+
+ key <AD01> { [ q, Q, quotedbl ] };
+ key <AD02> { [ w, W, numbersign ] };
+ key <AD03> { [ e, E, dollar ] };
+ key <AD04> { [ r, R, percent ] };
+ key <AD05> { [ t, T, ampersand ] };
+ key <AD06> { [ y, Y, underscore ] };
+ key <AD07> { [ u, U, 1 ] };
+ key <AD08> { [ i, I, 2 ] };
+ key <AD09> { [ o, O, 3 ] };
+ key <AD10> { [ p, P, at ] };
+ key <BKSP> { [ BackSpace, BackSpace, Delete ] };
+
+ key <TAB> { [ Tab, Tab, Escape ] };
+ key <AC01> { [ a, A, bracketleft ] };
+ key <AC02> { [ s, S, apostrophe ] };
+ key <AC03> { [ d, D, parenleft ] };
+ key <AC04> { [ f, F, parenright ] };
+ key <AC05> { [ g, G, asterisk ] };
+ key <AC06> { [ h, H, 4 ] };
+ key <AC07> { [ j, J, 5 ] };
+ key <AC08> { [ k, K, 6 ] };
+ key <AC09> { [ l, L, plus ] };
+ key <AE11> { [ minus, equal, backslash ] };
+ key <AE02> { [ grave, braceleft, braceright ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z, bracketright ] };
+ key <AB02> { [ x, X, asciicircum ] };
+ key <AB03> { [ c, C, asciitilde ] };
+ key <AB04> { [ v, V, bar ] };
+ key <AB05> { [ b, B, 7 ] };
+ key <AB06> { [ n, N, 8 ] };
+ key <AB07> { [ m, M, 9 ] };
+ key <AB08> { [ comma, less, semicolon ] };
+ key <AB09> { [ period, greater, colon ] };
+ key <AB10> { [ slash, question, 0 ] };
+ key <RTSH> { [ Shift_R ] };
+ key <RTRN> { [ Return ] };
+
+ key <RALT> { [ ISO_Level3_Shift ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <SPCE> { [ space ] };
+ // End alphanumeric section
+
+ // keypad
+ key <UP> { [ Up, Up, Prior ] };
+ key <LEFT> { [ Left, Left, Home ] };
+ key <DOWN> { [ Down, Down, Next ] };
+ key <RGHT> { [ Right, Right, End ] };
+
+ key <ESC> { [ Escape ] };
+
+ include "level3(ralt_switch)"
+};