Hamish Arblaster
cafca76fa2
zink: Fix building on macOS
...
This fixes building on macOS:
Disable ZINK_USE_DMABUF on macOS, it is unsupported.
Import vk_mvk_moltenvk.h for MVK_VERSION in zink_resource.c.
Add additional build arguments (see meson.build) to build properly.
To build on macOS, you will probably need to run:
brew install bison llvm cmake libxext xquartz ninja xorgproto meson
And you also need to setup meson with something like:
-Dmoltenvk-dir=/Users/<Username>/VulkanSDK/<VersionNumber>/MoltenVK
-Dc_std=c11
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14255 >
2021-12-29 03:21:35 +00:00
Jesse Natalie
2771fd4a3f
gallium, windows: Use HANDLE instead of FD for external objects
...
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Bill Kristiansen <billkris@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13054 >
2021-11-19 22:54:46 +00:00
Mike Blumenkrantz
8f97af050e
zink: set zink_resource_object::host_visible based on actual bo placement
...
the properties determined before allocation may not be the same as what gets
allocated
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13849 >
2021-11-17 22:59:43 +00:00
Mike Blumenkrantz
b1a32d1432
zink: implement multiplanar modifier handling
...
it turns out this is trivial as long as dri gives usable resource templates
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13799 >
2021-11-17 19:22:02 +00:00
Mike Blumenkrantz
943f6a038d
zink: always set matching resource export type for dmabuf creation
...
both of these need to be set if one is
cc: mesa-stable
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13799 >
2021-11-17 19:22:02 +00:00
Mike Blumenkrantz
11c79a8bd7
zink: stop using VK_IMAGE_LAYOUT_PREINITIALIZED for dmabuf
...
this is illegal
cc: mesa-stable
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13799 >
2021-11-17 19:22:02 +00:00
Mike Blumenkrantz
43c457a6ec
zink: always add VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT for 3D images
...
there's no way to know what an image will be used for, so this bit needs
to always be added
fixes KHR-GL46.packed_pixels.varied_rectangle.compressed_rgb
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13798 >
2021-11-15 21:24:05 +00:00
Mike Blumenkrantz
64e0ca15d6
zink: add 1DShadow sampler handling for drivers (radv) that don't support it
...
some drivers won't create zs textures in any shape but 2D. this can be
handled instead by using 2D textures and then performing shader rewrites to
convert shadow samplers for 1D and 1DArray types to 2D/array
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13583 >
2021-11-09 23:59:04 +00:00
Mike Blumenkrantz
675519f1d0
zink: reject all storage multisampling if the feature is unsupported
...
this also enables removing a stupid conditional
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13631 >
2021-11-03 14:14:44 +00:00
Mike Blumenkrantz
2de6beaa12
zink: add better handling for CUBE_COMPATIBLE bit
...
this check was illegal because the usage bits weren't yet populated,
so add another check after usage bits are determined to figure out if
CUBE_COMPATIBLE can be applied
additionally, checking sample counts was never needed since the spec
prohibits CUBE_COMPATIBLE use with multisampling
zink DEBUG: ERR: 'Validation Error: [ VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x991b3105 | vkGetPhysicalDeviceImageFormatProperties: value of usage must not be 0. The Vulkan spec states: usage must not be 0 (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask )'
Fixes: 71494c4874 ("zink: only mark resources as cube-compatible if supported")
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12580 >
2021-10-28 00:11:24 +00:00
Marek Olšák
3df9d8ed80
gallium/u_threaded: implement pipelined partial buffer uploads using CPU storage
...
This removes resource_copy_region for BufferSubData. Drivers have to opt in
to use this.
See the comment in the header file.
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13399 >
2021-10-19 13:12:37 +00:00
Mike Blumenkrantz
86b24fba05
zink: align pipe_resource and sampler_view allocations to cachelines
...
this eliminates false sharing for atomics
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13431 >
2021-10-19 02:40:37 +00:00
Mike Blumenkrantz
89ed9ed400
zink: don't ralloc zink_resource structs
...
the hash tables can just have their own contexts and be freed explicitly
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13431 >
2021-10-19 02:40:37 +00:00
Mike Blumenkrantz
2750853894
zink: stop leaking resource surface cache hash tables
...
these are owned by the resource, so stick them on a resource context
instead of the screen context
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13248 >
2021-10-08 03:59:50 +00:00
Mike Blumenkrantz
9dbf1ba21d
zink: add ZINK_BIND_TRANSIENT
...
this is used to create lazily allocated images for use as transient
renderpass attachments
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12934 >
2021-09-24 21:00:21 +00:00
Mike Blumenkrantz
363ffdaf79
zink: don't use legacy scanout with modifiers
...
legacy_scanout is for adding implicit modifiers when modifiers aren't provided,
so it can't be used with explicit modifiers
also jekstrand said no.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12930 >
2021-09-22 19:20:07 +00:00
Mike Blumenkrantz
60f12ac127
zink: don't leak drm fd on drmPrimeFDToHandle failure
...
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12911 >
2021-09-17 19:33:43 +00:00
Mike Blumenkrantz
eb3fa25150
zink: zero VkImageCreateInfo::queueFamilyIndexCount on creation
...
this explodes gfxreconstruct
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12905 >
2021-09-17 00:24:49 +00:00
Mike Blumenkrantz
ed794207b5
zink: pass all modifiers through to image creation
...
let the driver figure these out after zink guarantees that at least one of them
will work
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12857 >
2021-09-16 12:36:20 -04:00
Mike Blumenkrantz
4e6d78c3b0
zink: pre-filter multi-plane modifiers
...
only single plane modifiers are supported now
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12857 >
2021-09-16 12:36:20 -04:00
Mike Blumenkrantz
cfe0bf5a4a
zink: unbreak dmabuf handling
...
this does need kms handling to do literally anything.
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12857 >
2021-09-16 12:36:20 -04:00
Mike Blumenkrantz
01f00eb90d
zink: move surface and bufferview caches onto resources
...
this makes the locking smaller in scope and also make the lookups faster
due to having smaller populations in the hash tables
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12843 >
2021-09-14 05:47:47 +00:00
Mike Blumenkrantz
ecf5d706ef
zink: move barrier info to resource object struct
...
this is a bit more accurate
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12845 >
2021-09-14 04:19:13 +00:00
Mike Blumenkrantz
9ec9289385
zink: add dmabuf fd handling
...
just gotta get it out of the underlying graphics layer
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11967 >
2021-09-14 03:14:12 +00:00
Mike Blumenkrantz
7d2de96847
zink: fix import pNext attachment during image creation
...
there's better checks for this now, so the weird pNext handling here
can be simplified
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11967 >
2021-09-14 03:14:12 +00:00
Mike Blumenkrantz
5b827b0a39
zink: handle image creation for dmabufs
...
these use PREINIT layout
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11967 >
2021-09-14 03:14:12 +00:00
Mike Blumenkrantz
2a63f38cb1
zink: set a flag for dmabuf init
...
this will be useful for barrier handling
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11967 >
2021-09-14 03:14:12 +00:00
Mike Blumenkrantz
3bd98d4bf6
zink: split import and export fd handle types
...
these can maybe be different
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11967 >
2021-09-14 03:14:12 +00:00
Mike Blumenkrantz
18866dc733
zink: remove ZINK_RESOURCE_USAGE_STREAMOUT
...
we can use a bool flag for this instead to be more sensible
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12822 >
2021-09-13 03:40:54 +00:00
Mike Blumenkrantz
b483faccb6
zink: remove batch params from barrier functions
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12770 >
2021-09-13 00:53:02 +00:00
Mike Blumenkrantz
ec2cce6d60
zink: remove batch params from resource copy functions
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12770 >
2021-09-13 00:53:02 +00:00
Mike Blumenkrantz
ad584ed34e
zink: use dispatch table for (almost) all vulkan calls
...
try to avoid hitting the loader when possible
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12757 >
2021-09-08 04:31:24 +00:00
Mike Blumenkrantz
cf8997ab58
zink: store some image creation metadata to object struct
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12661 >
2021-09-02 15:53:16 +00:00
Mike Blumenkrantz
0b2b2a4783
zink: remove ZINK_HEAP_HOST_VISIBLE_ANY
...
this was just the coherent heap but splitting the slabs more to make
suballocating worse
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12659 >
2021-09-01 04:24:03 +00:00
Mike Blumenkrantz
e53e5165b1
zink: create inner scanout object without scanout binds
...
this restores mutable formats to the inner object to work with scanout
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12629 >
2021-09-01 03:07:55 +00:00
Mike Blumenkrantz
052f85ea1b
zink: flag color attachment images as input attachments at creation
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12603 >
2021-08-31 19:45:29 +00:00
Mike Blumenkrantz
849033e6d8
zink: implement PIPE_RESOURCE_FLAG_DONT_MAP_DIRECTLY when resizable bar not present
...
this helps in some cases to avoid allocating and mapping large staging resources
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12579 >
2021-08-30 13:46:04 +00:00
Erik Faye-Lund
e3239dff05
zink: avoid overflow when calculating size
...
If we multiply before we (implicitly) cast the result to the target
type, we needlessly risk overflowing the result.
CID: 1490790, 1475922
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12559 >
2021-08-27 18:32:03 +00:00
Erik Faye-Lund
c96afa9fc8
zink: initialize pQueueFamilyIndices
...
This silences a Coverity warning about an uninitialized variable.
CID: 1490800
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12559 >
2021-08-27 18:32:03 +00:00
Mike Blumenkrantz
bdbcf256a1
zink: return early when getting resource modifer if no modifier is used
...
Reviewed-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12534 >
2021-08-25 21:14:11 +00:00
Mike Blumenkrantz
403acd299f
zink: handle map failures more effectively
...
the transfer object needs to be destroyed
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12422 >
2021-08-17 17:00:32 -04:00
Mike Blumenkrantz
afa867b973
zink: break out transfer map destroy
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12422 >
2021-08-17 17:00:32 -04:00
Mike Blumenkrantz
97545a0a1f
zink: remove unused variable from image map
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12422 >
2021-08-17 17:00:32 -04:00
Mike Blumenkrantz
c5a6ebc605
zink: split buffer and image map functions
...
this is a bit nicer to read
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12422 >
2021-08-17 17:00:32 -04:00
Mike Blumenkrantz
b19bff17f4
zink: split out zink_transfer allocation
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12422 >
2021-08-17 17:00:32 -04:00
Mike Blumenkrantz
9e6916fb00
zink: remove duplicated zink_resource_object::mem member
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12421 >
2021-08-17 20:43:18 +00:00
Mike Blumenkrantz
67239cf754
zink: collapse 'dedicated' allocation into zink_bo
...
this simplifies all the map and memory management code
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12421 >
2021-08-17 20:43:18 +00:00
Mike Blumenkrantz
97d04c2bc5
zink: rejigger PIPE_MAP_ONCE for internal qbo reads
...
DONTBLOCK is only used internally for this case, and promoting it over
the staging buffer case ensures that it's always reached when it should be
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12410 >
2021-08-17 19:40:27 +00:00
Mike Blumenkrantz
7d39ef49bd
zink: remove PIPE_MAP_ONCE from subdata
...
subdata calls that happen once for a buffer are likely to happen again,
so just leave them mapped
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12410 >
2021-08-17 19:40:27 +00:00
Mike Blumenkrantz
daff597940
zink: make map_count useful for dedicated image allocations
...
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12410 >
2021-08-17 19:40:27 +00:00