aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* llvmpipe: add framebuffer fetching support (v1.1)HEADmasterDave Airlie2020-07-206-123/+256
| | | | | | | | v1.1: Merge two if blocks (Roland) Reviewed-by: Roland Scheidegger <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5914>
* llvmpipe/cs: respect render conditionDave Airlie2020-07-191-0/+4
| | | | | | | | | Running complete CTS turned up a missing cond render. Fixes KHR-GL45.compute_shader.conditional-dispatching Reviewed-by: Roland Scheidegger <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5944>
* freedreno/ir3/ra: fix array conflicts for split/mergedRob Clark2020-07-181-18/+61
| | | | | | | | | | | | | | Properly handle the difference between split and merged register file when determining where arrays can fit without conflicting with other arrays or pre-colored instructions. 1) if not mergedregs, only consider other things with same precision as potentially conflicting 2) if mergedregs, calculate everything in therms of half-regs and convert back to fullregs in the end Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno/ir3/ra: assign vreg names to all array elementsRob Clark2020-07-181-29/+9
| | | | | | | | | | | | | | | | | | | | | We shouldn't divide-by-two for half-reg arrays. We set the proper node interference class, based on `arr->half`. Fixes a RA fail with 16b arrays: src/freedreno/ir3/ir3_ra.c:633: name_to_array: Assertion `!"invalid array name"' failed. Caused by use/def iterators returning `arr->length` vreg namess, but only assigning the array half that many names. Also, since we are assigning unique vreg names to each array element, there is no need to try and convert from half-reg to it's conflicting full reg when pre-coloring the array elements. Getting us closer to having half-arrays work sanely with split-register-file (a5xx and earlier). Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno/ir3/ra: debug msgs tweakRob Clark2020-07-181-14/+21
| | | | | | | | Print out the assigned vreg names earlier. Also print the few special nodes. Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno/ir3: fix half-reg array storesRob Clark2020-07-181-3/+11
| | | | | Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno/ir3: set array precision on creationRob Clark2020-07-182-6/+8
| | | | | Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno/ir3/parser: half-precision relative regsRob Clark2020-07-182-0/+7
| | | | | Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno: whitespace fixRob Clark2020-07-181-3/+3
| | | | | Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* freedreno: small comment re-wordRob Clark2020-07-181-1/+1
| | | | | Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5957>
* zink: free all ntv allocations after creating shader moduleMike Blumenkrantz2020-07-181-0/+3
| | | | | | | | these are all fairly large sources of leaks Reviewed-by: Antonio Caggiano <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5887>
* zink: free pipeline cache during program destroyMike Blumenkrantz2020-07-181-5/+15
| | | | | | | | more leaks Reviewed-by: Antonio Caggiano <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5887>
* zink: destroy descriptor pools on context destroyMike Blumenkrantz2020-07-181-1/+3
| | | | | | | | this is a big leak Reviewed-by: Antonio Caggiano <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5887>
* zink: destroy gfx program when a shader is freedMike Blumenkrantz2020-07-186-15/+17
| | | | | | | | | | | | there's no sense in having these objects sitting around when they can never be used again requires adding a zink_context* pointer to each program in order to prune the hash table entry Reviewed-by: Antonio Caggiano <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5887>
* android: panfrost/encoder: add libmesa_nir static dependencyMauro Rossi2020-07-181-0/+1
| | | | | | | | | | | | | | | Fixes the following build error: In file included from external/mesa/src/panfrost/encoder/pan_blit.c:34: In file included from external/mesa/src/panfrost/encoder/../midgard/midgard_compile.h:27: external/mesa/src/compiler/nir/nir.h:52:10: fatal error: 'nir_opcodes.h' file not found ^~~~~~~~~~~~~~~ 1 error generated. Fixes: 293f251871b ("panfrost: Use Midgard-specific reloads") Signed-off-by: Mauro Rossi <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5961>
* panfrost: Fix calls to panfrost_flush_batches_accessing_boIcecream952020-07-182-2/+2
| | | | | | | | The function now takes a bool flush_readers instead of an access type, but some calls were not updated. Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5962>
* panfrost: Make panfrost_bo_wait take a wait_readers boolIcecream952020-07-184-20/+10
| | | | | | | | | panfrost_bo_wait is often used after panfrost_flush_batches_accessing_bo, so make them take similar arguments for consistency. Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5962>
* freedreno/ir3: Add unit tests for derivatives disasm.Eric Anholt2020-07-181-0/+8
| | | | | | | Since I was going back to look at fine derivs again, add some tests of instruction encoding. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5699>
* freedreno/ir3: Fix duplicated fine derivatives instructions.Eric Anholt2020-07-186-12/+51
| | | | | | | | | | | | | legalize_block() can get run multiple times, which I didn't notice when adding fine derivs support. Other instruction clones change things such that the legalization won't trigger again, but that didn't apply to the DS.PP legalization. To keep someone else from tripping over this, split the one-shot legalization out of the iterative sync flag application. Fixes failures in dEQP-VK.glsl.derivate.dfdxfine.* Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3198 Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5699>
* amd/addrlib: Clean up unused colorFlags argumentBas Nieuwenhuizen2020-07-184-8/+0
| | | | | | | Cleanup. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5865>
* amd/common: Cache intra-tile addresses for retile map.Bas Nieuwenhuizen2020-07-181-43/+183
| | | | | | | | | | | | | | | | | | | | | | However complicated DCC addressing is it is still based on tiles. If we have the intra-tile offsets + tile dimensions we can expand that to the full image ourselves. Behavior around ~1080p on a 2500U: old: 30-60 ms on every miss new: 5 ms initally (miss in the tile cache) <0.5 ms afterwards The most common case is that the tile cache only contains data for 2 tiles, which for Raven/Renoir/Navi14 will be 4 KiB each, so the size increase is fairly modest. Reviewed-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5865>
* aco: use s_waitcnt_depctr to mitigate VMEMtoScalarWriteHazardRhys Perry2020-07-181-3/+10
| | | | | | | | | Apparently this is potentially faster than v_nop: https://reviews.llvm.org/D83872 Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5923>
* aco: properly recognize that s_waitcnt mitigates VMEMtoScalarWriteHazardRhys Perry2020-07-181-6/+8
| | | | | | | | | | | fossil-db (Navi): Totals from 555 (0.41% of 135946) affected shaders: CodeSize: 1005716 -> 1003400 (-0.23%) Instrs: 195326 -> 194744 (-0.30%) Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5923>
* meson: Enable GCing of functions and data from compilation units by default.Eric Anholt2020-07-171-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally, the linker will pull in any compilation unit (aka .c file) from a static lib (such as our shared util code) that is depended on by the code linking against it. Since that code is already compiled, the .text section is allowed to jump anywhere in .text, and the compiler can't garbage collect unused functions inside of a compile unit. Teasing callgraphs apart so that normal compilation-unit-level GCing can reduce driver size hurts the logical organization of the code and is difficult. As an example, once I'd split the format pack/unpack tables, I had to split out util_format_read/write() from util_format.c to avoid pulling in pack/unpack. But even then it didn't help, because it turns out turnip's pack calls pull in util_format_bptc.c for bptc packing, but that file also includes the unpack impls, and those internally call util_format_unpack, and thus we pulled in all of unpack. Splitting all of this to separate files makes code harder to find and maintain, and is a waste of dev time. By setting these compiler flags, the compiler puts each function and data symbol in a separate ELF section and the linker can then safely GC unused text and data sections from a compile unit that gets pulled in. There's a bit of a space cost due to having those separate sections, but it ends up being a huge win in disk space on my personal release driver builds: - i965_dri.so -213k - x86 gallium dri.so -430k - libvulkan_intel.so -272k - aarch64 gallium dri.so -330k - libvulkan_freedreno.so -783k No difference on iris drawoverhead -compat -test 1 on my skylake (n=60) Effect on debugoptimized build times (n=5) touch nir_lower_io.c build time (bfd) +15.999% +/- 3.80377% touch freedreno fd6_gmem.c build time (bfd) +13.5294% +/- 4.86363% touch nir_lower_io.c build time (lld) no change touch freedreno fd6_gmem.c build time (lld) +2.45375% +/- 2.2383% Reviewed-by: Eric Engestrom <[email protected]> Acked-by: Adam Jackson <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5739>
* panfrost: Enable FP16 by defaultAlyssa Rosenzweig2020-07-172-5/+5
| | | | | | | | | | | | | | I see no reason to hide this. The small hit in cycle count is offset in practice by the increase in thread count. So let's ship it and get some testing. If this regresses a workload: 1. Open an issue on the tracker and attach an apitrace. 2. In the meantime set PAN_MESA_DEBUG=nofp16 to override. Signed-off-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5960>
* gitlab-ci: re-enable all a630 jobsRob Clark2020-07-171-9/+5
| | | | | | | | | | | | I haven't noticed tftp boot issues in last few days, not sure if they where just a fluke on Mon or if it is somehow related to # of jobs we run (ie. having more of the c630 runners powered up and running more of the time). Let's turn them back on and see what happens. Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5952>
* freedreno/a2xx: Fix compiler warning in disasm.Eric Anholt2020-07-171-1/+2
| | | | | | | | | | | | warning: converting a packed ‘instr_cf_t’ {aka ‘union <anonymous>’} pointer (alignment 1) to a ‘uint16_t’ {aka ‘short unsigned int’} pointer (alignment 2) may result in an unaligned pointer value [-Waddress-of-packed-member] We may know that we'll only ever have aligned instr_cf_ts, but gcc doesn't. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5955>
* gitlab-ci: Re-add kernels for bare-metalTomeu Vizoso2020-07-174-16/+73
| | | | | | | | | | | I mistakenly removed what I thought were remnants of when Freedreno used LAVA for their DUTs. lava_arm.sh is used for baremetal, so re-add that code. Fixes: dcd171f5e9bd ("gitlab-ci: More stable URL for kernel and ramdisk artifacts, for LAVA") Signed-off-by: Tomeu Vizoso <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5839>
* nir: Set the alignment for SSBO loweringIcecream952020-07-171-0/+3
| | | | | | | | | | | The alignment can just be copied from the source intrinsic. Fixes the assertion nir_intrinsic_align_offset(instr) < nir_intrinsic_align_mul(instr) Reviewed-by: Karol Herbst <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5949>
* intel/perf: Move perf query register programming to static tables.Eric Anholt2020-07-174-12/+21
| | | | | | | | | | | And now that they're static tables, we don't need to ralloc a copy in non-shared memory. Saves ~210k in the built intel drivers. Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1048434 Reviewed-by: Lionel Landwerlin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5829>
* intel/perf: Fix unused var warning in release builds.Eric Anholt2020-07-171-1/+1
| | | | | Reviewed-by: Lionel Landwerlin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5829>
* intel: Fix release-build warnings about sf_entry_size.Eric Anholt2020-07-171-1/+1
| | | | | | | In one side of the ifdef it's only used in an assert. Reviewed-by: Lionel Landwerlin <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5829>
* zink: use ralloc for spirv_builder as wellErik Faye-Lund2020-07-173-56/+64
| | | | | Reviewed-By: Mike Blumenkrantz <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5954>
* zink: pass mem_ctx to ralloc_size-callErik Faye-Lund2020-07-171-1/+1
| | | | | Reviewed-By: Mike Blumenkrantz <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5954>
* zink: use ralloc for plain malloc-callsErik Faye-Lund2020-07-171-5/+6
| | | | | Reviewed-By: Mike Blumenkrantz <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5954>
* zink: use ralloc in nir-to-spirvErik Faye-Lund2020-07-171-8/+8
| | | | | Reviewed-By: Mike Blumenkrantz <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5954>
* radv: enable more float_controls featuresRhys Perry2020-07-171-11/+10
| | | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5773>
* aco: set tcs_in_out_eq=false if float controls of VS and TCS stages differRhys Perry2020-07-171-4/+9
| | | | | | | | | | | | Otherwise, we might have both VS and TCS code in the same block but float controls are set per-block. We also rely on VS code not dominating TCS code for the optimizer to work correctly. Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5773>
* aco: fix nir_op_f2f16_rtne with non-default rounding modesRhys Perry2020-07-173-1/+19
| | | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5773>
* aco: flush denormals before fp16 fabs/fneg if neededRhys Perry2020-07-171-0/+4
| | | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5773>
* aco: use s_round_mode/s_denorm_modeRhys Perry2020-07-172-15/+34
| | | | | | Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5773>
* panfrost: Set depth_enabled when stencil is enabledIcecream952020-07-171-4/+11
| | | | | | | | | | | Fixes square circles in the KiCad 3D viewer. v2: Cleanup a bit, add a comment, and handle the fs->writes_stencil case to be pedantic (Alyssa). Reported-by: Urja Rannikko <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5946>
* radv: return better Vulkan error codes when VkQueueSubmit() failsSamuel Pitoiset2020-07-173-136/+159
| | | | | | | | The driver shouldn't abort when a CS submission fails. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5876>
* radv: improve the error messages when a CS submission failedSamuel Pitoiset2020-07-171-21/+10
| | | | | | | | | While we are at it, do not duplicate the error messages for the three different submission paths. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5876>
* radv: remove one useless goto in radv_queue_submit_deferred()Samuel Pitoiset2020-07-171-3/+0
| | | | | | Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5876>
* panfrost: Report TEXTURE_BUFFER_OBJECTS cap when gl3 flag setIcecream952020-07-171-1/+1
| | | | | | | | OpenGL 3.3 is now reported again when PAN_MESA_DEBUG=gl3 is set. Fixes: 96fa8d70bc1 ("panfrost: Report CAPs more honestly") Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5947>
* nir: Fix lower_two_sided_color when the face is an inputIcecream952020-07-171-1/+35
| | | | | | | | | | | | Fixes the two-sided-lighting and vertex-program-two-side piglit tests on Panfrost. v2: Use an existing variable for gl_FrontFacing if present. Reviewed-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Rob Clark <[email protected]> Tested-by: Urja Rannikko <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5915>
* nir: Add a face_sysval argument to nir_lower_two_sided_colorIcecream952020-07-176-6/+7
| | | | | | | | | | This is needed for handling drivers that use an input for loading the face, for example Panfrost with Midgard GPUs. Reviewed-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Rob Clark <[email protected]> Tested-by: Urja Rannikko <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5915>
* panfrost: Do per-sample shading when outputs are readIcecream952020-07-171-2/+7
| | | | | | | Fixes dEQP-GLES31.functional.blend_equation_advanced.msaa.* Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5930>
* pan/mdg: Do per-sample framebuffer loadsIcecream952020-07-173-3/+24
| | | | | | | | EXT_shader_framebuffer_fetch requires the fetched value to be per-sample, so we need to load the sample id when in a fragment shader. Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5930>