Skip to content
Commits on Source (38)
......@@ -27,3 +27,14 @@ bcd9224728dcb8d8fe4bcddc4bd9b2c36fcfe9dd
869e32593a9096b845dd6106f8f86e1c41fac968
a2c3c65a31de90fdb55f76f2894860dfbafe2043
bb0c5c487e63e88acbb792f092dd8f392bad8540
# This is reverted shortly after it was landed
4432a2d14d80081d062f7939a950d65ea3a16eed
# These aren't relevant for 19.2
1a05811936dd8d0c3a367c6f00629624ef39d537
911a8261419f48dcd756f78832fa5a5f4c5b8d93
# This was manuall backported
2afeed301010917c4eae55dcd2544f9d329df934
4b392ced2d744fccffe95490ff57e6b41033c266
mesa (19.2.6-1) unstable; urgency=medium
* New upstream release.
* create-gles-pc-files-with-old-glvnd.diff: Dropped, upstream.
-- Timo Aaltonen <tjaalton@debian.org> Fri, 29 Nov 2019 21:08:25 +0200
mesa (19.2.4-1) unstable; urgency=medium
* New upstream release. (Closes: #944880)
......
diff --git a/src/mapi/meson.build b/src/mapi/meson.build
index 2c79a04f1df2dbaf3851540ef0830ee884d18203..1a15f2c655c33c97f937d97e9b93ee315a5647c7 100644
--- a/src/mapi/meson.build
+++ b/src/mapi/meson.build
@@ -1,4 +1,4 @@
-# Copyright © 2017 Intel Corporation
+# Copyright © 2017-2019 Intel Corporation
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -35,11 +35,31 @@ if with_shared_glapi
else
libglapi = []
endif
-if not with_glvnd
- if with_gles1
+if with_gles1
+ if not with_glvnd
subdir('es1api')
+ elif not glvnd_has_headers_and_pc_files
+ pkg.generate(
+ name : 'glesv1_cm',
+ filebase : 'glesv1_cm',
+ description : 'Mesa OpenGL ES 1.1 CM library',
+ version : meson.project_version(),
+ libraries : '-L${libdir} -lGLESv1_CM',
+ libraries_private : gl_priv_libs,
+ )
endif
- if with_gles2
+endif
+if with_gles2
+ if not with_glvnd
subdir('es2api')
+ elif not glvnd_has_headers_and_pc_files
+ pkg.generate(
+ name : 'glesv2',
+ filebase : 'glesv2',
+ description : 'Mesa OpenGL ES 2.0 library',
+ version : meson.project_version(),
+ libraries : '-L${libdir} -lGLESv2',
+ libraries_private : gl_priv_libs,
+ )
endif
endif
07_gallium-fix-build-failure-on-powerpcspe.diff
create-gles-pc-files-with-old-glvnd.diff
......@@ -35,7 +35,7 @@ depends on the particular driver being used.
<h2>SHA256 checksum</h2>
<pre>
TBD.
09000a0f7dbbd82e193b81a8f1bf0c118eab7ca975c0329181968596e548e30f mesa-19.2.4.tar.xz
</pre>
......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Mesa Release Notes</title>
<link rel="stylesheet" type="text/css" href="../mesa.css">
</head>
<body>
<div class="header">
<h1>The Mesa 3D Graphics Library</h1>
</div>
<iframe src="../contents.html"></iframe>
<div class="content">
<h1>Mesa 19.2.5 Release Notes / 2019-11-20</h1>
<p>
Mesa 19.2.5 is a bug fix release which fixes bugs found since the 19.2.4 release.
</p>
<p>
Mesa 19.2.5 implements the OpenGL 4.5 API, but the version reported by
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
Some drivers don't support all the features required in OpenGL 4.5. OpenGL
4.5 is <strong>only</strong> available if requested at context creation.
Compatibility contexts may report a lower version depending on each driver.
</p>
<p>
Mesa 19.2.5 implements the Vulkan 1.1 API, but the version reported by
the apiVersion property of the VkPhysicalDeviceProperties struct
depends on the particular driver being used.
</p>
<h2>SHA256 checksum</h2>
<pre>
3d010a366b28d10bdd71e32091d8684baf1522e6466c5c5703667091b2108c8b mesa-19.2.5.tar.xz
</pre>
<h2>New features</h2>
<ul>
<li>None</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>HSW. Tropico 6 and SuperTuxKart have shadows flickering</li>
<li>glxgears segfaults on POWER / Xvnc</li>
<li>Cannot start Civ6 with AMD GPU on Linux</li>
</ul>
<h2>Changes</h2>
<ul>
<p>Ben Crocker (1):</p>
<li> llvmpipe: use ppc64le/ppc64 Large code model for JIT-compiled shaders</li>
<p></p>
<p>Brian Paul (1):</p>
<li> Call shmget() with permission 0600 instead of 0777</li>
<p></p>
<p>Caio Marcelo de Oliveira Filho (1):</p>
<li> spirv: Don&#x27;t leak GS initialization to other stages</li>
<p></p>
<p>Danylo Piliaiev (1):</p>
<li> i965: Unify CC_STATE and BLEND_STATE atoms on Haswell as a workaround</li>
<p></p>
<p>Dylan Baker (2):</p>
<li> docs: Add SHA256 sum for for 19.2.4</li>
<li> cherry-ignore: Update for 19.2.4 cycle</li>
<p></p>
<p>Eric Engestrom (1):</p>
<li> egl: fix _EGL_NATIVE_PLATFORM fallback</li>
<p></p>
<p>Ian Romanick (2):</p>
<li> nir/algebraic: Add the ability to mark a replacement as exact</li>
<li> nir/algebraic: Mark other comparison exact when removing a == a</li>
<p></p>
<p>Illia Iorin (1):</p>
<li> mesa/main: Ignore filter state for MS texture completeness</li>
<p></p>
<p>Jason Ekstrand (1):</p>
<li> anv: Stop bounds-checking pushed UBOs</li>
<p></p>
<p>Lepton Wu (1):</p>
<li> gallium: dri2: Use index as plane number.</li>
<p></p>
<p>Lionel Landwerlin (3):</p>
<li> anv: invalidate file descriptor of semaphore sync fd at vkQueueSubmit</li>
<li> anv: remove list items on batch fini</li>
<li> anv/wsi: signal the semaphore in the acquireNextImage</li>
<p></p>
<p>Marek Olšák (3):</p>
<li> st/mesa: fix Sanctuary and Tropics by disabling ARB_gpu_shader5 for them</li>
<li> tgsi_to_nir: fix masked out image loads</li>
<li> tgsi_to_nir: handle PIPE_FORMAT_NONE in image opcodes</li>
<p></p>
<p>Paulo Zanoni (1):</p>
<li> intel/compiler: fix nir_op_{i,u}*32 on ICL</li>
<p></p>
<p>Pierre-Eric Pelloux-Prayer (3):</p>
<li> radeonsi: disable sdma for gfx10</li>
<li> radeonsi: tell the shader disk cache what IR is used</li>
<li> radeonsi: fix shader disk cache key</li>
<p></p>
<p></p>
</ul>
</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Mesa Release Notes</title>
<link rel="stylesheet" type="text/css" href="../mesa.css">
</head>
<body>
<div class="header">
<h1>The Mesa 3D Graphics Library</h1>
</div>
<iframe src="../contents.html"></iframe>
<div class="content">
<h1>Mesa 19.2.6 Release Notes / 2019-11-21</h1>
<p>
Mesa 19.2.6 is a bug fix release which fixes bugs found since the 19.2.5 release.
</p>
<p>
Mesa 19.2.6 implements the OpenGL 4.5 API, but the version reported by
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
Some drivers don't support all the features required in OpenGL 4.5. OpenGL
4.5 is <strong>only</strong> available if requested at context creation.
Compatibility contexts may report a lower version depending on each driver.
</p>
<p>
Mesa 19.2.6 implements the Vulkan 1.1 API, but the version reported by
the apiVersion property of the VkPhysicalDeviceProperties struct
depends on the particular driver being used.
</p>
<h2>SHA256 checksum</h2>
<pre>
TBD.
</pre>
<h2>New features</h2>
<ul>
<li>None</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>glesv2.pc is not built since fafd20f67dec9f589</li>
<li>textureSize(samplerExternalOES, int) missing in desktop mesa 19.1.7 implementation</li>
<li>[19.2.5] lp_bld_misc: broken #if PIPE_ARCH_LITTLE_ENDIAN on ppc64l</li>
</ul>
<h2>Changes</h2>
<ul>
<p>Alejandro Piñeiro (1):</p>
<li> v3d: adds an extra MOV for any sig.ld*</li>
<p></p>
<p>Dave Airlie (1):</p>
<li> llvmpipe/ppc: fix if/ifdef confusion in backport.</li>
<p></p>
<p>Dylan Baker (2):</p>
<li> docs/relnotes/19.2.5: Add SHA256 sum</li>
<li> meson: generate .pc files for gles and gles2 with old glvnd</li>
<p></p>
<p>Eric Engestrom (1):</p>
<li> vulkan: delete typo&#x27;d header</li>
<p></p>
<p>Hyunjun Ko (1):</p>
<li> freedreno/ir3: fix printing output registers of FS.</li>
<p></p>
<p>Jose Maria Casanova Crespo (1):</p>
<li> v3d: Fix predication with atomic image operations</li>
<p></p>
<p>Yevhenii Kolesnikov (1):</p>
<li> glsl: Enable textureSize for samplerExternalOES</li>
<p></p>
<p></p>
</ul>
</div>
</body>
</html>
#ifndef VULKAN_XLIB_RANDR_H_
#define VULKAN_XLIB_RANDR_H_ 1
#ifdef __cplusplus
extern "C" {
#endif
/*
** Copyright (c) 2015-2017 The Khronos Group Inc.
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
/*
** This header is generated from the Khronos Vulkan XML API Registry.
**
*/
#define VK_EXT_acquire_xlib_display 1
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
VkPhysicalDevice physicalDevice,
Display* dpy,
VkDisplayKHR display);
VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT(
VkPhysicalDevice physicalDevice,
Display* dpy,
RROutput rrOutput,
VkDisplayKHR* pDisplay);
#endif
#ifdef __cplusplus
}
#endif
#endif
......@@ -406,6 +406,20 @@ ntq_init_ssa_def(struct v3d_compile *c, nir_ssa_def *def)
return qregs;
}
static bool
is_ld_signal(const struct v3d_qpu_sig *sig)
{
return (sig->ldunif ||
sig->ldunifa ||
sig->ldunifrf ||
sig->ldunifarf ||
sig->ldtmu ||
sig->ldvary ||
sig->ldvpm ||
sig->ldtlb ||
sig->ldtlbu);
}
/**
* This function is responsible for getting VIR results into the associated
* storage for a NIR instruction.
......@@ -453,11 +467,12 @@ ntq_store_dest(struct v3d_compile *c, nir_dest *dest, int chan,
_mesa_hash_table_search(c->def_ht, reg);
struct qreg *qregs = entry->data;
/* Insert a MOV if the source wasn't an SSA def in the
* previous instruction.
/* If the previous instruction can't be predicated for
* the store into the nir_register, then emit a MOV
* that can be.
*/
if ((vir_in_nonuniform_control_flow(c) &&
c->defs[last_inst->dst.index]->qpu.sig.ldunif)) {
if (vir_in_nonuniform_control_flow(c) &&
is_ld_signal(&c->defs[last_inst->dst.index]->qpu.sig)) {
result = vir_MOV(c, result);
last_inst = c->defs[result.index];
}
......
......@@ -388,9 +388,21 @@ v3d40_vir_emit_image_load_store(struct v3d_compile *c,
}
}
if (vir_in_nonuniform_control_flow(c) &&
instr->intrinsic != nir_intrinsic_image_deref_load) {
vir_set_pf(vir_MOV_dest(c, vir_nop_reg(), c->execute),
V3D_QPU_PF_PUSHZ);
}
vir_TMU_WRITE(c, V3D_QPU_WADDR_TMUSF, ntq_get_src(c, instr->src[1], 0),
&tmu_writes);
if (vir_in_nonuniform_control_flow(c) &&
instr->intrinsic != nir_intrinsic_image_deref_load) {
struct qinst *last_inst= (struct qinst *)c->cur_block->instructions.prev;
vir_set_cond(last_inst, V3D_QPU_COND_IFA);
}
vir_emit_thrsw(c);
/* The input FIFO has 16 slots across all threads, so make sure we
......
......@@ -2094,6 +2094,8 @@ builtin_builder::create_builtins()
_textureSize(texture_multisample_array, glsl_type::ivec3_type, glsl_type::sampler2DMSArray_type),
_textureSize(texture_multisample_array, glsl_type::ivec3_type, glsl_type::isampler2DMSArray_type),
_textureSize(texture_multisample_array, glsl_type::ivec3_type, glsl_type::usampler2DMSArray_type),
_textureSize(texture_external_es3, glsl_type::ivec2_type, glsl_type::samplerExternalOES_type),
NULL);
add_function("textureSize1D",
......
......@@ -200,7 +200,7 @@ class Value(object):
${val.cond if val.cond else 'NULL'},
${val.swizzle()},
% elif isinstance(val, Expression):
${'true' if val.inexact else 'false'},
${'true' if val.inexact else 'false'}, ${'true' if val.exact else 'false'},
${val.comm_expr_idx}, ${val.comm_exprs},
${val.c_opcode()},
{ ${', '.join(src.c_value_ptr(cache) for src in val.sources)} },
......@@ -348,7 +348,7 @@ class Variable(Value):
return '{' + ', '.join([str(swizzles[c]) for c in self.swiz[1:]]) + '}'
return '{0, 1, 2, 3}'
_opcode_re = re.compile(r"(?P<inexact>~)?(?P<opcode>\w+)(?:@(?P<bits>\d+))?"
_opcode_re = re.compile(r"(?P<inexact>~)?(?P<exact>!)?(?P<opcode>\w+)(?:@(?P<bits>\d+))?"
r"(?P<cond>\([^\)]+\))?")
class Expression(Value):
......@@ -362,8 +362,12 @@ class Expression(Value):
self.opcode = m.group('opcode')
self._bit_size = int(m.group('bits')) if m.group('bits') else None
self.inexact = m.group('inexact') is not None
self.exact = m.group('exact') is not None
self.cond = m.group('cond')
assert not self.inexact or not self.exact, \
'Expression cannot be both exact and inexact.'
# "many-comm-expr" isn't really a condition. It's notification to the
# generator that this pattern is known to have too many commutative
# expressions, and an error should not be generated for this case.
......
......@@ -69,6 +69,9 @@ e = 'e'
# expression this indicates that the constructed value should have that
# bit-size.
#
# If the opcode in a replacement expression is prefixed by a '!' character,
# this indicated that the new expression will be marked exact.
#
# A special condition "many-comm-expr" can be used with expressions to note
# that the expression and its subexpressions have more commutative expressions
# than nir_replace_instr can handle. If this special condition is needed with
......@@ -1327,8 +1330,8 @@ optimizations += [(bitfield_reverse('x@32'), ('bitfield_reverse', 'x'), '!option
# and, if a is a NaN then the second comparison will fail anyway.
for op in ['flt', 'fge', 'feq']:
optimizations += [
(('iand', ('feq', a, a), (op, a, b)), (op, a, b)),
(('iand', ('feq', a, a), (op, b, a)), (op, b, a)),
(('iand', ('feq', a, a), (op, a, b)), ('!' + op, a, b)),
(('iand', ('feq', a, a), (op, b, a)), ('!' + op, b, a)),
]
# Add optimizations to handle the case where the result of a ternary is
......
......@@ -472,7 +472,7 @@ construct_value(nir_builder *build,
* expression we are replacing has any exact values, the entire
* replacement should be exact.
*/
alu->exact = state->has_exact_alu;
alu->exact = state->has_exact_alu || expr->exact;
for (unsigned i = 0; i < nir_op_infos[op].num_inputs; i++) {
/* If the source is an explicitly sized source, then we need to reset
......
......@@ -138,6 +138,9 @@ typedef struct {
*/
bool inexact;
/** In a replacement, requests that the instruction be marked exact. */
bool exact;
/* Commutative expression index. This is assigned by opt_algebraic.py when
* search structures are constructed and is a unique (to this structure)
* index within the commutative operation bitfield used for searching for
......
......@@ -4647,6 +4647,7 @@ spirv_to_nir(const uint32_t *words, size_t word_count,
}
/* Set shader info defaults */
if (stage == MESA_SHADER_GEOMETRY)
b->shader->info.gs.invocations = 1;
b->specializations = spec;
......
......@@ -135,15 +135,6 @@ _eglNativePlatformDetectNativeDisplay(void *nativeDisplay)
if (first_pointer == gbm_create_device)
return _EGL_PLATFORM_DRM;
#endif
#ifdef HAVE_X11_PLATFORM
/* If not matched to any other platform, fallback to x11. */
return _EGL_PLATFORM_X11;
#endif
#ifdef HAVE_HAIKU_PLATFORM
return _EGL_PLATFORM_HAIKU;
#endif
}
return _EGL_INVALID_PLATFORM;
......
......@@ -405,8 +405,9 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
fprintf(out, "; %s: outputs:", type);
for (i = 0; i < so->outputs_count; i++) {
uint8_t regid = so->outputs[i].regid;
fprintf(out, " r%d.%c (%s)",
(regid >> 2), "xyzw"[regid & 0x3],
const char *reg_type = so->outputs[i].half ? "hr" : "r";
fprintf(out, " %s%d.%c (%s)",
reg_type, (regid >> 2), "xyzw"[regid & 0x3],
output_name(so, i));
}
fprintf(out, "\n");
......
......@@ -692,7 +692,20 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
* when not using MCJIT so no instructions are generated which the old JIT
* can't handle. Not entirely sure if we really need to do anything yet.
*/
#if defined(PIPE_ARCH_LITTLE_ENDIAN) && defined(PIPE_ARCH_PPC_64)
#ifdef PIPE_ARCH_PPC_64
/*
* Large programs, e.g. gnome-shell and firefox, may tax the addressability
* of the Medium code model once dynamically generated JIT-compiled shader
* programs are linked in and relocated. Yet the default code model as of
* LLVM 8 is Medium or even Small.
* The cost of changing from Medium to Large is negligible:
* - an additional 8-byte pointer stored immediately before the shader entrypoint;
* - change an add-immediate (addis) instruction to a load (ld).
*/
builder.setCodeModel(CodeModel::Large);
#ifdef PIPE_ARCH_LITTLE_ENDIAN
/*
* Versions of LLVM prior to 4.0 lacked a table entry for "POWER8NVL",
* resulting in (big-endian) "generic" being returned on
......@@ -704,6 +717,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
*/
if (MCPU == "generic")
MCPU = "pwr8";
#endif
#endif
builder.setMCPU(MCPU);
if (gallivm_debug & (GALLIVM_DEBUG_IR | GALLIVM_DEBUG_ASM | GALLIVM_DEBUG_DUMP_BC)) {
......