Commit Graph

41 Commits

Author SHA1 Message Date
Erik Faye-Lund
b8fd70eef2 zink: load vk_GetMemoryFdKHR while creating screen
We're about to load some more extension-pointers as well, so let's
create a separate place for doing this.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4835>
2020-05-11 09:09:34 +00:00
Erik Faye-Lund
b7e966dc7f zink: do not report texture-samplers for unsupported stages
This caused the max combined samplers to be reported as artificially
high.

Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3826>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3826>
2020-02-17 10:00:18 +00:00
Erik Faye-Lund
eb0195358c zink: only inspect dual-src limit if feature enabled
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3689>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3689>
2020-02-10 11:01:47 +00:00
Erik Faye-Lund
8405e1bef0 zink: implement support for derivative-control
Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3645>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3645>
2020-01-31 08:56:55 +00:00
Erik Faye-Lund
f12b844e7c zink: implement load_instance_id
Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3644>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3644>
2020-01-31 08:40:24 +00:00
Erik Faye-Lund
c0ced1e79b zink: enable texture-buffer objects
This seems to work as-is, and just need enabling. There's a few piglit
failures, but those seems to be problems with the tests, where they
don't handle lacking GL3-support.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3647>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3647>
2020-01-31 08:23:07 +00:00
Erik Faye-Lund
af65bfb38f zink: implement nir_texop_txd
This lets us enable PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD, which in turns
gives us ARB_shader_texture_lod.

Still fails one piglit test on ANV, namely
spec@arb_shader_texture_lod@execution@arb_shader_texture_lod-texgradcube,
but with 33 new passing tests, I think this is worth it.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3140>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3140>
2019-12-19 13:14:29 +01:00
Erik Faye-Lund
b31d1b73bc zink: enable PIPE_CAP_MIXED_COLORBUFFER_FORMATS
This just works in Vulkan, there's no work neeed to enable it.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3148>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3148>
2019-12-19 10:08:13 +01:00
Erik Faye-Lund
655b9aa711 zink: reject invalid sample-counts
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 <erik.faye-lund@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2019-11-29 08:58:05 +01:00
Erik Faye-Lund
927363e0b9 zink: use true/false instead of TRUE/FALSE
Reviewed-by: Dave Airlie <airlied@redhat.com>
2019-11-29 08:57:33 +01:00
Eric Anholt
882ca6dfb0 util: Move gallium's PIPE_FORMAT utils to /util/format/
To make PIPE_FORMATs usable from non-gallium parts of Mesa, I want to
move their helpers out of gallium.  Since u_format used
util_copy_rect(), I moved that in there, too.

I've put it in a separate directory in util/ because it's a big chunk
of related code, and it's not clear to me whether we might want it as
a separate library from libmesa_util at some point.

Closes: #1905
Acked-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
2019-11-14 10:47:20 -08:00
Erik Faye-Lund
36f3902213 zink: move format-checking to separate source
This code is more or less stand-alone, and this keeps the formats array
a bit more encapsulated.
2019-11-13 09:12:36 +01:00
Erik Faye-Lund
b4d47e21d7 zink: correct depth-stencil format
When using packed vulkan-formats on little-endian systems, we need to
swap the components for the gallium formats. And since Zink isn't
big-endian safe yet, little-endian is the only endianess we care about
right now.

This fixes a bunch of piglit tests, amongs others:
- spec@arb_depth_texture@depth-level-clamp
- spec@arb_depth_texture@depthstencil-render-miplevels * d=z24
- spec@arb_depth_texture@fbo-depth-gl_depth_component24-blit
- spec@arb_depth_texture@fbo-depth-gl_depth_component24-copypixels
- spec@arb_depth_texture@fbo-depth-gl_depth_component24-drawpixels
- spec@arb_depth_texture@fbo-depth-gl_depth_component24-readpixels

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: 8d46e35d16 ("zink: introduce opengl over vulkan")
2019-11-11 14:35:53 +00:00
Erik Faye-Lund
bc80900b6c zink: do advertize integer support in shaders
This is supported, so let's correct this.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
2019-11-06 13:43:14 +01:00
Erik Faye-Lund
b385ad0c75 zink: disable fragment-shader texture-lod
We don't support nir_texop_txd, which is required by this cap. So let's
disable it for now.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: 8d46e35d16 ("zink: introduce opengl over vulkan")
2019-11-06 11:37:36 +00:00
Erik Faye-Lund
a32a92f53a zink: do not advertize coherent mapping
We do not support them yet, so let's not pretend.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: 8d46e35d16 ("zink: introduce opengl over vulkan")
2019-11-06 11:37:36 +00:00
Erik Faye-Lund
477f019812 zink: only enable KHR_external_memory_fd if supported
While we're at it, make sure we error out if it's not supported when
required.

