Skip to content
Commits on Source (46)
# fixes: The following commits do not apply cleanly on 19.1 branch, as they
# depend on other commits not present in the branch.
20b00e1ff24f974bc99e7ca9a720518da0ce5b89 panfrost: Make ctx->job useful
f6c44549ee2dd0f218deea1feba3965523609406 iris: Replace devinfo->gen with GEN_GEN
1cd13ccee7bc2733e7a56284dc02bdb1b1c40081 iris: Update fast clear colors on Gen9 with direct immediate writes.
# fixes: The following commit depends on commits 77a1070d366a and df4c2ec5e19b
# in order to compile, which did not land in the branch.
2d799250346331a93b21678dc5605cff74dfa3a1 iris: Avoid unnecessary resolves on transfer maps
# stable: Explicit 19.2 only nominations.
e73d863a66caac796ed5fb543a77f0b892df8573 radv: allow to enable VK_AMD_shader_ballot only on GFX8+
f202ac27a99caf9009aa9d60e2e0d7f3b528e99f radv: add a new debug option called RADV_DEBUG=noshaderballot
a6ad9e8ccf970a0da68508eb2ce26b316045b9f0 radv: force enable VK_AMD_shader_ballot for Wolfenstein Youngblood
0813c27d8d4a7e9372a8a86d970b598fc4e3bfd1 radv/gfx10: don't initialize VGT_INSTANCE_STEP_RATE_0
a4e6e59db82e61b47ef905f28dde80ae36a67d35 radv/gfx10: do not use NGG with NAVI14
fe0ec41c4d36fd5a82e7579d89e34cce7423c4e5 radv: Change memory type order for GPUs without dedicated VRAM
mesa (19.1.6-1) unstable; urgency=medium
* New upstream release.
-- Timo Aaltonen <tjaalton@debian.org> Wed, 04 Sep 2019 15:43:36 +0300
mesa (19.1.4-1) unstable; urgency=medium
* New upstream release. (Closes: #933753, #933906)
......
......@@ -30,7 +30,7 @@ Compatibility contexts may report a lower version depending on each driver.
<h2>SHA256 checksums</h2>
<pre>
TBD
a6d268a7d9edcfd92b6da80f2e34e6e0a7baaa442efbeba2fc66c404943c6bfb mesa-19.1.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.1.5 Release Notes / August 23, 2019</h1>
<p>
Mesa 19.1.5 is a bug fix release which fixes bugs found since the 19.1.4 release.
</p>
<p>
Mesa 19.1.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>
<h2>SHA256 checksums</h2>
<pre>
7b54e14e35c7251b171b4cf9d84cbc1d760eafe00132117db193454999cd6eb4 mesa-19.1.5.tar.xz
</pre>
<h2>New features</h2>
<p>None</p>
<h2>Bug fixes</h2>
<ul>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=109630">Bug 109630</a> - vkQuake flickering geometry under Intel</li>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=110395">Bug 110395</a> - Shadows are flickering in SuperTuxKart</li>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=111113">Bug 111113</a> - ANGLE BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL fails on Intel Ubuntu19.04</li>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=111267">Bug 111267</a> - [CM246] Flickering with multiple draw calls within the same graphics pipeline if a compute pipeline is present</li>
</ul>
<h2>Changes</h2>
<p>Bas Nieuwenhuizen (4):</p>
<ul>
<li>radv: Do non-uniform lowering before bool lowering.</li>
<li>ac/nir: Use correct cast for readfirstlane and ptrs.</li>
<li>radv: Avoid binning RAVEN hangs.</li>
<li>radv: Avoid VEGA/RAVEN scissor bug in binning.</li>
</ul>
<p>Danylo Piliaiev (1):</p>
<ul>
<li>i965: Emit a dummy MEDIA_VFE_STATE before switching from GPGPU to 3D</li>
</ul>
<p>Eric Engestrom (1):</p>
<ul>
<li>util: fix mem leak of program path</li>
</ul>
<p>Erik Faye-Lund (2):</p>
<ul>
<li>gallium/dump: add missing query-type to short-list</li>
<li>gallium/dump: add missing query-type to short-list</li>
</ul>
<p>Greg V (2):</p>
<ul>
<li>anv: remove unused Linux-specific include</li>
<li>intel/perf: use MAJOR_IN_SYSMACROS/MAJOR_IN_MKDEV</li>
</ul>
<p>Jason Ekstrand (1):</p>
<ul>
<li>anv: Emit a dummy MEDIA_VFE_STATE before switching from GPGPU to 3D</li>
</ul>
<p>Juan A. Suarez Romero (3):</p>
<ul>
<li>docs: add sha256 checksums for 19.1.4</li>
<li>cherry-ignore: panfrost: Make ctx-&gt;job useful</li>
<li>Update version to 19.1.5</li>
</ul>
<p>Marek Olšák (2):</p>
<ul>
<li>radeonsi: disable SDMA image copies on dGPUs to fix corruption in games</li>
<li>radeonsi: fix an assertion failure: assert(!res-&gt;b.is_shared)</li>
</ul>
<p>Matt Turner (1):</p>
<ul>
<li>meson: Test for program_invocation_name</li>
</ul>
<p>Sergii Romantsov (1):</p>
<ul>
<li>i965/clear: clear_value better precision</li>
</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.1.6 Release Notes / September 3, 2019</h1>
<p>
Mesa 19.1.6 is a bug fix release which fixes bugs found since the 19.1.5 release.
</p>
<p>
Mesa 19.1.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>
<h2>SHA256 checksums</h2>
<pre>
TBD
</pre>
<h2>New features</h2>
<p>None</p>
<h2>Bug fixes</h2>
<ul>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=104395">Bug 104395</a> - [CTS] GTF-GL46.gtf32.GL3Tests.packed_pixels.packed_pixels tests fail on 32bit Mesa</li>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=111213">Bug 111213</a> - VA-API nouveau SIGSEGV and asserts</li>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=111241">Bug 111241</a> - Shadertoy shader causing hang</li>
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=111411">Bug 111411</a> - SPIR-V shader leads to GPU hang, sometimes making machine unstable</li>
</ul>
<h2>Changes</h2>
<p>Andres Rodriguez (1):</p>
<ul>
<li>radv: additional query fixes</li>
</ul>
<p>Daniel Schürmann (1):</p>
<ul>
<li>nir/lcssa: handle deref instructions properly</li>
</ul>
<p>Danylo Piliaiev (1):</p>
<ul>
<li>nir/loop_unroll: Prepare loop for unrolling in wrapper_unroll</li>
</ul>
<p>Ian Romanick (2):</p>
<ul>
<li>nir/algrbraic: Don't optimize open-coded bitfield reverse when lowering is enabled</li>
<li>intel/compiler: Request bitfield_reverse lowering on pre-Gen7 hardware</li>
</ul>
<p>Ilia Mirkin (1):</p>
<ul>
<li>gallium/vl: use compute preference for all multimedia, not just blit</li>
</ul>
<p>Jonas Ådahl (1):</p>
<ul>
<li>wayland/egl: Ensure correct buffer size when allocating</li>
</ul>
<p>Juan A. Suarez Romero (6):</p>
<ul>
<li>docs: add sha256 checksums for 19.1.5</li>
<li>cherry-ignore: add explicit 19.2 only nominations</li>
<li>cherry-ignore: iris: Replace devinfo-&gt;gen with GEN_GEN</li>
<li>cherry-ignore: iris: Update fast clear colors on Gen9 with direct immediate writes.</li>
<li>cherry-ignore: iris: Avoid unnecessary resolves on transfer maps</li>
<li>Update version to 19.1.6</li>
</ul>
<p>Kenneth Graunke (6):</p>
<ul>
<li>iris: Fix broken aux.possible/sampler_usages bitmask handling</li>
<li>iris: Drop copy format hacks from copy region based transfer path.</li>
<li>iris: Fix large timeout handling in rel2abs()</li>
<li>util: Add a _mesa_i64roundevenf() helper.</li>
<li>mesa: Fix _mesa_float_to_unorm() on 32-bit systems.</li>
<li>intel/compiler: Fix src0/desc setter ordering</li>
</ul>
<p>Marek Olšák (1):</p>
<ul>
<li>radeonsi: fix scratch buffer WAVESIZE setting leading to corruption</li>
</ul>
<p>Paulo Zanoni (1):</p>
<ul>
<li>intel/fs: grab fail_msg from v32 instead of v16 when v32-&gt;run_cs fails</li>
</ul>
<p>Pierre-Eric Pelloux-Prayer (1):</p>
<ul>
<li>glsl: replace 'x + (-x)' with constant 0</li>
</ul>
<p>Tapani Pälli (1):</p>
<ul>
<li>egl: reset blob cache set/get functions on terminate</li>
</ul>
</div>
</body>
</html>
......@@ -1061,6 +1061,13 @@ foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get', 'memfd_crea
endif
endforeach
if cc.has_header_symbol('errno.h', 'program_invocation_name',
args : '-D_GNU_SOURCE')
pre_args += '-DHAVE_PROGRAM_INVOCATION_NAME'
elif with_tools.contains('intel')
error('Intel tools require the program_invocation_name variable')
endif
# strtod locale support
if cc.links('''
#define _GNU_SOURCE
......
......@@ -3438,6 +3438,8 @@ ac_build_readlane(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef la
LLVMConstInt(ctx->i32, i, 0), "");
}
}
if (LLVMGetTypeKind(src_type) == LLVMPointerTypeKind)
return LLVMBuildIntToPtr(ctx->builder, ret, src_type, "");
return LLVMBuildBitCast(ctx->builder, ret, src_type, "");
}
......
......@@ -2182,12 +2182,12 @@ void radv_create_shaders(struct radv_pipeline *pipeline,
for (int i = 0; i < MESA_SHADER_STAGES; ++i) {
if (nir[i]) {
NIR_PASS_V(nir[i], nir_lower_bool_to_int32);
NIR_PASS_V(nir[i], nir_lower_non_uniform_access,
nir_lower_non_uniform_ubo_access |
nir_lower_non_uniform_ssbo_access |
nir_lower_non_uniform_texture_access |
nir_lower_non_uniform_image_access);
NIR_PASS_V(nir[i], nir_lower_bool_to_int32);
}
if (radv_can_dump_shader(device, modules[i], false))
......@@ -2673,8 +2673,10 @@ radv_pipeline_generate_binning_state(struct radeon_cmdbuf *ctx_cs,
break;
case CHIP_RAVEN:
case CHIP_RAVEN2:
context_states_per_bin = 6;
persistent_states_per_bin = 32;
/* The context states are affected by the scissor bug. */
context_states_per_bin = pipeline->device->physical_device->has_scissor_bug ? 1 : 6;
/* 32 causes hangs for RAVEN. */
persistent_states_per_bin = 16;
fpovs_per_batch = 63;
break;
default:
......
......@@ -1129,15 +1129,16 @@ VkResult radv_GetQueryPoolResults(
if (flags & VK_QUERY_RESULT_WAIT_BIT)
while(!*(volatile uint32_t*)(pool->ptr + pool->availability_offset + 4 * query))
;
available = *(uint32_t*)(pool->ptr + pool->availability_offset + 4 * query);
available = *(volatile uint32_t*)(pool->ptr + pool->availability_offset + 4 * query);
}
switch (pool->type) {
case VK_QUERY_TYPE_TIMESTAMP: {
available = *(uint64_t *)src != TIMESTAMP_NOT_READY;
volatile uint64_t const *src64 = (volatile uint64_t const *)src;
available = *src64 != TIMESTAMP_NOT_READY;
if (flags & VK_QUERY_RESULT_WAIT_BIT) {
while (*(volatile uint64_t *)src == TIMESTAMP_NOT_READY)
while (*src64 == TIMESTAMP_NOT_READY)
;
available = true;
}
......@@ -1147,11 +1148,11 @@ VkResult radv_GetQueryPoolResults(
if (flags & VK_QUERY_RESULT_64_BIT) {
if (available || (flags & VK_QUERY_RESULT_PARTIAL_BIT))
*(uint64_t*)dest = *(uint64_t*)src;
*(uint64_t*)dest = *src64;
dest += 8;
} else {
if (available || (flags & VK_QUERY_RESULT_PARTIAL_BIT))
*(uint32_t*)dest = *(uint32_t*)src;
*(uint32_t*)dest = *(volatile uint32_t*)src;
dest += 4;
}
break;
......@@ -1199,8 +1200,8 @@ VkResult radv_GetQueryPoolResults(
if (!available && !(flags & VK_QUERY_RESULT_PARTIAL_BIT))
result = VK_NOT_READY;
const uint64_t *start = (uint64_t*)src;
const uint64_t *stop = (uint64_t*)(src + pipelinestat_block_size);
const volatile uint64_t *start = (uint64_t*)src;
const volatile uint64_t *stop = (uint64_t*)(src + pipelinestat_block_size);
if (flags & VK_QUERY_RESULT_64_BIT) {
uint64_t *dst = (uint64_t*)dest;
dest += util_bitcount(pool->pipeline_stats_mask) * 8;
......
......@@ -507,6 +507,18 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
if (is_vec_zero(op_const[1]))
return ir->operands[0];
/* Replace (x + (-x)) with constant 0 */
for (int i = 0; i < 2; i++) {
if (op_expr[i]) {
if (op_expr[i]->operation == ir_unop_neg) {
ir_rvalue *other = ir->operands[(i + 1) % 2];
if (other && op_expr[i]->operands[0]->equals(other)) {
return ir_constant::zero(ir, ir->type);
}
}
}
}
/* Reassociate addition of constants so that we can do constant
* folding.
*/
......
......@@ -124,17 +124,15 @@ nir_deref_instr_has_indirect(nir_deref_instr *instr)
unsigned
nir_deref_instr_ptr_as_array_stride(nir_deref_instr *deref)
{
assert(deref->deref_type == nir_deref_type_ptr_as_array);
nir_deref_instr *parent = nir_deref_instr_parent(deref);
switch (parent->deref_type) {
switch (deref->deref_type) {
case nir_deref_type_array:
return glsl_get_explicit_stride(nir_deref_instr_parent(parent)->type);
return glsl_get_explicit_stride(nir_deref_instr_parent(deref)->type);
case nir_deref_type_ptr_as_array:
return nir_deref_instr_ptr_as_array_stride(parent);
return nir_deref_instr_ptr_as_array_stride(nir_deref_instr_parent(deref));
case nir_deref_type_cast:
return parent->cast.ptr_stride;
return deref->cast.ptr_stride;
default:
unreachable("Invalid parent for ptr_as_array deref");
return 0;
}
}
......
......@@ -985,7 +985,7 @@ def bitfield_reverse(u):
return step5
optimizations += [(bitfield_reverse('x@32'), ('bitfield_reverse', 'x'))]
optimizations += [(bitfield_reverse('x@32'), ('bitfield_reverse', 'x'), '!options->lower_bitfield_reverse')]
# For any float comparison operation, "cmp", if you have "a == a && a cmp b"
# then the "a == a" is redundant because it's equivalent to "a is not NaN"
......
......@@ -560,31 +560,7 @@ wrapper_unroll(nir_loop *loop)
nir_after_block(nir_if_last_else_block(terminator->nif));
}
} else {
nir_block *blk_after_loop =
nir_cursor_current_block(nir_after_cf_node(&loop->cf_node));
/* There may still be some single src phis following the loop that
* have not yet been cleaned up by another pass. Tidy those up
* before unrolling the loop.
*/
nir_foreach_instr_safe(instr, blk_after_loop) {
if (instr->type != nir_instr_type_phi)
break;
nir_phi_instr *phi = nir_instr_as_phi(instr);
assert(exec_list_length(&phi->srcs) == 1);
nir_phi_src *phi_src =
exec_node_data(nir_phi_src, exec_list_get_head(&phi->srcs), node);
nir_ssa_def_rewrite_uses(&phi->dest.ssa, phi_src->src);
nir_instr_remove(instr);
}
/* Remove break at end of the loop */
nir_block *last_loop_blk = nir_loop_last_block(loop);
nir_instr *break_instr = nir_block_last_instr(last_loop_blk);
nir_instr_remove(break_instr);
loop_prepare_for_unroll(loop);
}
/* Pluck out the loop body. */
......
......@@ -111,9 +111,6 @@ convert_loop_exit_for_ssa(nir_ssa_def *def, void *void_state)
if (all_uses_inside_loop)
return true;
/* We don't want derefs ending up in phi sources */
assert(def->parent_instr->type != nir_instr_type_deref);
/* Initialize a phi-instruction */
nir_phi_instr *phi = nir_phi_instr_create(state->shader);
nir_ssa_dest_init(&phi->instr, &phi->dest,
......@@ -131,6 +128,25 @@ convert_loop_exit_for_ssa(nir_ssa_def *def, void *void_state)
}
nir_instr_insert_before_block(block_after_loop, &phi->instr);
nir_ssa_def *dest = &phi->dest.ssa;
/* deref instructions need a cast after the phi */
if (def->parent_instr->type == nir_instr_type_deref) {
nir_deref_instr *cast =
nir_deref_instr_create(state->shader, nir_deref_type_cast);
nir_deref_instr *instr = nir_instr_as_deref(def->parent_instr);
cast->mode = instr->mode;
cast->type = instr->type;
cast->parent = nir_src_for_ssa(&phi->dest.ssa);
cast->cast.ptr_stride = nir_deref_instr_ptr_as_array_stride(instr);
nir_ssa_dest_init(&cast->instr, &cast->dest,
phi->dest.ssa.num_components,
phi->dest.ssa.bit_size, NULL);
nir_instr_insert(nir_after_phis(block_after_loop), &cast->instr);
dest = &cast->dest.ssa;
}
/* Run through all uses and rewrite those outside the loop to point to
* the phi instead of pointing to the ssa-def.
......@@ -142,15 +158,13 @@ convert_loop_exit_for_ssa(nir_ssa_def *def, void *void_state)
}
if (!is_use_inside_loop(use, state->loop)) {
nir_instr_rewrite_src(use->parent_instr, use,
nir_src_for_ssa(&phi->dest.ssa));
nir_instr_rewrite_src(use->parent_instr, use, nir_src_for_ssa(dest));
}
}
nir_foreach_if_use_safe(use, def) {
if (!is_if_use_inside_loop(use, state->loop)) {
nir_if_rewrite_condition(use->parent_if,
nir_src_for_ssa(&phi->dest.ssa));
nir_if_rewrite_condition(use->parent_if, nir_src_for_ssa(dest));
}
}
......
......@@ -663,6 +663,15 @@ update_buffers(struct dri2_egl_surface *dri2_surf)
return 0;
}
static int
update_buffers_if_needed(struct dri2_egl_surface *dri2_surf)
{
if (dri2_surf->back != NULL)
return 0;
return update_buffers(dri2_surf);
}
static __DRIbuffer *
dri2_wl_get_buffers_with_format(__DRIdrawable * driDrawable,
int *width, int *height,
......@@ -980,7 +989,7 @@ dri2_wl_swap_buffers_with_damage(_EGLDriver *drv,
/* Make sure we have a back buffer in case we're swapping without ever
* rendering. */
if (get_back_bo(dri2_surf) < 0)
if (update_buffers_if_needed(dri2_surf) < 0)
return _eglError(EGL_BAD_ALLOC, "dri2_swap_buffers");
if (draw->SwapInterval > 0) {
......@@ -1066,7 +1075,7 @@ dri2_wl_query_buffer_age(_EGLDriver *drv,
{
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surface);
if (get_back_bo(dri2_surf) < 0) {
if (update_buffers_if_needed(dri2_surf) < 0) {
_eglError(EGL_BAD_ALLOC, "dri2_query_buffer_age");
return -1;
}
......
......@@ -674,6 +674,10 @@ eglTerminate(EGLDisplay dpy)
/* do not reset disp->Driver */
disp->ClientAPIsString[0] = 0;
disp->Initialized = EGL_FALSE;
/* Reset blob cache funcs on terminate. */
disp->BlobCacheSet = NULL;
disp->BlobCacheGet = NULL;
}
RETURN_EGL_SUCCESS(disp, EGL_TRUE);
......
......@@ -418,6 +418,7 @@ static const char *
util_query_type_short_names[] = {
"occlusion_counter",
"occlusion_predicate",
"occlusion_predicate_conservative",
"timestamp",
"timestamp_disjoint",
"time_elapsed",
......@@ -425,6 +426,7 @@ util_query_type_short_names[] = {
"primitives_emitted",
"so_statistics",
"so_overflow_predicate",
"so_overflow_any_predicate",
"gpu_finished",
"pipeline_statistics",
};
......
......@@ -326,7 +326,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
case PIPE_CAP_TGSI_ATOMFADD:
case PIPE_CAP_TGSI_SKIP_SHRINK_IO_ARRAYS:
case PIPE_CAP_IMAGE_LOAD_FORMATTED:
case PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA:
case PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA:
return 0;
case PIPE_CAP_MAX_GS_INVOCATIONS:
......
......@@ -757,7 +757,7 @@ vl_compositor_init(struct vl_compositor *c, struct pipe_context *pipe)
memset(c, 0, sizeof(*c));
c->pipe_cs_composit_supported = pipe->screen->get_param(pipe->screen, PIPE_CAP_COMPUTE) &&
c->pipe_cs_composit_supported = pipe->screen->get_param(pipe->screen, PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA) &&
pipe->screen->get_param(pipe->screen, PIPE_CAP_TGSI_TEX_TXF_LZ) &&
pipe->screen->get_param(pipe->screen, PIPE_CAP_TGSI_DIV);
......