We avoid adding unconditionally the 64-bytes padding to all usages
of the vulkan memory allocations. The readahead padding is only added
for buffers/images with USAGE_TRANSFER_SRC_BIT usage enabled as this
is enough for having a full vk-cts without reported MMU TFU errors.
vk-cts doesn't exercise the added image memory requirements codepath to
handle this readahead. This is because the required 64-bytes image
alignments for images with flag VK_IMAGE_USAGE_TRANSFER_SRC_BIT.
But the alignment didn't cover when the image is already aligned to
64-bytes at the end of the memory page.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36159>
According to screen.rst, sample_count of 1 is the same as a sample_count
of 0, neither of which are multi-sampling. We only want to include
formats that support multi-sampling when calculating max samples,
otherwise we can't support the combination of floating-point textures
and multi-sampling on DX9-class GPUs.
...There's one special-case, though; FakeMSAA, which is implemented as
sample_count = 1. In that case, we actually need to check for a single
sample. So let's check for that first, to figure out what the actual
min value is. Ugh, this is hairy.
This brings back GL_EXT_framebuffer_multisample and
GL_EXT_framebuffer_multisample_blit_scaled on R300, and should get
Crocus back to GL 3.x as it was before.
Fixes: f56443ac ("st/mesa: search for smallest supported sample-count")
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36156>
When using vector parameter type in Rusticl with LLVMpipe backend, the
generated LLVM IR function definition part uses an Array of Vector
(correct type) LLVM type, but the caller generates a Vector of Vector
(invalid type). This mismatch causes three problems:
1. Type check fails in debug build;
2. The dumped LLVM BC cannot be disassembled due to Invalid Type;
3. Potential faulty JIT code.
This bugfix construct an Array of Vector for NIR function call by a new
`lp_build_gather_array` function. Special thanks to Zhichao Guan
<vbcpascal@outlook.com> for the joint effort in this bugfix, and
Jose Fonseca for sggestions.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36287>
No timeout was set, so the project-wide default of 1h was applied.
radv-raven-vkd3d had to be excluded as it caused lava_job_submitter.py
to fail (without any error message).
All the jobs touched here take between 2 and 4 minutes to run total, and
between 40 and 100 sec of test time.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36305>
See the comment at the top file :-)
The ideas in this pass are based on LLVM. The implementation itself is from
scratch because have you /tried/ to read that thing?
Because LLVM and therefore prop drivers do these optimizations, this should help
narrow Mesa's performance gap with the blobs.
This probably needs some tuning for best results on other ISAs, but the stats
for AGX speak for themselves, see next commits.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Mel Henning <mhenning@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36147>
The intent is to provide an easy way to measure the impact of an
optimization, not by measuring the whole workload completion time
but also by measuring certain chunks of the workload like command
buffers, renderpasses, or even separate draws.
A moderate perf win in a rare case may not translate into statistically
signifacant overall result. An optimization also may hurt perf in some
cases and help in other which is also hard to judge from overall perf.
For best results pin cpu/gpu frequencies and disable gpu suspend.
Exclude all unnecessary tracepoints via TU_GPU_TRACEPOINT.
Usage:
u_trace_gather.py gather_all \
--loops 1 --launcher "renderdoccmd replay --loops 12" \
--traces-list /path/to/traces.txt \
--traces-dir /path/to/dir/with/traces/ \
--results /path/to/results/ \
--alias new-shiny-opt
u_trace_compare.py compare \
--results /path/to/results/ \
--loops-merged true \
--alias-a default \
--alias-b new-shiny-opt \
--event-start start_render_pass \
--event-end end_render_pass \
--filter "int(params['drawCount']) > 10"
u_trace_compare.py details \
--results /path/to/results/ \
--trace-name test.rdc \
--alias default \
--event-start start_render_pass \
--event-end end_render_pass
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16914>
The android-cts-runner.sh and android-deqp-runner.sh scripts are usually
sourced from android-runner.sh which then propagates the EXIT_CODE value
set in the scripts.
However this scheme does not cover the case where android-cts-runner.sh
and android-deqp-runner.sh are called directly, in that case they will
not return the previously saved EXIT_CODE appropriately in the last
command.
Fix that, allowing developers to call the scripts directly with the
intended behavior.
After this change android-runner.sh does not need to know about the
EXIT_CODE variable anymore, which was a slight layering violation, but
it can just rely on the exit code of the last executed commands.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36286>
The Xe kernel driver doesn't allow vm_bind on compressed bo
if it has user pointer. And we probably shouldn't enable CCS
compression on memory in any case.
This change is necessary to prevent failures once we adjust the
priority of compression PAT entries in a following commit:
Vulkan CTS:
dEQP-VK.api.buffer_marker.compute.external_host_mem.top_of_pipe.
memory_dep.buffer_copy
dEQP-VK.memory.external_memory_host.simple_allocation.
minImportedHostPointerAlignment_x3
anv_kmd_backend.c:308: xe_vm_bind_op: Assertion
`errno_ != EINVAL' failed.
Signed-off-by: Jianxun Zhang <jianxun.zhang@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36275>
programs start with one reference per contained shader. the only other
places they can be referenced are:
* batch refs
* merged separable programs during compile
this unref did not match any of those cases and caused early deletion
caselist:
dEQP-GLES31.functional.atomic_counter.inc.8_counters_5_calls_10_threads
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.linear_mipmap_linear_linear_mirror_repeat
dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo.rgb32i_cube_array
dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo.rgb8_image_height_cube_array
dEQP-GLES31.functional.texture.specification.texsubimage3d_depth.depth24_stencil8_cube_array
dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_2_color
dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_attribs_instanced_binding
cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36294>
For example, divergence analysis can call nir_print_instr with an
instruction that doesn't have a block set. When that happens,
print_state::shader will be NULL.
I stumbled on this while testing !36147.
v2: Use nir_instr::has_debug_info instead. Suggested by Konstantin.
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Fixes: ce0f30b230 ("nir: Add variable debug info to instructions")
Fixes: 3aeab4ce40 ("nir/print: Do not print debug information when gathering it")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36267>
The validation settings file must be named
$GPU_VERSION-validation-settings.txt for deqp-runner.sh to use it.
Enable Vulkan Validation Layers for the two RADV jobs that commit 5fd0b634d4
("zink: add VVL for RADV jobs") attempted to enable, as well as the new
Cezanne job.
Also add filters for VUIDs that error due to unrecognized extensions when
the VVL version in CI is too old.
Signed-off-by: Valentine Burley <valentine.burley@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35717>