Adam Jackson
2fc11e8a05
drisw: Cache the depth of the X drawable
...
This is not always ->rgbBits, because there are cases where that could
be 32 but we're (legally) bound to a depth-24 pixmap. The important
thing to have match here is the actual server-side notion of depth. You
can look this up (at modest expense) from the xlib visual info if the
fbconfig has a visual. But it might not, so if not, fetch it (at
slightly greater expense) from XGetGeometry. Do this at GLX drawable
creation so you don't have to do it on the SwapBuffers path.
Apparently this fixes glx/glx-swap-singlebuffer, which is unintentional
but quite pleasant.
Fixes : mesa/mesa#2291
Fixes: 90d58286
("drisw: Fix and simplify drawable setup")
Reviewed-by: Eric Anholt <eric@anholt.net >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3305 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3305 >
2020-01-23 23:03:13 +00:00
Eric Anholt
59f29fc845
turnip: Convert the rest of tu_cmd_buffer.c over to the new pack macros.
...
There are only a couple of hard cases left using pkt4, where the register
number to write is computed.
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455 >
2020-01-23 22:46:09 +00:00
Eric Anholt
d67100519e
turnip: Convert renderpass setup to the new register packing macros.
...
This gets a lot of the hard code converted over to the new macros,
resulting in (I feel) much more readable code with
LESS_SHOUTING_ABOUT_THE_REG(). I decided to consistently put the reg on
its own line, so that all the register names line up.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455 >
2020-01-23 22:46:09 +00:00
Eric Anholt
08837ea3d2
turnip: Port krh's packing macros from freedreno to tu.
...
This introduces some minor unpacking of the temporary fd_reg_pair structs
to code that previously was packing a whole register field.
In the pack wrapper in tu_cs.h, I added some explanatory docs, dropped the
relocs handling since we don't need it, and removed the extra regs[] in
the __ONE_REG() macro (which was causing gcc's optimizer to fall on its
face in my release build).
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455 >
2020-01-23 22:46:09 +00:00
Eric Anholt
d4bc3c93ea
freedreno: Fix OUT_REG() on address regs without a .bo supplied.
...
Sometimes you want to zero out an address by supplying a NULL BO, but
without this we would end up only emitting one dword. Increases size of
fd6_gmem.o by .8%, though it's not clear to me why (no obvious terrible
codegen happening)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455 >
2020-01-23 22:46:09 +00:00
Eric Anholt
c1327bc283
freedreno: Add some missing a6xx address declarations.
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455 >
2020-01-23 22:46:09 +00:00
Ian Romanick
4b7de92e5f
relnotes: Add GL_INTEL_shader_integer_functions2 and VK_INTEL_shader_integer_functions2
...
Suggested-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com >
2020-01-23 13:36:14 -08:00
Vasily Khoruzhick
beab31b9bb
lima: use imul for calculations with intrinsic src
...
It's source is supposed to be int, so we have to use integer
multiplication otherwise we'll get undefined result.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Erico Nunes <nunes.erico@gmail.com >
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3529 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3529 >
2020-01-23 21:16:22 +00:00
Vasily Khoruzhick
3c754900b5
nir: don't emit ishl in _nir_mul_imm() if backend doesn't support bitops
...
Otherwise we'll have to lower it later.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Reviewed-by: Erico Nunes <nunes.erico@gmail.com >
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3529 >
2020-01-23 21:16:22 +00:00
Icecream95
cf2c5a56a1
pan/decode: Rotate trace files
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
2020-01-23 20:46:38 +00:00
Icecream95
c1952779d6
pan/decode: Dump to a file
...
The file name is taken from the environment variable
PANDECODE_DUMP_FILE, defaulting to pandecode.dump if it is not set.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
2020-01-23 20:46:38 +00:00
Icecream95
be22c0789f
pan/decode: Support dumping to a file
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
2020-01-23 20:46:38 +00:00
Icecream95
20a8957397
pan/bifrost: Support disassembling to a file
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
2020-01-23 20:46:38 +00:00
Icecream95
968f36d1fc
pan/midgard: Support disassembling to a file
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
2020-01-23 20:46:38 +00:00
Icecream95
7b525ba02b
pan/midgard: Fix a memory leak in the disassembler
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3525 >
2020-01-23 20:46:38 +00:00
Eric Anholt
fbd9b4ce08
turnip: Fix execution of secondary cmd bufs with nothing in primary.
...
We want to finish off cmd emission in the primary CS and add its entry to
the IB, but regardless of whether there had been anything in the primary
CS to emit, we still need a reserved CS entry for the loop below.
Fixes crashes in dEQP-VK.binding_model.shader_access.secondary_cmd_buf.*
and many more in dEQP-VK.renderpass*
Reviewed-by: Jonathan Marek <jonathan@marek.ca >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3524 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3524 >
2020-01-23 20:27:26 +00:00
Alyssa Rosenzweig
d6d6ef2862
panfrost: Drop mysterious zero=0xFFFF field
...
It doesn't seem to affect any results and it's not at all clear if/why
the blob sometimes(?) sets it? So let's clean this up since this
solution isn't correct anyway.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3513 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3513 >
2020-01-23 19:59:58 +00:00
Icecream95
f8eb4441ae
pan/midgard: Fix bundle dynarray leak
...
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3496 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3496 >
2020-01-23 19:35:09 +00:00
Marek Olšák
43d9bac6f2
radeonsi: separate LLVM compilation from non-LLVM code
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
1a0890dcf3
radeonsi: change prototypes of si_is_multi_part_shader & si_is_merged_shader
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
7ce84b256e
radeonsi: make si_compile_shader return bool
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
be772182e0
radeonsi: make si_compile_llvm return bool
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
bd19d144a1
radeonsi: move more LLVM functions into si_shader_llvm.c
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
9a66f3d3e2
radeonsi: fold si_shader_context_set_ir into si_build_main_function
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
beacb414b9
radeonsi: move si_nir_build_llvm into si_shader_llvm.c
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
1c73d598eb
radeonsi: minor cleanup in si_shader_internal.h
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
ab33ba987a
radeonsi: move si_shader_llvm_build.c content into si_shader_llvm.c
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
cd5b99c541
radeonsi: move VS shader code into si_shader_llvm_vs.c
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
d1c42e2c6a
radeonsi: move non-LLVM code out of si_shader_llvm.c
...
There was also some redundant code in si_shader_nir.c
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Marek Olšák
594f085cfa
radeonsi: use ctx->ac. for types and integer constants
...
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3421 >
2020-01-23 19:10:21 +00:00
Jonathan Marek
8aa5d96864
turnip: simplify tu_physical_device_get_format_properties
...
Fixes the "bad VkImageTiling" error when tiling is
VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT.
Signed-off-by: Jonathan Marek <jonathan@marek.ca >
Acked-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3485 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3485 >
2020-01-23 18:34:07 +00:00
Jonathan Marek
b7e22b7a35
vulkan/wsi: remove unused image_get_modifier
...
Signed-off-by: Jonathan Marek <jonathan@marek.ca >
Acked-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3485 >
2020-01-23 18:34:07 +00:00
Jonathan Marek
e8afd40758
turnip: set linear tiling for scanout images
...
Fixes: 210e6887
"vulkan/wsi: Use the interface from the real modifiers extension"
Signed-off-by: Jonathan Marek <jonathan@marek.ca >
Acked-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3485 >
2020-01-23 18:34:07 +00:00
Jonathan Marek
11f6fba1c9
turnip: hook up GetImageDrmFormatModifierPropertiesEXT
...
Fixes: 210e6887
"vulkan/wsi: Use the interface from the real modifiers extension"
Signed-off-by: Jonathan Marek <jonathan@marek.ca >
Acked-by: Eric Anholt <eric@anholt.net >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3485 >
2020-01-23 18:34:07 +00:00
Guido Günther
c5334d2943
freedreno/drm: Don't miscalculate timeout
...
The current code overflows (s * 1000000000) for s >= 5 but that is
e.g. used in msm_bo_cpu_prep.
Signed-off-by: Guido Günther <agx@sigxcpu.org >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3514 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3514 >
2020-01-23 18:07:13 +00:00
Eric Anholt
b327501dbf
turnip: Add support for fine derivatives.
...
This does appear to be the required instruction sequence (dsxpp_1 dst src;
dsxpp_1.p dst src) as dropping either instruction fails the testsuite.
Fixes dEQP-VK.glsl.derivate.*
Reviewed-by: Jonathan Marek <jonathan@marek.ca >
Reviewed-by: Rob Clark <robdclark@chromium.org >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3494 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3494 >
2020-01-23 17:38:29 +00:00
Eric Anholt
876824908d
freedreno/ir3: Plumb the ir3_shader_variant into legalize.
...
legalize is computing a lot of state that goes in the variant, let's just
store it directly instead of passing pointers around. This leaves
max_bary in place, which is doing some surprising work (overwriting the
original total_in in some cases).
Reviewed-by: Rob Clark <robdclark@chromium.org >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3494 >
2020-01-23 17:38:29 +00:00
Anthony Pesch
f77369086c
util/hash_table: update users to use new optimal integer hash functions
...
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475 >
2020-01-23 17:06:57 +00:00
Anthony Pesch
1496cc92f6
util/hash_table: added hash functions for integer types
...
A few hash_table users roll their own integer hash functions which
call _mesa_hash_data to perform the hashing which ultimately calls
into XXH32 with a dynamic key length. When using small keys with a
constant size the hash rate can be greatly improved by inlining
XXH32 and providing it a constant key length, see:
https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html
Additionally, this patch removes calls to _mesa_key_hash_string and
makes them instead call _mesa_has_string directly, matching the new
integer hash functions.
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475 >
2020-01-23 17:06:57 +00:00
Anthony Pesch
931388ceca
util/hash_table: replace _mesa_hash_data's fnv1a hash function with xxhash
...
For most key sizes, xxhash outperforms fnv1a's hash rate substantially (bug
2153). In particular, the V3D driver hashes multiple ~200 byte keys as part
of the shader cache lookup which can easily eat up 10-20% of the runtime on
the Raspberry Pi. Swapping over to xxhash drops this to ~1% of the runtime.
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475 >
2020-01-23 17:06:57 +00:00
Anthony Pesch
032f8807f7
util: move fnv1a hash implementation into its own header
...
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475 >
2020-01-23 17:06:57 +00:00
Anthony Pesch
17fac0e32d
util: import xxhash
...
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475 >
2020-01-23 17:06:57 +00:00
Michel Dänzer
552028c013
winsys/amdgpu: Close KMS handles for other DRM file descriptions
...
When a BO or amdgpu_screen_winsys is destroyed.
Should fix leaking such BOs in other DRM file descriptions.
v2:
* Pass the correct file descriptor to drmIoctl (Pierre-Eric
Pelloux-Prayer)
* Use _mesa_hash_table_remove
v3:
* Close handles in amdgpu_winsys_unref as well
v4:
* Adapt to amdgpu_winsys::sws_list_lock.
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2270
Fixes: 11a3679e3a
"winsys/amdgpu: Make KMS handles valid for original
DRM file descriptor"
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
2020-01-23 17:39:34 +01:00
Michel Dänzer
b60f5cbc15
winsys/amdgpu: Re-use amdgpu_screen_winsys when possible
...
Namely, if os_same_file_description determined that the DRM file
descriptor references the same file description.
v2:
* Adapt to amdgpu_winsys::sws_list_lock.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
2020-01-23 17:39:34 +01:00
Michel Dänzer
f76cbc7901
util: Add os_same_file_description helper
...
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
2020-01-23 17:39:34 +01:00
Michel Dänzer
c6468f66c7
winsys/amdgpu: Only re-export KMS handles for different DRM FDs
...
When the amdgpu_screen_winsys uses the same FD as the amdgpu_winsys
(which is always the case for the first amdgpu_screen_winsys), we can
just use bo->u.real.kms_handle.
v2:
* Also only create the kms_handles hash table if the
amdgpu_screen_winsys fd is different from the amdgpu_winsys one.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
2020-01-23 17:39:34 +01:00
Michel Dänzer
24075ac60f
winsys/amdgpu: Keep track of retrieved KMS handles using hash tables
...
The assumption being that KMS handles are only retrieved for relatively
few BOs, so hash tables should be efficient both in terms of performance
and memory consumption.
We use the address of struct amdgpu_winsys_bo as the key and its
kms_handle field (the KMS handle valid for the DRM file descriptor
passed to amdgpu_device_initialize) as the hash value.
v2:
* Add comment above amdgpu_screen_winsys::kms_handles (Pierre-Eric
Pelloux-Prayer)
v3:
* Protect kms_handles hash table with amdgpu_winsys::sws_list_lock
mutex.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
2020-01-23 17:24:00 +01:00
Michel Dänzer
f4010a6da9
winsys/amdgpu: Keep a list of amdgpu_screen_winsyses in amdgpu_winsys
...
v2:
* Add dedicated mutex for the list.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3202 >
2020-01-23 17:23:32 +01:00
Samuel Pitoiset
8d5203dad2
aco: implement nir_op_f2i64/nir_op_f2u64 on GFX6
...
V_TRUNC_F64 and V_FLOOR_F64 needs to be lowered on GFX6.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3477 >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3477 >
2020-01-23 14:40:48 +01:00
Samuel Pitoiset
4d92601715
aco: implement 64-bit nir_op_ffloor on GFX6
...
GFX6 doesn't have V_FLOOR_F64, it needs to be lowered. Loosely based
on the AMDGPU LLVM backend.
Introduce a new function because it will be useful for some other
64-bit operations.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3477 >
2020-01-23 14:40:45 +01:00