Compare commits
29 Commits
mesa-17.1.
...
mesa-17.1.
Author | SHA1 | Date | |
---|---|---|---|
|
aef6ffabf9 | ||
|
ab57f92ad0 | ||
|
5bc4e65532 | ||
|
7cbc780d9a | ||
|
69f86c43cf | ||
|
a5b82d2691 | ||
|
066969aa35 | ||
|
ba3f439505 | ||
|
80dcb7d4fd | ||
|
eb5eb5b26d | ||
|
864a8113e5 | ||
|
ded9b0a168 | ||
|
d3300c42b2 | ||
|
e529fd4e11 | ||
|
a1bdc43dd2 | ||
|
f4266d73b5 | ||
|
018e602dc6 | ||
|
82061efd48 | ||
|
5b4678c3bc | ||
|
618c883b8e | ||
|
52e70819b4 | ||
|
edbb6d405c | ||
|
47b22fdf7f | ||
|
72a90be2c8 | ||
|
ba87ab0543 | ||
|
371d75334c | ||
|
70f7f60f0c | ||
|
c62dc8e61e | ||
|
44e008e85e |
@@ -194,7 +194,45 @@ f24cf82d6db290a88abfff0669d2c5e2aa463901 i965/tex: Don't pass samples to miptree
|
||||
# which did not land in branch.
|
||||
54c41af0aa92333579a72830254ac3aaa9f4aea1 i965: Make a BRW_NEW_FAST_CLEAR_COLOR dirty bit.
|
||||
|
||||
# fixes: Depend on earlier commit 04a40f7d2a that did not land in
|
||||
# fixes: Depends on earlier commit 04a40f7d2a that did not land in
|
||||
# branch and which exposes new API.
|
||||
3a5e3aa5a53cff55a5e31766d713a41ffa5a93d7 egl/drm: Fix misused x and y offsets in swrast_put_image2()
|
||||
fe2a6281b3b299998fe7399e7dbcc2077d773824 egl/drm: Fix misused x and y offsets in swrast_get_image()
|
||||
|
||||
# stable: 17.2 nomination only.
|
||||
0ac78dc92582a59d4319ebce019b4caa41fb432d util: move string_to_uint_map to glsl
|
||||
|
||||
# stable: 17.2 nomination only.
|
||||
88cdf16871a0f1cd8ec3844072051ee38e945600 llvmpipe: initialize llvmpipe->dirty with LP_NEW_SCISSOR
|
||||
|
||||
# stable: 17.2 nomination only.
|
||||
dc9e08b0c3b04ba77ed59b8700e9f43edccb3168 freedreno: skip batch-cache for compute shaders
|
||||
|
||||
# stable: 17.2 nomination only.
|
||||
d118ff876559e468d2d243470947eee53171fe57 radv: disable 1d/2d linear optimisation on gfx9.
|
||||
|
||||
# stable: 17.2 nomination only.
|
||||
6d929d3f85604768971d04fa2548f02ffca1696e radv/gfx9: set descriptor up for base_mip to level range.
|
||||
|
||||
# stable: 17.2 nomination only.
|
||||
e38685cc62e2a452521c49a3ad09d82495c6b1d0 Revert "radv: disable support for VEGA for now."
|
||||
|
||||
# stable: 17.2 nomination only. Depends on earlier commit 43ef75b394f
|
||||
# which did not land in branch.
|
||||
63e79a8a777b36ecb30a1f6900e6b638cb32fc5f nir: Fix system_value_from_intrinsic for subgroups
|
||||
|
||||
# stable: 17.2 nomination only. Depends on earlier commit f37ede40bad
|
||||
# which did not land in branch.
|
||||
52b65dfda84e4d433a332dd84596eef054eb5cbb i965: Fix crash in fallback GTT mapping.
|
||||
|
||||
# stable: 17.2 nomination only. Depends on earlier commit 5b62eb237c52
|
||||
# which did not land in branch.
|
||||
34124e412f00432ba8b3b8d16e3f2168aa596622 radeonsi/gfx9: always flush DB metadata on framebuffer changes
|
||||
|
||||
# fixes: Depends on earlier commit 78bef01da2b that did not land in
|
||||
# branch.
|
||||
ff23e03d60d264a64fce340c132404c6070050a0 radv: Fix vkCopyImage with both depth and stencil aspects.
|
||||
|
||||
# fixes: References 166823bf but it is not really a bug fix, just an
|
||||
# enhancement.
|
||||
45c5c444518b7e83d9accd9f44702fa49282a3b8 radeonsi/gfx9: proper workaround for LS/HS VGPR initialization bug
|
||||
|
21
configure.ac
21
configure.ac
@@ -793,6 +793,27 @@ AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
|
||||
AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
|
||||
AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
|
||||
|
||||
AC_MSG_CHECKING([whether strtod has locale support])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
#define _GNU_SOURCE
|
||||
#include <stdlib.h>
|
||||
#include <locale.h>
|
||||
#ifdef HAVE_XLOCALE_H
|
||||
#include <xlocale.h>
|
||||
#endif
|
||||
int main() {
|
||||
locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
|
||||
const char *s = "1.0";
|
||||
char *end;
|
||||
double d = strtod_l(s, end, loc);
|
||||
float f = strtof_l(s, end, loc);
|
||||
freelocale(loc);
|
||||
return 0;
|
||||
}]])],
|
||||
[DEFINES="$DEFINES -DHAVE_STRTOD_L"];
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_RESULT([no]))
|
||||
|
||||
dnl Check to see if dlopen is in default libraries (like Solaris, which
|
||||
dnl has it in libc), or if libdl is needed to get it.
|
||||
AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
|
||||
|
@@ -31,7 +31,8 @@ because compatibility contexts are not supported.
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
TBD
|
||||
faa59a677e88fd5224cdfebcdb6ca9ad3e3c64bd562baa8d5c3c1faeef1066b6 mesa-17.1.8.tar.gz
|
||||
75ed2eaeae26ddd536150f294386468ae2e1a7717948c41cd14b7875be5269db mesa-17.1.8.tar.xz
|
||||
</pre>
|
||||
|
||||
|
||||
|
143
docs/relnotes/17.1.9.html
Normal file
143
docs/relnotes/17.1.9.html
Normal file
@@ -0,0 +1,143 @@
|
||||
<!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 17.1.9 Release Notes / September 8, 2017</h1>
|
||||
|
||||
<p>
|
||||
Mesa 17.1.9 is a bug fix release which fixes bugs found since the 17.1.8 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 17.1.9 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
|
||||
because compatibility contexts are not supported.
|
||||
</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=100613">Bug 100613</a> - Regression in Mesa 17 on s390x (zSystems)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102454">Bug 102454</a> - glibc 2.26 doesn't provide anymore xlocale.h</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102467">Bug 102467</a> - src/mesa/state_tracker/st_cb_readpixels.c:178]: (warning) Redundant assignment</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Andres Gomez (8):</p>
|
||||
<ul>
|
||||
<li>docs: add sha256 checksums for 17.1.8</li>
|
||||
<li>cherry-ignore: added 17.2 nominations.</li>
|
||||
<li>cherry-ignore: add "nir: Fix system_value_from_intrinsic for subgroups"</li>
|
||||
<li>cherry-ignore: add "i965: Fix crash in fallback GTT mapping."</li>
|
||||
<li>cherry-ignore: add "radeonsi/gfx9: always flush DB metadata on framebuffer changes"</li>
|
||||
<li>cherry-ignore: add "radv: Fix vkCopyImage with both depth and stencil aspects."</li>
|
||||
<li>cherry-ignore: add "radeonsi/gfx9: proper workaround for LS/HS VGPR initialization bug"</li>
|
||||
<li>Update version to 17.1.9</li>
|
||||
</ul>
|
||||
|
||||
<p>Bas Nieuwenhuizen (3):</p>
|
||||
<ul>
|
||||
<li>radv: Fix off by one in MAX_VBS assert.</li>
|
||||
<li>radv: Fix sparse BO mapping merging.</li>
|
||||
<li>radv: Actually set the cmd_buffer usage_flags.</li>
|
||||
</ul>
|
||||
|
||||
<p>Ben Crocker (1):</p>
|
||||
<ul>
|
||||
<li>llvmpipe: lp_build_gather_elem_vec BE fix for 3x16 load</li>
|
||||
</ul>
|
||||
|
||||
<p>Charmaine Lee (1):</p>
|
||||
<ul>
|
||||
<li>vbo: fix offset in minmax cache key</li>
|
||||
</ul>
|
||||
|
||||
<p>Christian Gmeiner (1):</p>
|
||||
<ul>
|
||||
<li>etnaviv: use correct param for etna_compatible_rs_format(..)</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (3):</p>
|
||||
<ul>
|
||||
<li>egl: don't NULL deref the .get_capabilities function pointer</li>
|
||||
<li>egl/wayland: plug leaks in dri2_wl_create_window_surface() error path</li>
|
||||
<li>egl/wayland: polish object teardown in dri2_wl_destroy_surface</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Engestrom (1):</p>
|
||||
<ul>
|
||||
<li>util: improve compiler guard</li>
|
||||
</ul>
|
||||
|
||||
<p>Grazvydas Ignotas (2):</p>
|
||||
<ul>
|
||||
<li>radv: clear dynamic_shader_stages on create</li>
|
||||
<li>radv: don't assert on empty hash table</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (2):</p>
|
||||
<ul>
|
||||
<li>glsl: fix counting of vertex shader output slots used by explicit vars</li>
|
||||
<li>st/mesa: fix handling of vertex array double inputs</li>
|
||||
</ul>
|
||||
|
||||
<p>Jason Ekstrand (2):</p>
|
||||
<ul>
|
||||
<li>anv/formats: Nicely handle unknown VkFormat enums</li>
|
||||
<li>spirv: Add support for the HelperInvocation builtin</li>
|
||||
</ul>
|
||||
|
||||
<p>Karol Herbst (1):</p>
|
||||
<ul>
|
||||
<li>nvc0: write 0 to pipeline_statistics.cs_invocations</li>
|
||||
</ul>
|
||||
|
||||
<p>Michael Olbrich (1):</p>
|
||||
<ul>
|
||||
<li>egl/dri2: only destroy created objects</li>
|
||||
</ul>
|
||||
|
||||
<p>Ray Strode (1):</p>
|
||||
<ul>
|
||||
<li>gallivm: correct channel shift logic on big endian</li>
|
||||
</ul>
|
||||
|
||||
<p>Roland Scheidegger (1):</p>
|
||||
<ul>
|
||||
<li>st/mesa: fix view template initialization in try_pbo_readpixels</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -146,6 +146,19 @@ def check_cc(env, cc, expr, cpp_opt = '-E'):
|
||||
return result
|
||||
|
||||
|
||||
def check_functions(env, functions):
|
||||
'''Check if all of the functions exist'''
|
||||
|
||||
conf = SCons.Script.Configure(env)
|
||||
have_functions = True
|
||||
|
||||
for function in functions:
|
||||
if not conf.CheckFunc(function):
|
||||
have_functions = False
|
||||
|
||||
env = conf.Finish()
|
||||
return have_functions
|
||||
|
||||
def check_prog(env, prog):
|
||||
"""Check whether this program exists."""
|
||||
|
||||
@@ -330,6 +343,9 @@ def generate(env):
|
||||
cppdefines += ['HAVE_XLOCALE_H']
|
||||
env = conf.Finish()
|
||||
|
||||
if check_functions(env, ['strtod_l', 'strtof_l']):
|
||||
cppdefines += ['HAVE_STRTOD_L']
|
||||
|
||||
if platform == 'windows':
|
||||
cppdefines += [
|
||||
'WIN32',
|
||||
|
@@ -1839,6 +1839,7 @@ VkResult radv_BeginCommandBuffer(
|
||||
|
||||
memset(&cmd_buffer->state, 0, sizeof(cmd_buffer->state));
|
||||
cmd_buffer->state.last_primitive_reset_en = -1;
|
||||
cmd_buffer->usage_flags = pBeginInfo->flags;
|
||||
|
||||
/* setup initial configuration into command buffer */
|
||||
if (cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) {
|
||||
@@ -1884,7 +1885,7 @@ void radv_CmdBindVertexBuffers(
|
||||
/* We have to defer setting up vertex buffer since we need the buffer
|
||||
* stride from the pipeline. */
|
||||
|
||||
assert(firstBinding + bindingCount < MAX_VBS);
|
||||
assert(firstBinding + bindingCount <= MAX_VBS);
|
||||
for (uint32_t i = 0; i < bindingCount; i++) {
|
||||
vb[firstBinding + i].buffer = radv_buffer_from_handle(pBuffers[i]);
|
||||
vb[firstBinding + i].offset = pOffsets[i];
|
||||
|
@@ -66,6 +66,7 @@ VkResult radv_CreateDescriptorSetLayout(
|
||||
|
||||
set_layout->binding_count = max_binding + 1;
|
||||
set_layout->shader_stages = 0;
|
||||
set_layout->dynamic_shader_stages = 0;
|
||||
set_layout->size = 0;
|
||||
|
||||
memset(set_layout->binding, 0, size - sizeof(struct radv_descriptor_set_layout));
|
||||
|
@@ -117,6 +117,9 @@ radv_pipeline_cache_search_unlocked(struct radv_pipeline_cache *cache,
|
||||
const uint32_t mask = cache->table_size - 1;
|
||||
const uint32_t start = (*(uint32_t *) sha1);
|
||||
|
||||
if (cache->table_size == 0)
|
||||
return NULL;
|
||||
|
||||
for (uint32_t i = 0; i < cache->table_size; i++) {
|
||||
const uint32_t index = (start + i) & mask;
|
||||
struct cache_entry *entry = cache->hash_table[index];
|
||||
|
@@ -149,6 +149,7 @@ radv_amdgpu_winsys_bo_virtual_bind(struct radeon_winsys_bo *_parent,
|
||||
if (parent->ranges[first].bo == bo && (!bo || offset - bo_offset == parent->ranges[first].offset - parent->ranges[first].bo_offset)) {
|
||||
size += offset - parent->ranges[first].offset;
|
||||
offset = parent->ranges[first].offset;
|
||||
bo_offset = parent->ranges[first].bo_offset;
|
||||
remove_first = true;
|
||||
}
|
||||
|
||||
|
@@ -2017,7 +2017,8 @@ reserved_varying_slot(struct gl_linked_shader *stage,
|
||||
var_slot = var->data.location - VARYING_SLOT_VAR0;
|
||||
|
||||
unsigned num_elements = get_varying_type(var, stage->Stage)
|
||||
->count_attribute_slots(stage->Stage == MESA_SHADER_VERTEX);
|
||||
->count_attribute_slots(io_mode == ir_var_shader_in &&
|
||||
stage->Stage == MESA_SHADER_VERTEX);
|
||||
for (unsigned i = 0; i < num_elements; i++) {
|
||||
if (var_slot >= 0 && var_slot < MAX_VARYINGS_INCL_PATCH)
|
||||
slots |= UINT64_C(1) << var_slot;
|
||||
|
@@ -1004,6 +1004,10 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
||||
*location = FRAG_RESULT_DEPTH;
|
||||
assert(*mode == nir_var_shader_out);
|
||||
break;
|
||||
case SpvBuiltInHelperInvocation:
|
||||
*location = SYSTEM_VALUE_HELPER_INVOCATION;
|
||||
set_mode_system_value(mode);
|
||||
break;
|
||||
case SpvBuiltInNumWorkgroups:
|
||||
*location = SYSTEM_VALUE_NUM_WORK_GROUPS;
|
||||
set_mode_system_value(mode);
|
||||
@@ -1040,7 +1044,6 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
||||
*location = SYSTEM_VALUE_DRAW_ID;
|
||||
set_mode_system_value(mode);
|
||||
break;
|
||||
case SpvBuiltInHelperInvocation:
|
||||
default:
|
||||
unreachable("unsupported builtin");
|
||||
}
|
||||
|
@@ -681,7 +681,8 @@ dri2_setup_screen(_EGLDisplay *disp)
|
||||
disp->Extensions.KHR_wait_sync = EGL_TRUE;
|
||||
if (dri2_dpy->fence->get_fence_from_cl_event)
|
||||
disp->Extensions.KHR_cl_event2 = EGL_TRUE;
|
||||
if (dri2_dpy->fence->base.version >= 2) {
|
||||
if (dri2_dpy->fence->base.version >= 2 &&
|
||||
dri2_dpy->fence->get_capabilities) {
|
||||
unsigned capabilities =
|
||||
dri2_dpy->fence->get_capabilities(dri2_dpy->dri_screen);
|
||||
disp->Extensions.ANDROID_native_fence_sync =
|
||||
@@ -935,9 +936,12 @@ dri2_display_release(_EGLDisplay *disp)
|
||||
wl_drm_destroy(dri2_dpy->wl_drm);
|
||||
if (dri2_dpy->wl_shm)
|
||||
wl_shm_destroy(dri2_dpy->wl_shm);
|
||||
wl_registry_destroy(dri2_dpy->wl_registry);
|
||||
wl_event_queue_destroy(dri2_dpy->wl_queue);
|
||||
wl_proxy_wrapper_destroy(dri2_dpy->wl_dpy_wrapper);
|
||||
if (dri2_dpy->wl_registry)
|
||||
wl_registry_destroy(dri2_dpy->wl_registry);
|
||||
if (dri2_dpy->wl_queue)
|
||||
wl_event_queue_destroy(dri2_dpy->wl_queue);
|
||||
if (dri2_dpy->wl_dpy_wrapper)
|
||||
wl_proxy_wrapper_destroy(dri2_dpy->wl_dpy_wrapper);
|
||||
if (dri2_dpy->own_device) {
|
||||
wl_display_disconnect(dri2_dpy->wl_dpy);
|
||||
}
|
||||
|
@@ -174,7 +174,7 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
dri2_surf->wl_surface_wrapper = wl_proxy_create_wrapper(window->surface);
|
||||
if (!dri2_surf->wl_surface_wrapper) {
|
||||
_eglError(EGL_BAD_ALLOC, "dri2_create_surface");
|
||||
goto cleanup_drm;
|
||||
goto cleanup_dpy_wrapper;
|
||||
}
|
||||
wl_proxy_set_queue((struct wl_proxy *)dri2_surf->wl_surface_wrapper,
|
||||
dri2_surf->wl_queue);
|
||||
@@ -200,7 +200,7 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
dri2_surf);
|
||||
if (dri2_surf->dri_drawable == NULL) {
|
||||
_eglError(EGL_BAD_ALLOC, "createNewDrawable");
|
||||
goto cleanup_surf;
|
||||
goto cleanup_surf_wrapper;
|
||||
}
|
||||
|
||||
dri2_wl_swap_interval(drv, disp, &dri2_surf->base,
|
||||
@@ -208,6 +208,10 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
|
||||
return &dri2_surf->base;
|
||||
|
||||
cleanup_surf_wrapper:
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_surface_wrapper);
|
||||
cleanup_dpy_wrapper:
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_dpy_wrapper);
|
||||
cleanup_drm:
|
||||
if (dri2_surf->wl_drm_wrapper)
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_drm_wrapper);
|
||||
@@ -278,10 +282,10 @@ dri2_wl_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
|
||||
dri2_surf->wl_win->destroy_window_callback = NULL;
|
||||
}
|
||||
|
||||
if (dri2_surf->wl_drm_wrapper)
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_drm_wrapper);
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_surface_wrapper);
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_dpy_wrapper);
|
||||
if (dri2_surf->wl_drm_wrapper)
|
||||
wl_proxy_wrapper_destroy(dri2_surf->wl_drm_wrapper);
|
||||
wl_event_queue_destroy(dri2_surf->wl_queue);
|
||||
|
||||
free(surf);
|
||||
|
@@ -650,7 +650,13 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm,
|
||||
for (i = 0; i < format_desc->nr_channels; i++) {
|
||||
struct util_format_channel_description chan_desc = format_desc->channel[i];
|
||||
unsigned blockbits = type.width;
|
||||
unsigned vec_nr = chan_desc.shift / type.width;
|
||||
unsigned vec_nr;
|
||||
|
||||
#ifdef PIPE_ARCH_BIG_ENDIAN
|
||||
vec_nr = (format_desc->block.bits - (chan_desc.shift + chan_desc.size)) / type.width;
|
||||
#else
|
||||
vec_nr = chan_desc.shift / type.width;
|
||||
#endif
|
||||
chan_desc.shift %= type.width;
|
||||
|
||||
output[i] = lp_build_extract_soa_chan(&bld,
|
||||
|
@@ -234,13 +234,39 @@ lp_build_gather_elem_vec(struct gallivm_state *gallivm,
|
||||
*/
|
||||
res = LLVMBuildZExt(gallivm->builder, res, dst_elem_type, "");
|
||||
|
||||
if (vector_justify) {
|
||||
#ifdef PIPE_ARCH_BIG_ENDIAN
|
||||
if (vector_justify) {
|
||||
res = LLVMBuildShl(gallivm->builder, res,
|
||||
LLVMConstInt(dst_elem_type,
|
||||
dst_type.width - src_width, 0), "");
|
||||
#endif
|
||||
}
|
||||
if (src_width == 48) {
|
||||
/* Load 3x16 bit vector.
|
||||
* The sequence of loads on big-endian hardware proceeds as follows.
|
||||
* 16-bit fields are denoted by X, Y, Z, and 0. In memory, the sequence
|
||||
* of three fields appears in the order X, Y, Z.
|
||||
*
|
||||
* Load 32-bit word: 0.0.X.Y
|
||||
* Load 16-bit halfword: 0.0.0.Z
|
||||
* Rotate left: 0.X.Y.0
|
||||
* Bitwise OR: 0.X.Y.Z
|
||||
*
|
||||
* The order in which we need the fields in the result is 0.Z.Y.X,
|
||||
* the same as on little-endian; permute 16-bit fields accordingly
|
||||
* within 64-bit register:
|
||||
*/
|
||||
LLVMValueRef shuffles[4] = {
|
||||
lp_build_const_int32(gallivm, 2),
|
||||
lp_build_const_int32(gallivm, 1),
|
||||
lp_build_const_int32(gallivm, 0),
|
||||
lp_build_const_int32(gallivm, 3),
|
||||
};
|
||||
res = LLVMBuildBitCast(gallivm->builder, res,
|
||||
lp_build_vec_type(gallivm, lp_type_uint_vec(16, 4*16)), "");
|
||||
res = LLVMBuildShuffleVector(gallivm->builder, res, res, LLVMConstVector(shuffles, 4), "");
|
||||
res = LLVMBuildBitCast(gallivm->builder, res, dst_elem_type, "");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return res;
|
||||
|
@@ -398,7 +398,7 @@ etna_try_rs_blit(struct pipe_context *pctx,
|
||||
}
|
||||
|
||||
unsigned src_format = etna_compatible_rs_format(blit_info->src.format);
|
||||
unsigned dst_format = etna_compatible_rs_format(blit_info->src.format);
|
||||
unsigned dst_format = etna_compatible_rs_format(blit_info->dst.format);
|
||||
if (translate_rs_format(src_format) == ETNA_NO_MATCH ||
|
||||
translate_rs_format(dst_format) == ETNA_NO_MATCH ||
|
||||
blit_info->scissor_enable || blit_info->src.box.x != 0 ||
|
||||
|
@@ -346,6 +346,7 @@ nvc0_hw_get_query_result(struct nvc0_context *nvc0, struct nvc0_query *q,
|
||||
case PIPE_QUERY_PIPELINE_STATISTICS:
|
||||
for (i = 0; i < 10; ++i)
|
||||
res64[i] = data64[i * 2] - data64[24 + i * 2];
|
||||
result->pipeline_statistics.cs_invocations = 0;
|
||||
break;
|
||||
case NVC0_HW_QUERY_TFB_BUFFER_OFFSET:
|
||||
res32[0] = hq->data[1];
|
||||
|
@@ -251,6 +251,15 @@ static const struct anv_format anv_formats[] = {
|
||||
|
||||
#undef fmt
|
||||
|
||||
static bool
|
||||
format_supported(VkFormat vk_format)
|
||||
{
|
||||
if (vk_format >= ARRAY_SIZE(anv_formats))
|
||||
return false;
|
||||
|
||||
return anv_formats[vk_format].isl_format != ISL_FORMAT_UNSUPPORTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exactly one bit must be set in \a aspect.
|
||||
*/
|
||||
@@ -258,10 +267,10 @@ struct anv_format
|
||||
anv_get_format(const struct gen_device_info *devinfo, VkFormat vk_format,
|
||||
VkImageAspectFlags aspect, VkImageTiling tiling)
|
||||
{
|
||||
struct anv_format format = anv_formats[vk_format];
|
||||
if (!format_supported(vk_format))
|
||||
return anv_formats[VK_FORMAT_UNDEFINED];
|
||||
|
||||
if (format.isl_format == ISL_FORMAT_UNSUPPORTED)
|
||||
return format;
|
||||
struct anv_format format = anv_formats[vk_format];
|
||||
|
||||
if (aspect == VK_IMAGE_ASPECT_STENCIL_BIT) {
|
||||
assert(vk_format_aspects(vk_format) & VK_IMAGE_ASPECT_STENCIL_BIT);
|
||||
@@ -397,7 +406,7 @@ anv_physical_device_get_format_properties(struct anv_physical_device *physical_d
|
||||
gen += 5;
|
||||
|
||||
VkFormatFeatureFlags linear = 0, tiled = 0, buffer = 0;
|
||||
if (anv_formats[format].isl_format == ISL_FORMAT_UNSUPPORTED) {
|
||||
if (!format_supported(format)) {
|
||||
/* Nothing to do here */
|
||||
} else if (vk_format_is_depth_or_stencil(format)) {
|
||||
tiled |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
|
||||
@@ -495,7 +504,7 @@ anv_get_image_format_properties(
|
||||
uint32_t maxArraySize;
|
||||
VkSampleCountFlags sampleCounts = VK_SAMPLE_COUNT_1_BIT;
|
||||
|
||||
if (anv_formats[info->format].isl_format == ISL_FORMAT_UNSUPPORTED)
|
||||
if (!format_supported(info->format))
|
||||
goto unsupported;
|
||||
|
||||
anv_physical_device_get_format_properties(physical_device, info->format,
|
||||
|
@@ -175,7 +175,7 @@ try_pbo_readpixels(struct st_context *st, struct st_renderbuffer *strb,
|
||||
|
||||
if (view_target != PIPE_TEXTURE_3D) {
|
||||
templ.u.tex.first_layer = surface->u.tex.first_layer;
|
||||
templ.u.tex.last_layer = templ.u.tex.last_layer;
|
||||
templ.u.tex.last_layer = templ.u.tex.first_layer;
|
||||
} else {
|
||||
addr.constants.layer_offset = surface->u.tex.first_layer;
|
||||
}
|
||||
|
@@ -2748,7 +2748,9 @@ glsl_to_tgsi_visitor::visit(ir_dereference_variable *ir)
|
||||
|
||||
this->result = st_src_reg(entry->file, entry->index, var->type,
|
||||
entry->component, entry->array_id);
|
||||
if (this->shader->Stage == MESA_SHADER_VERTEX && var->data.mode == ir_var_shader_in && var->type->is_double())
|
||||
if (this->shader->Stage == MESA_SHADER_VERTEX &&
|
||||
var->data.mode == ir_var_shader_in &&
|
||||
var->type->without_array()->is_double())
|
||||
this->result.is_double_vertex_input = true;
|
||||
if (!native_integers)
|
||||
this->result.type = GLSL_TYPE_FLOAT;
|
||||
|
@@ -244,6 +244,7 @@ vbo_get_minmax_index(struct gl_context *ctx,
|
||||
const int index_size = vbo_sizeof_ib_type(ib->type);
|
||||
const char *indices;
|
||||
GLuint i;
|
||||
GLintptr offset = 0;
|
||||
|
||||
indices = (char *) ib->ptr + prim->start * index_size;
|
||||
if (_mesa_is_bufferobj(ib->obj)) {
|
||||
@@ -253,7 +254,8 @@ vbo_get_minmax_index(struct gl_context *ctx,
|
||||
min_index, max_index))
|
||||
return;
|
||||
|
||||
indices = ctx->Driver.MapBufferRange(ctx, (GLintptr) indices, size,
|
||||
offset = (GLintptr) indices;
|
||||
indices = ctx->Driver.MapBufferRange(ctx, offset, size,
|
||||
GL_MAP_READ_BIT, ib->obj,
|
||||
MAP_INTERNAL);
|
||||
}
|
||||
@@ -336,8 +338,8 @@ vbo_get_minmax_index(struct gl_context *ctx,
|
||||
}
|
||||
|
||||
if (_mesa_is_bufferobj(ib->obj)) {
|
||||
vbo_minmax_cache_store(ctx, ib->obj, ib->type, prim->start, count,
|
||||
*min_index, *max_index);
|
||||
vbo_minmax_cache_store(ctx, ib->obj, ib->type, offset,
|
||||
count, *min_index, *max_index);
|
||||
ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL);
|
||||
}
|
||||
}
|
||||
|
@@ -26,12 +26,12 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
|
||||
#include <locale.h>
|
||||
#ifdef HAVE_XLOCALE_H
|
||||
#include <xlocale.h>
|
||||
static locale_t loc;
|
||||
#endif
|
||||
static locale_t loc;
|
||||
#endif
|
||||
|
||||
#include "strtod.h"
|
||||
@@ -40,7 +40,7 @@ static locale_t loc;
|
||||
void
|
||||
_mesa_locale_init(void)
|
||||
{
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
|
||||
loc = newlocale(LC_CTYPE_MASK, "C", NULL);
|
||||
#endif
|
||||
}
|
||||
@@ -48,7 +48,7 @@ _mesa_locale_init(void)
|
||||
void
|
||||
_mesa_locale_fini(void)
|
||||
{
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
|
||||
freelocale(loc);
|
||||
#endif
|
||||
}
|
||||
@@ -60,7 +60,7 @@ _mesa_locale_fini(void)
|
||||
double
|
||||
_mesa_strtod(const char *s, char **end)
|
||||
{
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
|
||||
return strtod_l(s, end, loc);
|
||||
#else
|
||||
return strtod(s, end);
|
||||
@@ -75,7 +75,7 @@ _mesa_strtod(const char *s, char **end)
|
||||
float
|
||||
_mesa_strtof(const char *s, char **end)
|
||||
{
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
|
||||
#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
|
||||
return strtof_l(s, end, loc);
|
||||
#elif defined(HAVE_STRTOF)
|
||||
return strtof(s, end);
|
||||
|
Reference in New Issue
Block a user