This brings us a bit closer to being able to test on SwiftShader, which
doesn't currently support KHR_external_memory_fd.
2019-10-30 19:40:50 +00:00
Erik Faye-Lund
810fc75dab zink: emulate optional depth-formats
The Vulkan spec says that an implementation has to support one of
VK_FORMAT_X8_D24_UNORM_PACK32 and VK_FORMAT_D32_SFLOAT, as well of
one of VK_FORMAT_D24_UNORM_S8_UINT and VK_FORMAT_D32_SFLOAT_S8_UINT.

So let's keep track which one is supported of earch pair, and emulate
one on top of the other one.

This won't give the exact result for comparisons, or when mapping and
unmapping the resources. But it's better than flat out failing to create
the resource, and we can fix the map/unmap issue later if needed.

Tested-by: Duncan Hopkins <duncan@thefoundry.co.uk>
2019-10-28 17:57:49 +00:00
Erik Faye-Lund
e6ea350fb0 zink: error if VK_KHR_maintenance1 isn't supported
While we're at it, remove the VK_-prefix from the extension bool; all
extensions have this so it's kinda superfluous.
2019-10-28 17:57:49 +00:00
Erik Faye-Lund
65fbb1836a zink: use VK_FORMAT_B8G8R8A8_UNORM for PIPE_FORMAT_B8G8R8X8_UNORM
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:48 +00:00
Erik Faye-Lund
c7bcb6e5dc zink: lower two-sided coloring
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:48 +00:00
Erik Faye-Lund
1f3d2b9f80 zink/spirv: implement load_front_face
We're now adding interface-types during code-emitting, so we need to
defer emitting the entry-point. No biggie, spirv_builder is prepares for
this.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:48 +00:00
Erik Faye-Lund
3ef3ab2d54 zink: lower point-size
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:47 +00:00
Erik Faye-Lund
f24e14cc08 zink: add missing sRGB DXT-formats
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:47 +00:00
Erik Faye-Lund
d50ec9f798 zink: disable PIPE_CAP_QUERY_TIME_ELAPSED for now
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:47 +00:00
Erik Faye-Lund
7ebdf5be15 zink: disable timestamp-queries
We don't implement the get_timestamp context-method, so this is just
going to crash if anyone tries to use it. Let's implement it later.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:47 +00:00
Erik Faye-Lund
967e570511 zink: add note about enabling PIPE_CAP_CLIP_HALFZ
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:46 +00:00
Erik Faye-Lund
7004afcd24 zink: remove insecure comment
This isn't as inaccurate as the comment says, the Vulkan documentation
even seems to suggest this is the same. Let's drop the comment.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:46 +00:00
Erik Faye-Lund
a10d43d845 zink: avoid texelFetch until it's implemented
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:46 +00:00
Erik Faye-Lund
10439594ec zink: only consider format-desc if checking details
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:46 +00:00
Dave Airlie
4480aefc38 zink: attempt to get multisample resource creation right
Use the exposed vulkan limits to fill out supported formats.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:45 +00:00
Erik Faye-Lund
8edd357795 zink: request ucp-lowering
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:45 +00:00
Dave Airlie
5dbfb02459 zink: add support for compressed formats
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:45 +00:00
Erik Faye-Lund
6ae8686bff zink: request alpha-test lowering
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:45 +00:00
Duncan Hopkins
d850e2a3f2 zink: clamped limits to INT_MAX when stored as uint32_t.
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:45 +00:00
Dave Airlie
6d96578912 zink: query support (v2)
This at least passes piglit occlusion_query test for me here now.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:43 +00:00
Dave Airlie
9fa7400564 zink: add dri loader
export MESA_LOADER_DRIVER_OVERRIDE=zink should now work without using
swrast paths

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:43 +00:00
Erik Faye-Lund
4249e4a598 zink/spirv: implement point-sprites
This passes glsl-fs-pointcoord_gles2 from piglit.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:43 +00:00
Dave Airlie
c3bd0274c6 zink: ask for flatshade lowering
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:43 +00:00
Erik Faye-Lund
48f1f20a9d zink: detect presence of VK_KHR_maintenance1
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:43 +00:00
Erik Faye-Lund
8d46e35d16 zink: introduce opengl over vulkan
Here's zink, a so far pretty simple vulkan-gallium driver that is able
to translate some applications from OpenGL to Vulkan.

The compiler is quite limited for now, this will be improved on later.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
2019-10-28 08:51:43 +00:00