summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-11-27radv: fix enabling sample shading with SampleID/SamplePositionSamuel Pitoiset1-7/+24
When a fragment shader includes an input variable decorated with SampleId or SamplePosition, sample shading should be enabled because minSampleShadingFactor is expected to be 1.0. Cc: 19.2, 19.3 <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> (cherry picked from commit 86a5fbfd4afb4fb53ab8ea0a13dda33b32f8b79b)
2019-11-27VERSION: Bump version for -rc5mesa-19.3.0-rc5Dylan Baker1-1/+1
2019-11-26meson: Fix linkage of libgallium_nine with libgalliumvlYevhenii Kolesnikov1-5/+13
Do not link libgallium_nine with libgalliumvl_stub if it's already linked with libgalliumvl. Linking with stub leads to "duplicate symbol" errors. Fixes: 6b4c7047d57178d3362a710ad503057c6a582ca3 ("meson: build gallium nine state_tracker") Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2040 Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com> Reviewed-by: Dylan Baker <dylan@pnwbakers.com> (cherry picked from commit 9af22ccddcd1a983df5e0c6732a4e8f5ebf4d9cf)
2019-11-26radv: Allocate cmdbuffer space for buffer marker write.Bas Nieuwenhuizen1-0/+4
Fixes: 946193ae008 "radv: add support for VK_AMD_buffer_marker" Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> (cherry picked from commit 25bc9102d89f4390e0edc0a5f09fcde9de80f776)
2019-11-26r600: Disable eight bit three channel formatsGert Wollny1-0/+4
Commit 0899bf55 made some deqp-gles3 tests related to RGB8 PBOs fail on R600 because it exposed PIPE_FORMAT_R8G8B8_UNORM and R600 doesn't propely handle this. Disabling this format also for buffers fixes the issue. In addition, disabling also the related RGB8 integer formats for buffers fixes some deqp-gles3 tests: dEQP-GLES3.functional.texture.specification.teximage2d_pbo.rgb8ui_cube dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.rgb8i_2d dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.rgb8i_cube dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.rgb8ui_2d dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.rgb8ui_cube dEQP-GLES3.functional.texture.specification.teximage3d_pbo.rgb8i_2d_array dEQP-GLES3.functional.texture.specification.teximage3d_pbo.rgb8i_3d dEQP-GLES3.functional.texture.specification.teximage3d_pbo.rgb8ui_2d_array dEQP-GLES3.functional.texture.specification.teximage3d_pbo.rgb8ui_3d dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgb8i_2d_array dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgb8i_3d dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgb8ui_2d_array dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo.rgb8ui_3d Fixes: 0899bf55 st/mesa: Map MESA_FORMAT_RGB_UNORM8 <-> PIPE_FORMAT_R8G8B8_UNORM Closes #2118 Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commit e41958e344cb4b15d01008140a1ee08817104334)
2019-11-26radv: create a fresh fork for each pipeline compileTimothy Arceri2-14/+139
In order to prevent a potential malicious pipeline tainting our secure compile process and interfering with successive pipelines we want to create a fresh fork for each pipeline compile. Benchmarking has shown that simply forking on each pipeline creation doubles the total time it takes to compile a fossilize db collection. So instead here we fork the process at device creation so that we have a slim copy of the device and then fork this otherwise idle and untainted process each time we compile a pipeline. Forking this slim copy of the device results in only a 20% increase in compile time vs a 100% increase. Fixes: cff53da3 ("radv: enable secure compile support") (cherry picked from commit f54c4e85ce089964e4d2ed39157f07226a41d11f)
2019-11-26radv: add a secure_compile_open_fifo_fds() helperTimothy Arceri1-0/+43
This will be used to create a communication pipe between the user facing device and a freshly forked (per pipeline compile) slim copy of that device. We can't use pipe() here because the fork will not be a direct fork of the user facing process. Instead we use a previously forked copy of the process that was forked at device creation in order to reduce the resources required for the fork and avoid performance issues. Fixes: cff53da3748d ("radv: enable secure compile support") (cherry picked from commit 1663bb1f772dacadaec2d80f8286cfb76c4bb200)
2019-11-26radv: add some infrastructure for fresh forks for each secure compileTimothy Arceri1-1/+14
In the following commits we want to be able to fork an existing lightweight fork created at device creation time. In order for the user facing process to communicate with this new fresh fork we create some members here to hold FIFO file descriptors and a unique id. Here we also add a new fork enum that we use to tell the lightweight process to create a fresh fork. For more information on why we create a fresh fork see the following commits. (cherry picked from commit ef54f15da9ac11fafcbd6c91a7fcdac734436db8)
2019-11-26Revert "draw: revert using correct order for prim decomposition."Zebediah Figura1-3/+1
This reverts commit f97b731c82afb06cfd6ffebc90a3e098a9a1b308. Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/250 Reviewed-by: Roland Scheidegger <sroland@vmware.com> (cherry picked from commit a3c8bc10aa9294bd78c0e2cf5818fb4b8a42cd7a)
2019-11-26intel/fs: Disable conditional discard optimization on Gen4 and Gen5Ian Romanick1-1/+8
The CMP instruction on Gen4 and Gen5 generates one bit (the LSB) of valid data and 31 bits of junk. Results of comparisons that are used as Boolean values need to have a fixup applied to generate the proper 0/~0 values. Calling fs_visitor::nir_emit_alu with need_dest=false prevents the fixup code from being generated. This results in a sequence like: cmp.l.f0.0(16) g8<1>F g14<8,8,1>F 0x0F /* 0F */ ... cmp.l.f0.0(16) g4<1>F g6<8,8,1>F 0x0F /* 0F */ (+f0.1) or.z.f0.1(16) null<1>UD g4<8,8,1>UD g8<8,8,1>UD instead of cmp.l.f0.0(16) g8<1>F g14<8,8,1>F 0x0F /* 0F */ ... cmp.l.f0.0(16) g4<1>F g6<8,8,1>F 0x0F /* 0F */ or(16) g4<1>UD g4<8,8,1>UD g8<8,8,1>UD (+f0.1) and.z.f0.1(16) null<1>UD g4<8,8,1>UD 1UD I examined a couple of the shaders hurt by this change, and ALL of them would have been affected by this bug. :( Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1836 Fixes: 0ba9497e66a ("intel/fs: Improve discard_if code generation") Iron Lake total instructions in shared programs: 8122757 -> 8122957 (<.01%) instructions in affected programs: 8307 -> 8507 (2.41%) helped: 0 HURT: 100 HURT stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2 HURT stats (rel) min: 0.84% max: 6.67% x̄: 2.81% x̃: 2.76% 95% mean confidence interval for instructions value: 2.00 2.00 95% mean confidence interval for instructions %-change: 2.58% 3.03% Instructions are HURT. total cycles in shared programs: 188510100 -> 188510376 (<.01%) cycles in affected programs: 76018 -> 76294 (0.36%) helped: 0 HURT: 55 HURT stats (abs) min: 2 max: 12 x̄: 5.02 x̃: 4 HURT stats (rel) min: 0.07% max: 3.75% x̄: 0.86% x̃: 0.56% 95% mean confidence interval for cycles value: 4.33 5.71 95% mean confidence interval for cycles %-change: 0.60% 1.12% Cycles are HURT. GM45 total instructions in shared programs: 4994403 -> 4994503 (<.01%) instructions in affected programs: 4212 -> 4312 (2.37%) helped: 0 HURT: 50 HURT stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2 HURT stats (rel) min: 0.84% max: 6.25% x̄: 2.76% x̃: 2.72% 95% mean confidence interval for instructions value: 2.00 2.00 95% mean confidence interval for instructions %-change: 2.45% 3.07% Instructions are HURT. total cycles in shared programs: 128928750 -> 128928982 (<.01%) cycles in affected programs: 67442 -> 67674 (0.34%) helped: 0 HURT: 47 HURT stats (abs) min: 2 max: 12 x̄: 4.94 x̃: 4 HURT stats (rel) min: 0.09% max: 3.75% x̄: 0.75% x̃: 0.53% 95% mean confidence interval for cycles value: 4.19 5.68 95% mean confidence interval for cycles %-change: 0.50% 1.00% Cycles are HURT. (cherry picked from commit e51eda99dfd6a66b066e371005e7a54ecc38fc11)
2019-11-26glsl: Enable textureSize for samplerExternalOESYevhenii Kolesnikov1-0/+2
From OES_EGL_image_external_essl3 Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1901 Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
2019-11-26llvmpipe/ppc: fix if/ifdef confusion in backport.Dave Airlie1-1/+1
Fixes: 32aba91c07f (llvmpipe: use ppc64le/ppc64 Large code model for JIT-compiled shaders) Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
2019-11-26freedreno/ir3: fix printing output registers of FS.Hyunjun Ko1-2/+3
Fixes: cea39af2fbf1 ("freedreno/ir3: Generalize ir3_shader_disasm()") Reviewed-by: Rob Clark <robdclark@gmail.com> (cherry picked from commit d0f38394b146fa61197c66a0a0f95fa83f58cec8)
2019-11-26v3d: adds an extra MOV for any sig.ld*Alejandro Piñeiro1-4/+19
Specifically when we are in non-uniform control flow, as we would need to set the condition for the last instruction. If (for example) a image atomic load stores directly their value on a NIR register, last_inst would be a nop, and would fail when set the condition. Fixes piglit test: spec/glsl-es-3.10/execution/cs-ssbo-atomic-if-else-2.shader_test Fixes: 6281f26f064ada ("v3d: Add support for shader_image_load_store.") v2: (Changes suggested by Eric Anholt) * Cover all sig.ld* signals, not just ldunif and ldtmu, as all of them have the same restriction. * Update comment explaining why we add a MOV in that case * Tweak commit message. v3: * Drop extra set of parens (Eric) * Add missing ld signal to is_ld_signal to fix shader-db regression. Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commit b4bc59e37ec0969d70e87d233e4e82431ec2e092)
2019-11-26v3d: Fix predication with atomic image operationsJose Maria Casanova Crespo1-0/+12
Fixes dEQP test: dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_atomic_multiple_interleaved_write_read Fixes piglit test: spec/glsl-es-3.10/execution/cs-image-atomic-if-else.shader_test Fixes: 6281f26f064ada ("v3d: Add support for shader_image_load_store.") Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commit d983055184320a843d0f056b4c0f7af53cff47ab)
2019-11-26radv: Do not change scratch settings while shaders are active.Bas Nieuwenhuizen4-55/+105
When the scratch ringbuffer settings are changed, the shader unit has to be idle or we will have shaders using old and new settings. That combination is not supported on the HW (likely the offset is ringbuffer idx * WAVESIZE * 1024). CC: <mesa-stable@lists.freedesktop.org> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> (cherry picked from commit 4eb2a1dc6fc32a047d53620a929eae0bb255f9da)
2019-11-26vulkan: delete typo'd headerEric Engestrom1-54/+0
Two files exist in that directory: - vulkan_xlib_randr.h - vulkan_xlib_xrandr.h Both were imported in 205c271562db8cb2effc ("vulkan: Update the XML and headers to 1.1.70") with identical contents (ie. the VK_EXT_acquire_xlib_display extension), but the former was never included anywhere and can't be found upstream [1], while the latter is included in vulkan.h and found upstream. [1] https://github.com/KhronosGroup/Vulkan-Headers/tree/master/include/vulkan Fixes: 205c271562db8cb2effc ("vulkan: Update the XML and headers to 1.1.70") Signed-off-by: Eric Engestrom <eric.engestrom@intel.com> Acked-by: Jason Ekstrand <jason@jlekstrand.net> (cherry picked from commit 344859c32d00e444e4e820642541628b36c0622e)
2019-11-20VERSION: bump for 19.3.0-rc4mesa-19.3.0-rc4Dylan Baker1-1/+1
2019-11-19anv: Stop bounds-checking pushed UBOsJason Ekstrand1-36/+10
The bounds checking is actually less safe than just pushing the data. If the bounds checking actually ever kicks in and it's not on the last UBO push range, then the shrinking will cause all subsequent ranges to be pushed to the wrong place in the GRF. One of the behaviors we definitely don't want is for OOB UBO access to result in completely unrelated UBOs returning garbage values. It's safer to just push the UBOs as-requested. If we're really concerned about robustness, we can emit shader code to do bounds checking which should be stupid cheap (a CMP followed by SEL). Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2019-11-19Call shmget() with permission 0600 instead of 0777Brian Paul3-3/+6
A security advisory (TALOS-2019-0857/CVE-2019-5068) found that creating shared memory regions with permission mode 0777 could allow any user to access that memory. Several Mesa drivers use shared- memory XImages to implement back buffers for improved performance. This path changes the shmget() calls to use 0600 (user r/w). Tested with legacy Xlib driver and llvmpipe. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com> (cherry picked from commit 02c3dad0f3b4d26e0faa5cc51d06bc50d693dcdc)
2019-11-19Revert "freedreno/ir3: enable pre-fs texture fetch for a6xx"Rob Clark1-6/+0
This reverts commit f30c256ec05618fb40dccbd94a3434b2f63db478. See 088a2a4cab031f1505d531698109f330f94f3072 Fixes: f30c256ec05 ("freedreno/ir3: enable pre-fs texture fetch for a6xx") Signed-off-by: Rob Clark <robdclark@chromium.org>
2019-11-19i965: Unify CC_STATE and BLEND_STATE atoms on Haswell as a workaroundDanylo Piliaiev1-2/+35
Re-emitting 3DSTATE_CC_STATE_POINTERS after emitting 3DSTATE_BLEND_STATE_POINTERS fixes the shadow flickering in SuperTuxCart and Tropico 6 which was seen only on Haswell. The reason for this is unknown and fix was found empirically. The closest mention in PRM is that it should improve performance. From the HSW PRM, volume 2b, page 823 (3DSTATE_BLEND_STATE_POINTERS): "When the BLEND_STATE pointer changes but not the CC_STATE pointer, driver needs to force a CC_STATE pointer change to improve blend performance in pixel backend." Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1834 Fixes: eca4a654 ("i965: Disable dual source blending when shader doesn't support it on gen8+") Cc: <mesa-stable@lists.freedesktop.org> Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit 6f17fe0606a144f977d8b70a7ee9f8371abc144b)
2019-11-19freedreno/registers: fix a6xx_2d_blit_cntl ROTATEJonathan Marek1-2/+1
A change from b7093882 got overwritten by 610c8c93 Fixes: 610c8c93 ("freedreno/registers: Update with GS, HS and DS registers") Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Rob Clark <robdclark@gmail.com> (cherry picked from commit 75e58d1fae94f68d75c04770b1cadc6c1b112f6c)
2019-11-19freedreno/ir3: disable texture prefetch for 1d array texturesJonathan Marek1-6/+5
Prefetch only supports the basic 2D texture case, checking is_array is needed because 1d array textures pass the coord num_components==2 test. Fixes: 2a0d45ae ("freedreno/ir3: Add a NIR pass to select tex instructions eligible for pre-fetch") Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Rob Clark <robdclark@gmail.com> (cherry picked from commit 0f5743429c76b385db9c513102b2010213ffbb8c)
2019-11-19llvmpipe: use ppc64le/ppc64 Large code model for JIT-compiled shadersBen Crocker1-1/+15
Large programs, e.g. gnome-shell and firefox, may tax the addressability of the Medium code model once a (potentially unbounded) number of 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). Testing with WebGL Conformance (https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html) yields clean runs with this change (and crashes without it). Testing with glxgears shows no detectable performance difference. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1753327, 1753789, 1543572, 1747110, and 1582226 Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/223 Co-authored by: Nemanja Ivanovic <nemanjai@ca.ibm.com>, Tom Stellard <tstellar@redhat.com> CC: mesa-stable@lists.freedesktop.org Signed-off-by: Ben Crocker <bcrocker@redhat.com> (cherry picked from commit 9c3be6d21fa6a45852045d0286b80fb420f82fe3) Conflicts resolved Dylan (PIPE_ARCH -> UTIL_ARCH rename)
2019-11-19aco: fix 64-bit fsign with 0Rhys Perry1-1/+1
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Fixes: 93c8ebfa ('aco: Initial commit of independent AMD compiler') Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> (cherry picked from commit be1d11249bde1e041f6eb9c0acedb041ab450c4b)
2019-11-19aco: don't combine literals into v_cndmask_b32/v_subb/v_addcRhys Perry1-0/+6
No pipeline-db changes Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Fixes: 93c8ebfa ('aco: Initial commit of independent AMD compiler') Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> (cherry picked from commit b062b92ab1a6504772a63a6b44f89b4579aef9a3)
2019-11-19cherry-ignore: update for 19.3.0-rc4 cycleDylan Baker1-0/+4
2019-11-14Revert "dri_interface: add interface for EGL_EXT_image_flush_external"Tapani Pälli1-50/+1
This reverts commit 7520478461d8ab1cda415ff689d6b9058213ff43. This series caused unexpected flickering artifacts with Iris driver on Chrome OS and EGL_EXT_image_flush_external spec has not been published yet. Acked-by: Eric Engestrom <eric@engestrom.ch> Acked-by: Kristian H. Kristensen <hoegsberg@google.com> (cherry picked from commit 1a093a06d6b7f33b4edb621c8d1920ff69dff630)
2019-11-14Revert "st/dri: assume external consumers of back buffers can write to the ↵Tapani Pälli1-6/+6
buffers" This reverts commit 1d1b4578211dcc69cfab8879d0cdafaba1eec948. This series caused unexpected flickering artifacts with Iris driver on Chrome OS and EGL_EXT_image_flush_external spec has not been published yet. Acked-by: Eric Engestrom <eric@engestrom.ch> Acked-by: Kristian H. Kristensen <hoegsberg@google.com> (cherry picked from commit 7951eb146c1bb57c6d2231a9675046c535530b6a)
2019-11-14Revert "st/dri: add support for EGL_EXT_image_flush_external"Tapani Pälli1-91/+40
This reverts commit 1d122c104a7a3d9348ab347e1e843b7e2bf3b498. This series caused unexpected flickering artifacts with Iris driver on Chrome OS and EGL_EXT_image_flush_external spec has not been published yet. Acked-by: Eric Engestrom <eric@engestrom.ch> Acked-by: Kristian H. Kristensen <hoegsberg@google.com> (cherry picked from commit 25f596e6ba4ef469fbd219aee288dd96624055eb)
2019-11-14Revert "egl: handle EGL_IMAGE_EXTERNAL_FLUSH_EXT"Tapani Pälli3-70/+11
This reverts commit 34b1aa957a3f44ea9587ec43311e8434d3782cc1. This series caused unexpected flickering artifacts with Iris driver on Chrome OS and EGL_EXT_image_flush_external spec has not been published yet. Acked-by: Eric Engestrom <eric@engestrom.ch> Acked-by: Kristian H. Kristensen <hoegsberg@google.com> (cherry picked from commit ff05f16c9988d5794028dba2d437e8796be85fdd)
2019-11-14Revert "egl: implement new functions from EGL_EXT_image_flush_external"Tapani Pälli7-106/+0
This reverts commit c1c574fdf18f2aeb1c03f9670bf00e1dcd22d99d. This series caused unexpected flickering artifacts with Iris driver on Chrome OS and EGL_EXT_image_flush_external spec has not been published yet. Acked-by: Eric Engestrom <eric@engestrom.ch> Acked-by: Kristian H. Kristensen <hoegsberg@google.com> (cherry picked from commit e64b91e34aa04a137a322ae9444c1c603383c6d4)
2019-11-14intel/compiler: fix nir_op_{i,u}*32 on ICLPaulo Zanoni1-1/+1
On ICL we have the src1 restriction which is applied through fix_byte_src() and potentially changes the type of the operands from 8 to 32 bits. When this change happens, we fall into the "else if (bit_size < 32)" case and miscompute src_type because it takes into consideration bit_size (8) instead of the adjusted size of temp_op (32). This results in the shader reading unused memory, giving us mostly failures, but occasional passes due to whatever was already in the registers we were reading. This commit fixes a lot of dEQP subgroup i8vec2 tests on ICL, such as: dEQP-VK.subgroups.arithmetic.compute.subgroupadd_i8vec2 This can also be verified by simply changing fix_byte_src() to apply on all platforms. Fixes: 5847de6e9afe ("intel/compiler: don't use byte operands for src1 on ICL") Reviewed-by: Ivan Briano <ivan.briano@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> (cherry picked from commit eb6352162dde1445f1fe7a408e79f4ecfdf3703c)
2019-11-14anv: Initialize depth_bounds_test_enable when not explicitly setCaio Marcelo de Oliveira Filho1-2/+1
This was causing uninitialized value to end up propagated to the 3DSTATE_DEPTH_BOUNDS packet, leading to asserts on packet building due to the value being greater than 1. Fixes: 939ddccb7a5 ("anv: Add support for depth bounds testing.") Reviewed-by: Plamena Manolova <plamena.manolova@intel.com> (cherry picked from commit 0aaf47f7cd50b9c07c1297fe8daff1b2693a6729)
2019-11-14nir/algebraic: Mark other comparison exact when removing a == aIan Romanick1-2/+2
This prevents some additional optimizations that would change the original result. This includes things like (b < a && b < c) => b < min(a, c) and !(a < b) => b >= a. Both of these optimizations were specifically observed in the piglit tests added in piglit!160. This was discovered while investigating https://gitlab.freedesktop.org/mesa/mesa/issues/1958. However, the problem in that issue was Chrome or Angle is replacing calls to isnan() with some stuff that we (correctly) optimize to false. If they had left the calls to isnan() alone, everything would have just worked. No shader-db changes on any Intel platform. I also tried marking the comparison generated by the isnan() function precise. The precise marker "infects" every computation involved in calculating the parameter to the isnan() function, and this severely hurt all of the (few) shaders in shader-db that use isnan(). I also considered adding a new ir_unop_isnan opcode that would implement the functionality. During GLSL IR-to-NIR translation, the resulting comparison operation would be marked exact (and the samething would need to happen in SPIR-V translation). This approach taken by this patch seemed easier, but we may want to do the ir_unop_isnan thing anyway. Fixes: d55835b8bdf ("nir/algebraic: Add optimizations for "a == a && a CMP b"") Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> (cherry picked from commit 9be4a422a055d1e829d56c3cc91e1fc2f6e8fb31)
2019-11-14nir/algebraic: Add the ability to mark a replacement as exactIan Romanick4-3/+13
Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> (cherry picked from commit ea19f2fb68f54171683b6c490b2cd6df96f854c7)
2019-11-13freedreno/ir3: fix gpu hang with pre-fs-tex-fetchRob Clark2-10/+32
For pre-fs-dispatch texture fetch, we need to assign bary_ij to r0.x, even if it is not used in the shader (ie. only varying use is for tex coords). But if, for example, gl_FragCoord is used, it could get assigned on top of bary_ij, resulting in a GPU hang. The solution to this is two-fold: (1) the inputs/outputs rework has the benefit of making RA realize bary_ij is a vec2, even if there are no split/collect instructions (due to no varying fetches in the shader itself). And (2) extend the live ranges of meta:input instructions to the first non-input, to prevent RA from assigning the same register to multiple inputs. Backport note: because of (1) above, a better solution for 19.3 would be to revert f30c256ec05. Fixes: f30c256ec05 ("freedreno/ir3: enable pre-fs texture fetch for a6xx") Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com> Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commit b22617fb57be54a859a8d62a5e545afcb38266e9)
2019-11-13aco: don't propagate vgprs into v_readlane/v_writelaneRhys Perry1-1/+8
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Fixes: 93c8ebfa ('aco: Initial commit of independent AMD compiler') (cherry picked from commit 2c98d79d114d3ed82a9e60519d666f51a1172cd3)
2019-11-13aco: fix read_invocation with VGPR lane indexRhys Perry1-2/+1
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Fixes: 93c8ebfa ('aco: Initial commit of independent AMD compiler') (cherry picked from commit 5a1bacb6f916d9a46a3d44830a4eb4bd3dca7d23)
2019-11-13aco: fix shuffle with uniform operandsRhys Perry1-6/+6
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Fixes: 93c8ebfa ('aco: Initial commit of independent AMD compiler') (cherry picked from commit f97d9334263a4dd8878c4e259fb5afcdc1334904)
2019-11-13aco: preserve kill flag on moved operands during RADaniel Schürmann1-1/+1
Fixes: 93c8ebfa780ebd1495095e794731881aef29e7d3 aco: Initial commit of independent AMD compiler Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> (cherry picked from commit b6f5085dfee81d9c54fcda883d2b06742134084a)
2019-11-13aco: fix invalid access on Pseudo_instructionsDaniel Schürmann2-2/+10
Fixes: 93c8ebfa780ebd1495095e794731881aef29e7d3 aco: Initial commit of independent AMD compiler Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> (cherry picked from commit a2a6880743d7370a6425593f22d9e98317bfc3b2)
2019-11-13st/mesa: fix Sanctuary and Tropics by disabling ARB_gpu_shader5 for themMarek Olšák6-1/+12
They use the "sample" keyword as a variable name. Cc: 19.2 19.3 <mesa-stable@lists.freedesktop.org> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> (cherry picked from commit e00791c5525000652472cdcfe55d59f43ec3d85e)
2019-11-13anv/wsi: signal the semaphore in the acquireNextImageLionel Landwerlin1-4/+20
We seem to have forgotten about the semaphore in the acquireNextImageInfo. v2: Signal semaphore/fence regardless of presentation status (Jason) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (cherry picked from commit edc6606d4e515707b22674a0b3357c02de52378e)
2019-11-13anv: remove list items on batch finiLionel Landwerlin1-1/+4
This doesn't seem to fix anything because those destroy() calls happen right before the command buffer object & its list of batch_bo is also destroyed. Still looks a bit cleaner. v2: Found a second occurence Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v2) Fixes: 26ba0ad54d ("vk: Re-name command buffer implementation files") Cc: <mesa-stable@lists.freedesktop.org> (cherry picked from commit 935f8f0e56a409b10fac86e18f68be776cdff29f)
2019-11-13anv: invalidate file descriptor of semaphore sync fd at vkQueueSubmitLionel Landwerlin1-2/+4
We always close the in_fence at the end the anv_cmd_buffer_execbuf() so when we take it from the semaphore, let's not forget to invalidate it. Note that the code leaks the fence_in if we get any error before reaching the close(). Let's fix that in another patch or better, rewrite the whole thing! v2: drop redundant fd = -1 (Jason) v3: Update commit message (Jason) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (cherry picked from commit 048f0690ee4b39f865d4d6ad82a6c0290dcaaf41)
2019-11-13mesa: check framebuffer completeness only after state updateLionel Landwerlin1-6/+6
The change made in 88d665830f27 ("mesa: check draw buffer completeness on glClearBufferfi/glClearBufferiv") correctly updated the state prior to checking the framebuffer completeness on glClearBufferiv but not in glClearBufferfi. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Fixes: 88d665830f27 ("mesa: check draw buffer completeness on glClearBufferfi/glClearBufferiv") Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/2072 (cherry picked from commit f93bb903020bac21a36e240b2c19a4733c2405ee)
2019-11-13egl: avoid local modifications for eglext.h Khronos standard header fileLaurent Carlier2-11/+11
Move differences in eglextchromium.h header file, then provide the same header than libglvnd-1.2 So program that omit to include eglextchromium.h will fail to build with both mesa and libglvnd headers. Fixes: a0a8109f "include: add the definition of EGL_EXT_image_flush_external" Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Eric Engestrom <eric.engestrom@intel.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> (cherry picked from commit 57acf921e28eebb76e22f9abb96008885ec44441)
2019-11-13egl: move #include of local headers out of Khronos headersEric Engestrom3-3/+4
Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Eric Engestrom <eric.engestrom@intel.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> (cherry picked from commit eaf43966027cf9654e91ca57aecc8f5a65b58f49)