diff options
25 files changed, 343 insertions, 67 deletions
diff --git a/fontconfig/README b/fontconfig/README index 8120585a7..abaf506b8 100644 --- a/fontconfig/README +++ b/fontconfig/README @@ -1,12 +1,45 @@ Fontconfig Font configuration and customization library - Version 2.10.93 (2.11 RC3) - 2013-05-20 + Version 2.10.94 (2.11 RC4) + 2013-08-29 Check INSTALL for compilation and installation instructions. Report bugs to https://bugs.freedesktop.org in the fontconfig module. +2.10.94 (2.11 RC4) + +Akira TAGOH (25): + Bug 64906 - FcNameParse() should ignore leading whitespace in parameters + Fix a comparison of constant warning with clang + Fix a shift count overflow on 32bit box + Fix a incompatible pointer warning on NetBSD + Add FcTypeUnknown to FcType to avoid comparison of constant -1 + Fix the behavior of intermixed tests end edits in match + Ignore scandir() check on mingw + Use INT_MAX instead of unreliable hardcoding value + Add FC_UNUSED to FC_ASSERT_STATIC macro to avoid compiler warning + Rework to apply the intermixed test and edit elements in one-pass + trivial code optimization + Correct fontconfig.pc to add certain dependencies for build + Correct fontconfig.pc to add certain dependencies for static build + Fix wrong edit position + Bug 67809 - Invalid read/write with valgrind when assigning something twice + warn deprecated only when migration failed + Bug 67845 - Match on FC_SCALABLE + Bug 16818 - fontformat in match pattern is not respected? + Bug 68340 - More metric compat fonts + Bug 63399 - Add default aliases for Georgia, Garamond, Palatino Linotype, Trebuchet MS + Fix a typo + Fix a crash when non-builtin objects are edited + Fix a wrong edit position when 'kind' is different + Bug 68587 - copy qu.orth to quz.orth + Add quz.orth to Makefile.am + +Behdad Esfahbod (2): + Minor + Fix assertion + 2.10.93 (2.11 RC3) Akira TAGOH (10): diff --git a/fontconfig/configure.ac b/fontconfig/configure.ac index 321feced4..12d414938 100644 --- a/fontconfig/configure.ac +++ b/fontconfig/configure.ac @@ -33,7 +33,7 @@ dnl This is the package version number, not the shared library dnl version. This same version number must appear in fontconfig/fontconfig.h dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's dnl not possible to extract the version number here from fontconfig.h -AC_INIT([fontconfig], [2.10.93], [https://bugs.freedesktop.org/enger_bug.cgi?product=fontconfig]) +AC_INIT([fontconfig], [2.10.94], [https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig]) AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) diff --git a/fontconfig/fc-lang/Makefile.am b/fontconfig/fc-lang/Makefile.am index 2340de4a6..6f76ee015 100644 --- a/fontconfig/fc-lang/Makefile.am +++ b/fontconfig/fc-lang/Makefile.am @@ -263,6 +263,7 @@ ORTH = \ pap_an.orth \ pap_aw.orth \ qu.orth \ + quz.orth \ rn.orth \ rw.orth \ sc.orth \ diff --git a/fontconfig/fontconfig/fontconfig.h b/fontconfig/fontconfig/fontconfig.h index 39d1b1b9c..9a667022b 100644 --- a/fontconfig/fontconfig/fontconfig.h +++ b/fontconfig/fontconfig/fontconfig.h @@ -52,7 +52,7 @@ typedef int FcBool; #define FC_MAJOR 2 #define FC_MINOR 10 -#define FC_REVISION 93 +#define FC_REVISION 94 #define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION)) diff --git a/mesalib/configure.ac b/mesalib/configure.ac index e20a2289a..b19ab189e 100644 --- a/mesalib/configure.ac +++ b/mesalib/configure.ac @@ -1444,7 +1444,7 @@ egl_platforms=`IFS=', '; echo $with_egl_platforms` for plat in $egl_platforms; do case "$plat" in wayland) - PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2]) + PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.2.0 wayland-server >= 1.2.0]) GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland" WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client` diff --git a/mesalib/docs/index.html b/mesalib/docs/index.html index 30f58ab42..2f04335dc 100644 --- a/mesalib/docs/index.html +++ b/mesalib/docs/index.html @@ -16,6 +16,13 @@ <h1>News</h1> +<h2>August 27, 2013</h2> +<p> +<a href="relnotes/9.2.html">Mesa 9.2</a> is released. +This is a new development release. +See the release notes for more information about the release. +</p> + <h2>August 1, 2013</h2> <p> <a href="relnotes/9.1.6.html">Mesa 9.1.6</a> is released. diff --git a/mesalib/docs/relnotes/9.2.html b/mesalib/docs/relnotes/9.2.html index 1f93b8963..9e1c01522 100644 --- a/mesalib/docs/relnotes/9.2.html +++ b/mesalib/docs/relnotes/9.2.html @@ -14,7 +14,7 @@ <iframe src="../contents.html"></iframe> <div class="content"> -<h1>Mesa 9.2 Release Notes / (date TBD)</h1> +<h1>Mesa 9.2 Release Notes / (August 27, 2013)</h1> <p> Mesa 9.2 is a new development release. @@ -33,7 +33,9 @@ because GL_ARB_compatibility is not supported. <h2>MD5 checksums</h2> <pre> -tbd +4f93c6475ec656fc1f7b93aeffc9b6c4 MesaLib-9.2.0.tar.gz +4185b6aae890bc62a964f4b24cc1aca8 MesaLib-9.2.0.tar.bz2 +3bc5339bc98b9c37777ffd14e3a8eca4 MesaLib-9.2.0.zip </pre> @@ -44,12 +46,14 @@ Note: some of the new features are only available with certain drivers. </p> <ul> -<li>GL_ARB_shading_language_420pack</li> +<li>GL_ARB_shading_language_420pack in all drivers that support GLSL 1.30.</li> <li>GL_ARB_texture_buffer_range</li> <li>GL_ARB_texture_multisample</li> <li>GL_ARB_texture_storage_multisample</li> <li>GL_ARB_texture_query_lod</li> -<li>Enable GL_ARB_texture_storage on radeon, r200, and nouveau</li> +<li>GL_ARB_texture_storage on radeon, r200, and nouveau</li> +<li>GL_EXT_discard_framebuffer in all OpenGL ES (all versions) drivers</li> +<li>GL_EXT_framebuffer_multisample_blit_scaled on i965</li> <li>Added new freedreno gallium driver</li> <li>OSMesa interface for gallium llvmpipe/softpipe drivers</li> <li>Gallium Heads-Up Display (HUD) feature for performance monitoring</li> @@ -59,8 +63,149 @@ Note: some of the new features are only available with certain drivers. <h2>Bug fixes</h2> -<p>TBD -- This list is likely incomplete.</p> +<p>Attempts have been made to <b>not</b> include bugs fixed in previous 9.1 +releases or bugs that were regressions during 9.2 development. This list is +likely incomplete.</p> +<ul> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=41787">Bug 41787</a> - [llvmpipe] stencil broken</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=44618">Bug 44618</a> - Cross-compilation broken by glsl builtin_compiler</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=46632">Bug 46632</a> - Make the alignment checks for the readpixel blit fastpath a bit more lenient</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=47116">Bug 47116</a> - Enemy territory freezes with rs880 and commit fbebd431ec4e2e461a0cbcd5f3a04a000b8f6bbf</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=47248">Bug 47248</a> - autogen missing dependency on flex and bison, causes infinite loop in glsl build</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=48694">Bug 48694</a> - radeonsi_pipe.c:322:7: error: ‘PIPE_CAP_DUAL_SOURCE_BLEND’ undeclared</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=50655">Bug 50655</a> - [r600g][RV670 HD3870] Ioquake games causes GPU lockup (waiting for 0x00003039 last fence id 0x00003030)</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=51471">Bug 51471</a> - [965gm] Corrupted graphics in corners of screen with pixel shaders enabled</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=51782">Bug 51782</a> - mesa-8.0.3: fails to compile against uclibc</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=54240">Bug 54240</a> - [swrast] piglit fbo-generatemipmap-filtering regression</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=55503">Bug 55503</a> - Constant vertex attributes broken</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=55783">Bug 55783</a> - glEnable(GL_FRAMEBUFFER_SRGB) has no effect on the backbuffer</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=55825">Bug 55825</a> - [Bisected i965]Oglc max_values(advanced.fragmentProgram.GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB) causes OOM-killer</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=56920">Bug 56920</a> - [sandybridge][uxa] graphics very glitchy and always flickering</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57753">Bug 57753</a> - leak in loop_analysis</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=57875">Bug 57875</a> - Second Life viewer bad rendering with git-ec83535</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58666">Bug 58666</a> - rv670 + llvm = errors.</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58680">Bug 58680</a> - [IVB] Graphical glitches in 0 A.D</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=58872">Bug 58872</a> - Mac OS X configure: error: Couldn't find clock_gettime</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59322">Bug 59322</a> - r300g MSAA breaks Half-Life 2 in Wine</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59364">Bug 59364</a> - [bisected] Mesa build fails: clientattrib.c:33:22: fatal error: indirect.h: No such file or directory</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59439">Bug 59439</a> - glCopyPixels generates no fragments (occlusion_query_meta_fragments test fails)</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59440">Bug 59440</a> - glBitmap generates no fragments (occlusion_query_meta_fragments test fails)</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59494">Bug 59494</a> - [Bisected]Piglit glean_depthStencil fails</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59592">Bug 59592</a> - Radeon HD 5670: reproducable GPU lockups with htile enabled</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59648">Bug 59648</a> - [SNB/IVB/HSW Bisected]Piglit spec/ARB_uniform_buffer/object_layout-std140-base-size-and-alignment fails</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59701">Bug 59701</a> - lp_test_arit fails on non-sse41 capable machines, breaking make check</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59737">Bug 59737</a> - [bisected] 0d108116bd80b757fb01a84a9f1946ef870b57b8 breaks osmesa when cross compiling</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59740">Bug 59740</a> - [i965 Bisected]Oglc api-error(negative.glEvalMesh) fails</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59851">Bug 59851</a> - AC_ARG_WITH misusage leading to mesa configure failure</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59873">Bug 59873</a> - [swrast] piglit ext_framebuffer_multisample-interpolation 0 centroid-edges regression</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=59876">Bug 59876</a> - glGetTexLevelParameteriv broken for indirect rendering</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60038">Bug 60038</a> - [osmesa] [git] building 32-bit mesa on 64 bit fails</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60047">Bug 60047</a> - [softpipe] piglit masked-clear regression</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60052">Bug 60052</a> - [Bisected]Piglit glx_extension_string_sanity fail</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60082">Bug 60082</a> - [ FAILED ] DispatchSanity_test.GL31_CORE</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60086">Bug 60086</a> - Wayland platform backend crashes if there's no back buffer during dri2_swap_buffers</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60098">Bug 60098</a> - [softpipe] Unexpected PIPE_CAP 78 query</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60172">Bug 60172</a> - Planeshift: triangles where grass would be</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60200">Bug 60200</a> - radeon_bo with virtual address referencing mismatch</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60212">Bug 60212</a> - [Bisected] Weston black output</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60524">Bug 60524</a> - [softpipe] piglit depthstencil-render-miplevels 146 s=z24_s8 regression</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60527">Bug 60527</a> - [softpipe] fbo-stencil GL_DEPTH24_STENCIL8 clear regression</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60633">Bug 60633</a> - EXT_texture_sRGB does not work in game The Cave on IvyBridge</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60737">Bug 60737</a> - In GLSL ES, a missing FS precision qualifier does not generate an error</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60866">Bug 60866</a> - GLSL performance issues for uniform buffer objects</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=61036">Bug 61036</a> - Shader fails to build in LLVMpipe, aborts program</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=61200">Bug 61200</a> - insufficient linking of libxatracker.so</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=61635">Bug 61635</a> - glVertexAttribPointer(id, GL_UNSIGNED_BYTE, GL_FALSE,...) does not work</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62466">Bug 62466</a> - r600g hyperz lockups with KSP 0.19</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62669">Bug 62669</a> - HyperZ freeze when playing PrBoom-Plus demo with lots of monsters</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62721">Bug 62721</a> - GPU lockup in Minecraft 1.5.1 with HyperZ</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62830">Bug 62830</a> - [i965 bisected] Wrong Lightning on Freespace 2 SCP (patch attached)</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=63124">Bug 63124</a> - [r600g] HyperZ lockup on REDWOOD in Half Life 2 Deathmatch</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=63702">Bug 63702</a> - tiling2d in radeon trash vdpau UVD textures</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64935">Bug 64935</a> - [swrast] s_texfetch.c:1335: set_fetch_functions: Assertion `texImage->FetchTexel' failed.</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64959">Bug 64959</a> - Cannot build against EGL without X11</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=65112">Bug 65112</a> - glcpp hangs parsing line continuations</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=65958">Bug 65958</a> - GPU Lockup on Trinity 7500G</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66450">Bug 66450</a> - JUNIPER UVD accelerated playback of MPEG 1/2 streams does not work</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66606">Bug 66606</a> - [i965 bisected]GLBenchmark 2.5.1/2.7.0 sometimes render error with gnome-session enabling SNA</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66713">Bug 66713</a> - Team Fortress 2 crashes with r600-sb on HD4850</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67354">Bug 67354</a> - glsl_parser.cpp is broken with bison 3.0</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67548">Bug 67548</a> - glGetAttribLocation seems to be broken</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67927">Bug 67927</a> - R600_DEBUG=sb: Celestia show 2 earths, one wrongly rendered</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67934">Bug 67934</a> - [SNB/IVB/HSW 9.2 Bisected]Ogles2conform/GL2Tests/glUniform/glUniform.test fails with gnome-session enable compositing</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68162">Bug 68162</a> - [radeonsi] texture rendering is broken in Source-Engine games</li> + +<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68195">Bug 68195</a> - piglit tests vs-struct-pad and fs-struct-pad both fail</li> + +</ul> <h2>Changes</h2> diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index 192130a99..52059e4bf 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -3132,32 +3132,45 @@ ast_declarator_list::hir(exec_list *instructions, } - /* Precision qualifiers only apply to floating point and integer types. + /* Precision qualifiers apply to floating point, integer and sampler + * types. * - * From section 4.5.2 of the GLSL 1.30 spec: + * Section 4.5.2 (Precision Qualifiers) of the GLSL 1.30 spec says: * "Any floating point or any integer declaration can have the type * preceded by one of these precision qualifiers [...] Literal * constants do not have precision qualifiers. Neither do Boolean * variables. * - * In GLSL ES, sampler types are also allowed. + * Section 4.5 (Precision and Precision Qualifiers) of the GLSL 1.30 + * spec also says: * - * From page 87 of the GLSL ES spec: - * "RESOLUTION: Allow sampler types to take a precision qualifier." + * "Precision qualifiers are added for code portability with OpenGL + * ES, not for functionality. They have the same syntax as in OpenGL + * ES." + * + * Section 8 (Built-In Functions) of the GLSL ES 1.00 spec says: + * + * "uniform lowp sampler2D sampler; + * highp vec2 coord; + * ... + * lowp vec4 col = texture2D (sampler, coord); + * // texture2D returns lowp" + * + * From this, we infer that GLSL 1.30 (and later) should allow precision + * qualifiers on sampler types just like float and integer types. */ if (this->type->qualifier.precision != ast_precision_none && !var->type->is_float() && !var->type->is_integer() && !var->type->is_record() - && !(var->type->is_sampler() && state->es_shader) + && !var->type->is_sampler() && !(var->type->is_array() && (var->type->fields.array->is_float() || var->type->fields.array->is_integer()))) { _mesa_glsl_error(&loc, state, "precision qualifiers apply only to floating point" - "%s types", state->es_shader ? ", integer, and sampler" - : "and integer"); + ", integer and sampler types"); } /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: diff --git a/mesalib/src/glsl/ir.cpp b/mesalib/src/glsl/ir.cpp index 99dceacf8..c6d96d8da 100644 --- a/mesalib/src/glsl/ir.cpp +++ b/mesalib/src/glsl/ir.cpp @@ -515,6 +515,7 @@ static const char *const operator_strs[] = { "bfm", "ubo_load", "vector_extract", + "fma", "lrp", "bfi", "bitfield_extract", diff --git a/mesalib/src/glsl/ir.h b/mesalib/src/glsl/ir.h index 62e3b27ca..b45e6cbd8 100644 --- a/mesalib/src/glsl/ir.h +++ b/mesalib/src/glsl/ir.h @@ -1169,6 +1169,13 @@ enum ir_expression_operation { */ ir_last_binop = ir_binop_vector_extract, + /** + * \name Fused floating-point multiply-add, part of ARB_gpu_shader5. + */ + /*@{*/ + ir_triop_fma, + /*@}*/ + ir_triop_lrp, /** diff --git a/mesalib/src/glsl/ir_constant_expression.cpp b/mesalib/src/glsl/ir_constant_expression.cpp index 0a725b45b..bf019b955 100644 --- a/mesalib/src/glsl/ir_constant_expression.cpp +++ b/mesalib/src/glsl/ir_constant_expression.cpp @@ -1375,6 +1375,17 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) break; } + case ir_triop_fma: + assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); + assert(op[1]->type->base_type == GLSL_TYPE_FLOAT); + assert(op[2]->type->base_type == GLSL_TYPE_FLOAT); + + for (unsigned c = 0; c < components; c++) { + data.f[c] = op[0]->value.f[c] * op[1]->value.f[c] + + op[2]->value.f[c]; + } + break; + case ir_triop_lrp: { assert(op[0]->type->base_type == GLSL_TYPE_FLOAT); assert(op[1]->type->base_type == GLSL_TYPE_FLOAT); diff --git a/mesalib/src/glsl/ir_print_visitor.cpp b/mesalib/src/glsl/ir_print_visitor.cpp index 541231a33..b5183108d 100644 --- a/mesalib/src/glsl/ir_print_visitor.cpp +++ b/mesalib/src/glsl/ir_print_visitor.cpp @@ -406,7 +406,17 @@ void ir_print_visitor::visit(ir_constant *ir) switch (ir->type->base_type) { case GLSL_TYPE_UINT: printf("%u", ir->value.u[i]); break; case GLSL_TYPE_INT: printf("%d", ir->value.i[i]); break; - case GLSL_TYPE_FLOAT: printf("%f", ir->value.f[i]); break; + case GLSL_TYPE_FLOAT: + if (ir->value.f[i] == 0.0f) + /* 0.0 == -0.0, so print with %f to get the proper sign. */ + printf("%.1f", ir->value.f[i]); + else if (abs(ir->value.f[i]) < 0.000001f) + printf("%a", ir->value.f[i]); + else if (abs(ir->value.f[i]) > 1000000.0f) + printf("%e", ir->value.f[i]); + else + printf("%f", ir->value.f[i]); + break; case GLSL_TYPE_BOOL: printf("%d", ir->value.b[i]); break; default: assert(0); } diff --git a/mesalib/src/glsl/ir_validate.cpp b/mesalib/src/glsl/ir_validate.cpp index ce96f6855..37f26febe 100644 --- a/mesalib/src/glsl/ir_validate.cpp +++ b/mesalib/src/glsl/ir_validate.cpp @@ -522,6 +522,7 @@ ir_validate::visit_leave(ir_expression *ir) && ir->operands[1]->type->is_integer()); break; + case ir_triop_fma: case ir_triop_lrp: assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT); assert(ir->operands[0]->type == ir->operands[1]->type); diff --git a/mesalib/src/mesa/main/api_validate.c b/mesalib/src/mesa/main/api_validate.c index 243bb89d1..002992186 100644 --- a/mesalib/src/mesa/main/api_validate.c +++ b/mesalib/src/mesa/main/api_validate.c @@ -402,9 +402,8 @@ _mesa_validate_DrawElements(struct gl_context *ctx, return GL_FALSE; } - if (count <= 0) { - if (count < 0) - _mesa_error(ctx, GL_INVALID_VALUE, "glDrawElements(count)" ); + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDrawElements(count)" ); return GL_FALSE; } @@ -436,6 +435,9 @@ _mesa_validate_DrawElements(struct gl_context *ctx, if (!check_index_bounds(ctx, count, type, indices, basevertex)) return GL_FALSE; + if (count == 0) + return GL_FALSE; + return GL_TRUE; } @@ -456,10 +458,9 @@ _mesa_validate_MultiDrawElements(struct gl_context *ctx, FLUSH_CURRENT(ctx, 0); for (i = 0; i < primcount; i++) { - if (count[i] <= 0) { - if (count[i] < 0) - _mesa_error(ctx, GL_INVALID_VALUE, - "glMultiDrawElements(count)" ); + if (count[i] < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glMultiDrawElements(count)" ); return GL_FALSE; } } @@ -531,9 +532,8 @@ _mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, return GL_FALSE; } - if (count <= 0) { - if (count < 0) - _mesa_error(ctx, GL_INVALID_VALUE, "glDrawRangeElements(count)" ); + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDrawRangeElements(count)" ); return GL_FALSE; } @@ -570,6 +570,9 @@ _mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, if (!check_index_bounds(ctx, count, type, indices, basevertex)) return GL_FALSE; + if (count == 0) + return GL_FALSE; + return GL_TRUE; } @@ -587,9 +590,8 @@ _mesa_validate_DrawArrays(struct gl_context *ctx, = ctx->TransformFeedback.CurrentObject; FLUSH_CURRENT(ctx, 0); - if (count <= 0) { - if (count < 0) - _mesa_error(ctx, GL_INVALID_VALUE, "glDrawArrays(count)" ); + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDrawArrays(count)" ); return GL_FALSE; } @@ -628,6 +630,9 @@ _mesa_validate_DrawArrays(struct gl_context *ctx, xfb_obj->GlesRemainingPrims -= prim_count; } + if (count == 0) + return GL_FALSE; + return GL_TRUE; } @@ -640,10 +645,9 @@ _mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint fi = ctx->TransformFeedback.CurrentObject; FLUSH_CURRENT(ctx, 0); - if (count <= 0) { - if (count < 0) - _mesa_error(ctx, GL_INVALID_VALUE, - "glDrawArraysInstanced(count=%d)", count); + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glDrawArraysInstanced(count=%d)", count); return GL_FALSE; } @@ -696,6 +700,9 @@ _mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint fi xfb_obj->GlesRemainingPrims -= prim_count; } + if (count == 0) + return GL_FALSE; + return GL_TRUE; } @@ -721,10 +728,9 @@ _mesa_validate_DrawElementsInstanced(struct gl_context *ctx, return GL_FALSE; } - if (count <= 0) { - if (count < 0) - _mesa_error(ctx, GL_INVALID_VALUE, - "glDrawElementsInstanced(count=%d)", count); + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glDrawElementsInstanced(count=%d)", count); return GL_FALSE; } @@ -761,6 +767,9 @@ _mesa_validate_DrawElementsInstanced(struct gl_context *ctx, return GL_FALSE; } + if (count == 0) + return GL_FALSE; + if (!check_index_bounds(ctx, count, type, indices, basevertex)) return GL_FALSE; diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp index f612f41ba..340a4497f 100644 --- a/mesalib/src/mesa/program/ir_to_mesa.cpp +++ b/mesalib/src/mesa/program/ir_to_mesa.cpp @@ -1492,6 +1492,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) case ir_binop_vector_extract: case ir_binop_bfm: + case ir_triop_fma: case ir_triop_bfi: case ir_triop_bitfield_extract: case ir_triop_vector_insert: 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 4e29e4500..37779d4e5 100644 --- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -1972,6 +1972,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir) case ir_unop_find_msb: case ir_unop_find_lsb: case ir_binop_bfm: + case ir_triop_fma: case ir_triop_bfi: case ir_triop_bitfield_extract: case ir_quadop_bitfield_insert: diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c index bd05cd0c3..1670409d4 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_array.c +++ b/mesalib/src/mesa/vbo/vbo_exec_array.c @@ -1334,6 +1334,16 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode, } } + /* Draw primitives individually if one count is zero, so we can easily skip + * that primitive. + */ + for (i = 0; i < primcount; i++) { + if (count[i] == 0) { + fallback = GL_TRUE; + break; + } + } + /* If the index buffer isn't in a VBO, then treating the application's * subranges of the index buffer as one large index buffer may lead to * us reading unmapped memory. @@ -1370,6 +1380,8 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode, } else { /* render one prim at a time */ for (i = 0; i < primcount; i++) { + if (count[i] == 0) + continue; ib.count = count[i]; ib.type = type; ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj; diff --git a/xkbcomp/xkbscan.c b/xkbcomp/xkbscan.c index 144f315dd..237f52084 100644 --- a/xkbcomp/xkbscan.c +++ b/xkbcomp/xkbscan.c @@ -388,9 +388,9 @@ yyGetString(void) if (i < sizeof(scanBuf) - 1) scanBuf[i++] = ch; } + scanBuf[i] = '\0'; if (ch == '"') { - scanBuf[i++] = '\0'; scanStrLine = lineNum; return STRING; } @@ -401,7 +401,6 @@ static int yyGetKeyName(void) { int ch, i; - int last; i = 0; while (((ch = scanchar()) != EOF) && (ch != '>')) @@ -463,24 +462,15 @@ yyGetKeyName(void) else return ERROR_TOK; } - if (i < sizeof(scanBuf) - 1) scanBuf[i++] = ch; } - - if (i < sizeof(scanBuf) - i) - last = i; - else - last = sizeof(scanBuf) - 1; - - scanBuf[last] = '\0'; - + scanBuf[i] = '\0'; if ((ch == '>') && (i < 5)) { scanStrLine = lineNum; return KEYNAME; } - return ERROR_TOK; } diff --git a/xorg-server/Xi/grabdev.c b/xorg-server/Xi/grabdev.c index 443ef56c1..9c6c429ed 100644 --- a/xorg-server/Xi/grabdev.c +++ b/xorg-server/Xi/grabdev.c @@ -175,10 +175,7 @@ CreateMaskFromList(ClientPtr client, XEventClass * list, int count, int device; DeviceIntPtr tdev; - for (i = 0; i < EMASKSIZE; i++) { - mask[i].mask = 0; - mask[i].dev = NULL; - } + memset(mask, 0, EMASKSIZE * sizeof(struct tmask)); for (i = 0; i < count; i++, list++) { device = *list >> 8; diff --git a/xorg-server/Xi/xiallowev.c b/xorg-server/Xi/xiallowev.c index 62a0727b0..ebef23344 100644 --- a/xorg-server/Xi/xiallowev.c +++ b/xorg-server/Xi/xiallowev.c @@ -81,7 +81,7 @@ ProcXIAllowEvents(ClientPtr client) have_xi22 = TRUE; } else { - REQUEST_SIZE_MATCH(xXIAllowEventsReq); + REQUEST_AT_LEAST_SIZE(xXIAllowEventsReq); } ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess); diff --git a/xorg-server/dix/events.c b/xorg-server/dix/events.c index ed3138d07..086601a69 100644 --- a/xorg-server/dix/events.c +++ b/xorg-server/dix/events.c @@ -2105,6 +2105,7 @@ DeliverEventToInputClients(DeviceIntPtr dev, InputClients * inputclients, { int attempt; enum EventDeliveryState rc = EVENT_NOT_DELIVERED; + Bool have_device_button_grab_class_client = FALSE; for (; inputclients; inputclients = inputclients->next) { Mask mask; @@ -2124,13 +2125,21 @@ DeliverEventToInputClients(DeviceIntPtr dev, InputClients * inputclients, events, count, mask, filter, grab))) { if (attempt > 0) { - rc = EVENT_DELIVERED; - *client_return = client; - *mask_return = mask; - /* Success overrides non-success, so if we've been - * successful on one client, return that */ - } - else if (rc == EVENT_NOT_DELIVERED) + /* + * The order of clients is arbitrary therefore if one + * client belongs to DeviceButtonGrabClass make sure to + * catch it. + */ + if (!have_device_button_grab_class_client) { + rc = EVENT_DELIVERED; + *client_return = client; + *mask_return = mask; + /* Success overrides non-success, so if we've been + * successful on one client, return that */ + if (mask & DeviceButtonGrabMask) + have_device_button_grab_class_client = TRUE; + } + } else if (rc == EVENT_NOT_DELIVERED) rc = EVENT_REJECTED; } } @@ -4644,7 +4653,7 @@ DeviceEnterLeaveEvent(DeviceIntPtr mouse, filter = GetEventFilter(mouse, (xEvent *) event); - if (grab) { + if (grab && grab->type == XI2) { Mask mask; mask = xi2mask_isset(grab->xi2mask, mouse, type); diff --git a/xorg-server/include/inputstr.h b/xorg-server/include/inputstr.h index 2da72c1ec..dc36c5d8d 100644 --- a/xorg-server/include/inputstr.h +++ b/xorg-server/include/inputstr.h @@ -65,7 +65,7 @@ extern _X_EXPORT int CountBits(const uint8_t * mask, int len); #define SameClient(obj,client) \ (CLIENT_BITS((obj)->resource) == (client)->clientAsMask) -#define EMASKSIZE MAXDEVICES + 2 +#define EMASKSIZE (MAXDEVICES + 2) /* This is the last XI2 event supported by the server. If you add * events to the protocol, the server will not support these events until diff --git a/xorg-server/test/signal-logging.c b/xorg-server/test/signal-logging.c index f6bc85ce8..a03c5acbe 100644 --- a/xorg-server/test/signal-logging.c +++ b/xorg-server/test/signal-logging.c @@ -150,6 +150,7 @@ number_formatting(void) assert(check_float_format_test(float_tests[i])); } +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-security" static void logging_format(void) { @@ -378,7 +379,7 @@ static void logging_format(void) #undef read_log_msg } -#pragma GCC diagnostic pop "-Wformat-security" +#pragma GCC diagnostic pop /* "-Wformat-security" */ int main(int argc, char **argv) diff --git a/xorg-server/xkeyboard-config/symbols/ara b/xorg-server/xkeyboard-config/symbols/ara index c0d57ef42..1944b25ce 100644 --- a/xorg-server/xkeyboard-config/symbols/ara +++ b/xorg-server/xkeyboard-config/symbols/ara @@ -100,6 +100,27 @@ xkb_symbols "azerty" { }; partial alphanumeric_keys +xkb_symbols "digits_KP" { + name[Group1]= "Arabic (digits_KP)"; + + // use arabic script digits on KP + + key <KP7> { [ KP_Home, 0x1000667 ] }; // + key <KP8> { [ KP_Up, 0x1000668 ] }; // + key <KP9> { [ KP_Prior, 0x1000669 ] }; // + + key <KP4> { [ KP_Left, 0x1000664 ] }; // + key <KP5> { [ KP_Begin, 0x1000665 ] }; // + key <KP6> { [ KP_Right, 0x1000666 ] }; // + + key <KP1> { [ KP_End, 0x1000661 ] }; // + key <KP2> { [ KP_Down, 0x1000662 ] }; // + key <KP3> { [ KP_Next, 0x1000663 ] }; // + + key <KP0> { [ KP_Insert, 0x1000660 ] }; // +}; + +partial alphanumeric_keys xkb_symbols "digits" { include "ara(basic)" name[Group1]= "Arabic (digits)"; @@ -116,6 +137,8 @@ xkb_symbols "digits" { key <AE08> { [ 0x1000668, asterisk ] }; key <AE09> { [ 0x1000669, parenright ] }; key <AE10> { [ 0x1000660, parenleft ] }; + + include "ara(digits_KP)" }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/us b/xorg-server/xkeyboard-config/symbols/us index 31977e417..73673882d 100644 --- a/xorg-server/xkeyboard-config/symbols/us +++ b/xorg-server/xkeyboard-config/symbols/us @@ -129,6 +129,8 @@ xkb_symbols "intl" { key <AB10> { [ slash, question, questiondown, dead_hook ] }; key <BKSL> { [ backslash, bar, notsign, brokenbar ] }; + key <LSGT> { [ backslash, bar, backslash, bar ] }; + include "level3(ralt_switch)" }; @@ -183,6 +185,8 @@ xkb_symbols "alt-intl" { key <AB09> { [ period, greater, dead_abovedot, dead_circumflex ] }; key <AB10> { [ slash, question, dead_hook, dead_hook ] }; + key <LSGT> { [ backslash, bar, backslash, bar ] }; + include "level3(ralt_switch)" }; |