summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* meson: Add a "prefer_iris" build optionKenneth Graunke2019-12-023-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | Enabling this option makes Intel Gen8-11 hardware load the 'iris' driver by default instead of the older 'i965' driver. Regardless of how this option is set, users can still override which driver the loader selects via two methods. The first is to create a ~/.drirc or /etc/drirc file with the following snippet: <driconf> <device driver="loader" kernel_driver="i915"> <option name="dri_driver" value="i965" /> </device> </driconf> The other option is to set an environment variable: export MESA_LOADER_DRIVER_OVERRIDE=i965 For now, "prefer_iris" defaults to i965 (the historical choice). A separate future patch will change the default driver to iris. Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1893 Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* turnip: fix display wsi fence timing outJonathan Marek2019-12-021-0/+11
| | | | | | | Fixes: df9f2adf ("turnip: add display wsi") Signed-off-by: Jonathan Marek <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* nir/lower_io_to_vector: don't create arrays when not neededRhys Perry2019-12-021-1/+7
| | | | | | | | | | | | Some backends require that there are no array varyings. If there were no arrays in the input shader, the pass shouldn't have to create new ones. Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2103 Fixes: bcd14756eec ('nir/lower_io_to_vector: add flat mode') Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Connor Abbott <[email protected]>
* aco: fix block_kind_discard s_andn2 definition to execRhys Perry2019-12-021-0/+2
| | | | | | | | | | | Improves generated code of dEQP-VK.graphicsfuzz.disc-and-add-in-func-in-loop because a loop exit phi can then be fixed to exec, removing copies and improving jump threading. No pipeline-db changes. Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: handle loop exit and IF merge phis with break/discardRhys Perry2019-12-022-54/+80
| | | | | | | | | | | | | | | | | ACO considers discards jumps and creates edges in the CFG for them but NIR does neither of these. This can be fixed instead by keeping track of whether a side of an IF had a break/discard, but this doesn't solve the issue with discards affecting loop exit phis. So this reworks phi handling a bit. Fixes these tests: dEQP-VK.graphicsfuzz.disc-and-add-in-func-in-loop dEQP-VK.graphicsfuzz.loop-call-discard dEQP-VK.graphicsfuzz.complex-nested-loops-and-call Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: validate the CFGRhys Perry2019-12-021-0/+31
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* mesa/main/util: moving gallium u_mm to util, remove main/mmAlejandro Piñeiro2019-12-0211-387/+10
| | | | | | | | | | | | | | | | | | | | Right now there are two copies of mm: * mesa/main/mm.[ch] * gallium/auxiliary/util/u_mm.[ch] At some point they splitted, and from the commit message it was not clear why it was not possible to have only one copy at a common place. Taking into account that was several years ago, Im assuming that it was not possible then. This change would allow to have one copy of the same code, and also being able to use that code out of mesa/main or gallium, if needed. This commit moves u_mm and removes mm, as u_mm has slightly more changes. Reviewed-by: Jose Fonseca <[email protected]>
* radv: set writes_memory for global memory stores/atomicsRhys Perry2019-12-021-8/+25
| | | | | | Fixes: 13ab63bb62b ('radv: Implement VK_EXT_buffer_device_address.') Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* ac/llvm: improve sync scope for global atomicsRhys Perry2019-12-021-0/+3
| | | | | | | Stronger ordering is implemented in SPIRV->NIR with barriers. Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]>
* ac/llvm: fix pointer type for global atomicsRhys Perry2019-12-021-0/+6
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]>
* iris: Map FXT1 texture formatsKenneth Graunke2019-12-011-0/+2
| | | | | | | | | This exposes GL_TDFX_texture_compression_FXT1 support. It's ancient, only Intel GPUs appear to support it, and I seriously doubt anybody uses it. But i965 supports it, and it's trivial to do, so we may as well support it in the new iris driver as well. Reviewed-by: Eric Anholt <[email protected]>
* st/mesa: Add GL_TDFX_texture_compression_FXT1 supportKenneth Graunke2019-12-015-5/+11
| | | | | | | | | | | | | Eric recently added PIPE_FORMAT_FXT1_RGB[A] as part of his format unification work. This was really most of the work of implementing the extension. We just need to handle it in a couple of places and expose the extension. v2: Reject the new formats in llvmpipe_is_format_supported to prevent crashes because it doesn't know how to handle the new formats. Reviewed-by: Marek Olšák <[email protected]> [v1] Reviewed-by: Eric Anholt <[email protected]> [v1]
* nir/samplers: don't zero samplers_used/txf.Dave Airlie2019-12-021-3/+0
| | | | | | | | | | | This allows this pass to be run multiple times and the results are just or'ed together. It fixes on test on llvmpipe nir, and regresses none. Suggested by Kenneth Reviewed-by: Marek Olšák <[email protected]>
* aco: drop useless lowering of deref operations for shared memorySamuel Pitoiset2019-11-291-5/+1
| | | | | | | Moved to RADV. No pipeline-db changes. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* radv,ac/nir: lower deref operations for shared memorySamuel Pitoiset2019-11-292-22/+45
| | | | | | | | | | | | | | | | | This shouldn't introduce any functional changes for RadeonSI when NIR is enabled because these operations are already lowered. pipeline-db (NAVI10/LLVM): SGPRS: 9043 -> 9051 (0.09 %) VGPRS: 7272 -> 7292 (0.28 %) Code Size: 638892 -> 621628 (-2.70 %) bytes LDS: 1333 -> 1331 (-0.15 %) blocks Max Waves: 1614 -> 1608 (-0.37 %) Found this while glancing at some F12019 shaders. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
* aco: fix a couple of value numbering issuesDaniel Schürmann2019-11-291-11/+18
| | | | | | Fixes: 3a20ef4a3299fddc886f9d5908d8b3952dd63a54 'aco: refactor value numbering' Reviewed-by: Rhys Perry <[email protected]>
* aco: don't split live-ranges of linear VGPRsDaniel Schürmann2019-11-291-4/+11
| | | | | | Fixes: 93c8ebfa780ebd1495095e794731881aef29e7d3 'aco: Initial commit of independent AMD compiler' Reviewed-by: Rhys Perry <[email protected]>
* aco: implement global atomicsRhys Perry2019-11-292-0/+107
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: improve FLAT/GLOBAL schedulingRhys Perry2019-11-295-14/+30
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: don't enable store_global for helper invocationsRhys Perry2019-11-294-0/+8
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: fix SADDR with FLAT on GFX10Rhys Perry2019-11-291-1/+1
| | | | | | | | The reference guide is incorrect and SADDR is actually used with FLAT on GFX10. Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: fix assembly of FLAT/GLOBAL atomicsRhys Perry2019-11-291-1/+1
| | | | | | | They can take both a definition and data operand Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: fix GFX10 opcodes for some global/flat atomicsRhys Perry2019-11-291-6/+6
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: improve WAR hazard workaround with >64bit storesRhys Perry2019-11-291-9/+15
| | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: add v_nop inbetween exec write and VMEM/DS/FLATRhys Perry2019-11-291-5/+8
| | | | | | | | LLVM and the proprietary compiler seem to do this Fixes: b01847bd9 ("aco/gfx10: Fix mitigation of VMEMtoScalarWriteHazard.") Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: fix incorrect cast in parse_wait_instr()Rhys Perry2019-11-291-1/+1
| | | | | | | s_waitcnt is SOPP, not SOPK Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: fix i2i64Rhys Perry2019-11-291-2/+6
| | | | | | Fixes: 93c8ebfa ('aco: Initial commit of independent AMD compiler') Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* aco: propagate p_wqm on an image_sample's coordinate p_create_vectorRhys Perry2019-11-291-9/+12
| | | | | | | Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2156 Fixes: 93c8ebfa780 ('aco: Initial commit of independent AMD compiler') Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]>
* etnaviv: remove dead codeChristian Gmeiner2019-11-291-3/+0
| | | | | | | | | | ptiled is always NULL so the if statement is useless. CoverityID: 1415572 Fixes: b9627765303 ("etnaviv: rework compatible render base") CC: <[email protected]> Reviewed-by: Jonathan Marek <[email protected]> Signed-off-by: Christian Gmeiner <[email protected]>
* etnaviv: handle integer case for GENERIC_ATTRIB_SCALEChristian Gmeiner2019-11-291-1/+5
| | | | | Reviewed-by: Jonathan Marek <[email protected]> Signed-off-by: Christian Gmeiner <[email protected]>
* etnaviv: fix R10G10B10A2 vertex format entriesChristian Gmeiner2019-11-291-4/+4
| | | | | Reviewed-by: Jonathan Marek <[email protected]> Signed-off-by: Christian Gmeiner <[email protected]>
* etnaviv: use NORMALIZE_SIGN_EXTENDChristian Gmeiner2019-11-291-1/+1
| | | | | | | | | | | | | | | | | | | The blob driver does something like this for all vertex formats: if (normalize) { if (OPENGL_ES30) val = VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE_SIGN_EXTEND; else val = VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE_ON; } else { val = VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE_OFF; } As there is no way to get to that information in gallium we always assume OPENGL_ES30. Reviewed-by: Jonathan Marek <[email protected]> Signed-off-by: Christian Gmeiner <[email protected]>
* etnaviv: fix integer vertex formatsChristian Gmeiner2019-11-291-24/+24
| | | | | Reviewed-by: Jonathan Marek <[email protected]> Signed-off-by: Christian Gmeiner <[email protected]>
* i965: update Makefile.sources for perf changesJonathan Gray2019-11-291-2/+0
| | | | | | | | | | | | | | brw_performance_query_metrics.h was removed in 134e750e16bfc53480e0bba6f0ae3e1d2a7fb87c and brw_performance_query.h was removed in 8ae6667992ccca41d08884d863b8aeb22a4c4e65 remove reference to these files from Makefile.sources Signed-off-by: Jonathan Gray <[email protected]> Fixes: 134e750e16bfc53480e0 ("i965: extract performance query metrics") Fixes: 8ae6667992ccca41d088 ("intel/perf: move query_object into perf") Reviewed-by: Eric Engestrom <[email protected]>
* scons: Bump C standard to gnu11 on macOS 10.15.Vinson Lee2019-11-291-1/+4
| | | | | | | | | | | | | | | | | | | | | | | Fix build error on macOS 10.15 Catalina. src/util/u_queue.c:179:7: error: implicit declaration of function 'timespec_get' is invalid in C99 [-Werror,-Wimplicit-function-declaration] timespec_get(&ts, TIME_UTC); ^ timespec_get needs C11 starting with macOS 10.15. /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h 193 #if (__DARWIN_C_LEVEL >= __DARWIN_C_FULL) && \ 194 ((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ 195 (defined(__cplusplus) && __cplusplus >= 201703L)) 196 /* ISO/IEC 9899:201x 7.27.2.5 The timespec_get function */ 197 #define TIME_UTC 1 /* time elapsed since epoch */ 198 __API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0), watchos(6.0)) 199 int timespec_get(struct timespec *ts, int base); 200 #endif Signed-off-by: Vinson Lee <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* panfrost: Make sure we reset the damage region of RTs at flush timeBoris Brezillon2019-11-293-1/+23
| | | | | | | | | | | | | | | | | We must reset the damage info of our render targets here even though a damage reset normally happens when the DRI layer swaps buffers. That's because there can be implicit flushes the GL app is not aware of, and those might impact the damage region: if part of the damaged portion is drawn during those implicit flushes, you have to reload those areas before next draws are pushed, and since the driver can't easily know what's been modified by the draws it flushed, the easiest solution is to reload everything. Reported-by: Carsten Haitzler <[email protected]> Fixes: 65ae86b85422 ("panfrost: Add support for KHR_partial_update()") Cc: <[email protected]> Signed-off-by: Boris Brezillon <[email protected]> Acked-by: Alyssa Rosenzweig <[email protected]>
* gallium: Fix the ->set_damage_region() implementationBoris Brezillon2019-11-293-4/+35
| | | | | | | | | | | | | | BACK_LEFT attachment can be outdated when the user calls KHR_partial_update() (->lastStamp != ->texture_stamp), leading to a damage region update on the wrong pipe_resource object. Let's delay the ->set_damage_region() call until the attachments are updated when we're in that case. Reported-by: Carsten Haitzler <[email protected]> Fixes: 492ffbed63a2 ("st/dri2: Implement DRI2bufferDamageExtension") Cc: <[email protected]> Signed-off-by: Boris Brezillon <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* zink: silence coverity errorErik Faye-Lund2019-11-291-1/+1
| | | | | | | | Coverity doesn't know that we always have coordinates if we have lod. To avoid annoying errors, let's just zero-initialize this. CoverityID: 1455202 Reviewed-by: Dave Airlie <[email protected]>
* zink: error-check right variableErik Faye-Lund2019-11-291-1/+1
| | | | | | | That's not the value we just allocated... CoverityID: 1455177 Reviewed-by: Dave Airlie <[email protected]>
* zink: avoid NULL-derefErik Faye-Lund2019-11-291-2/+1
| | | | | | | | Same story as the previous two commits; these functions dereference the memory they are pointed at. We can't do that. CoverityID: 1455180 Reviewed-by: Dave Airlie <[email protected]>
* zink: avoid NULL-derefErik Faye-Lund2019-11-291-2/+1
| | | | | | | | Similar to the previous commit, pipe_resource_reference also dereference the memory pointed at. Let's avoid it. CoverityID: 1455198 Reviewed-by: Dave Airlie <[email protected]>
* zink: avoid NULL-derefErik Faye-Lund2019-11-291-2/+1
| | | | | | | | | zink_render_pass_reference will dereference the memory 'dst' points at, which can't really go well. All we want to do here is to increase the reference-count, so let's use a different helper for that instead. CoverityID: 1455200 Reviewed-by: Dave Airlie <[email protected]>
* zink: handle calloc-failureErik Faye-Lund2019-11-291-0/+2
| | | | | | | | In case we fail to allocate the context, we should notice and fail gracefully. CoverityID: 1455193 Reviewed-by: Dave Airlie <[email protected]>
* zink: do not try to destroy NULL-fenceErik Faye-Lund2019-11-291-1/+1
| | | | | | | | destroy_fence doesn't handle NULL-pointers gracefully. So let's avoid hitting that code-path, by simply returning NULL early here instead. CoverityID: 1455179 Reviewed-by: Dave Airlie <[email protected]>
* zink: delete query rather than allocating a new oneErik Faye-Lund2019-11-291-1/+1
| | | | | | | | | | It seems I had some fat fingers when writing this function, and I accidentally ended up allocating a new query and immediately trying to delete an uninitialized pool instead of just deleting the pool of the query that was passed. CoverityID: 1455196 Reviewed-by: Dave Airlie <[email protected]>
* zink: fix crash when restoring sampler-statesErik Faye-Lund2019-11-293-1/+3
| | | | | | | | | | | | When I changed to heap-allocated sampler-objects, I missed the code-path that restores sampler-states after the blitter; it needs an array of pointers, not an array of VkSampler objects to behave. This fixes spec@arb_texture_cube_map@copyteximage for me. Signed-off-by: Erik Faye-Lund <[email protected]> Fixes: 5ea787950f6 ("zink: heap-allocate samplers objects") Reviewed-by: Dave Airlie <[email protected]>
* zink: reject invalid sample-countsErik Faye-Lund2019-11-291-0/+2
| | | | | | | | | Vulkan only allows power-of-two sample counts. We already kinda checked for this, but forgot to validate the result in the end. Let's check the result and error properly. Signed-off-by: Erik Faye-Lund <[email protected]> Reviewed-by: Dave Airlie <[email protected]>
* zink: use true/false instead of TRUE/FALSEErik Faye-Lund2019-11-291-16/+16
| | | | Reviewed-by: Dave Airlie <[email protected]>
* st/mesa: unmap pbo after updating cacheErik Faye-Lund2019-11-291-2/+2
| | | | | | | Unmapping first leads to accessing an invalid pointer. So let's switch these lines around. Reviewed-by: Marek Olšák <[email protected]>
* panfrost: Fix gnu-empty-initializer build errors.Vinson Lee2019-11-283-5/+5
| | | | | | Fixes: a24d6fbae60c ("meson: Add -Werror=gnu-empty-initializer to MSVC compat args") Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]>