Thomas H.P. Andersen
1de2bc6144
nvk: fix maxPushDescriptors
...
maxPushDescriptors was advertised as 0.
Spotted with Sascha Willems pushdescriptors example
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
436171ecf1
nvk: Add a helper for loading resource_index-based descriptors
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
abe806236d
nvk: Drop block_size from the root descriptor table
...
It's unused because Vulkan doesn't support compute dispatches with an
unknown workgroup size. If we ever do, we can add it back in. In case
it ever comes back, add an unreachable() to nvk_nir_lower_descriptors().
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
6411cbc6c5
nvk: Lower load_num_workgroups ourselves
...
Instead of relying on the back-end to put it at a magic offset in a
magic constant buffer, lower it in NIR.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
3a6aeb7caa
nvk: Rename grid_size to group_count
...
That's the Vulkan name for it.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
03738819f9
nvk: Capitalize NVK in user exposed strings
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Yusuf Khan
062b8e7477
nvk: expose KHR_driver_properties
...
Signed-off-by: Yusuf Khan <yusisamerican@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
748bc8e487
nvk: Advertise VK_EXT_separate_stencil_usage
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
0a84e58180
nvk: Advertise EXT_index_type_uint8
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
c461c30181
nvk: Advertise KHR_uniform_buffer_standard_layout
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
1bcb8797bc
nvk: Enable KHR_dynamic_rendering
...
We've been dynamic rendering since day 1
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
dd044423a2
nvk: Advertise VK_KHR_bind_memory2
...
We already use the entrypoint (via the 1.0 wrappers); we just need to
turn on the extension.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
1e5b6074e0
nvk: Advertise samplerMirrorClampToEdge via 1.2 features
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
b934e98452
nvk: Enable VK_EXT_provoking_vertex
...
We already have it plumbed through. Just need to turn it on.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
d1b9441a8e
nvk: Enable inheritedQueries
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
0e84eb35e2
nvk: Re-order Vulkan 1.0 feature bits
...
Also, leave TODO comments for anything we want to enable but haven't.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Rebecca Mckeever
45c2ebc341
nvk: Convert system values for gl_PointCoord and PointCoord into inputs
...
Currently, any attempt to use gl_PointCoord (GLSL) or PointCoord (SPIR-V)
results in an assert in codegen:
ERROR: unknown nir_intrinsic_op load_point_coord
This patch addresses the error by converting nir_intrinsic_load_point_coord
system value into VARYING_SLOT_PNTC. The following tests now pass:
dEQP-VK.glsl.builtin_var.simple.pointcoord
dEQP-VK.glsl.builtin_var.simple.pointcoord_uniform_frag
dEQP-VK.glsl.builtin_var.simple.pointcoord_uniform_vert
Closes: https://gitlab.freedesktop.org/nouveau/mesa/-/issues/33
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
a08ad59ea6
nvk: Use nvk_buffer_addr_range for buffer descriptors
...
Because the helper checks for buffer == NULL, this should prepare us for
VK_KHR_robustness2 where we need to handle null descriptors.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
08e5a211dc
nvk: Add an nvk_buffer_addr_range helper
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
e0e16a7893
nvk: Fix a comment
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
George Ouzounoudis
d8c21d89e8
nvk: Support large points
...
We just need to enable the shader attribute. With point sprite
rasterization we get correct results on rasterization and draw tests.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
George Ouzounoudis
e6ef49b454
nvk: Switch point rasterization to point sprites
...
It seems for Vulkan we always need square points with shader PointCoords
just like OpenGL point sprites.
From vulkan spec's point rasterization:
"Point rasterization produces a fragment for each fragment area group of
framebuffer pixels with one or more sample points that intersect a region
centered at the point’s (xf,yf).
This region is a square with side equal to the current point size.
... (xf,yf) is the exact, unrounded framebuffer coordinate of the vertex
for the point"
From OpenGL compatibility spec:
Basic point rasterization:
"If point sprites are enabled, then point rasterization produces a
fragment for each framebuffer pixel whose center lies inside a square
centered at the point’s (xw, yw), with side length equal to the current
point size.
... and xw and yw are the exact, unrounded window coordinates of the
vertex for the point"
Also in OpenGL multisampling leads to circle points as we see in the spec:
Point multisample rasterization:
"This region is a circle having diameter equal to the current point width
if POINT_SPRITE is disabled, or a square with side equal to the current
point width if POINT_SPRITE is enabled."
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
4fa8df43ea
nvk: Lower image_size to txs
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
ae14362ff6
nvk: wire up M2MF for Fermi
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
970bd70584
nvk: allocate VAB memory area
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
8633aac584
nvk/device: fix order of error handling
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
27d6f994ba
nvk: support pre Maxwell Texture Headers
...
GM10x seems to disable it by default, so enable them there.
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
6214bfd139
nvk: bind more subchans in init_context_state
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
cd48710176
nvk: reduce pitch for FillBuffer
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
1eb63dd19a
nvk: use remaps for image copies
...
This helps us to get around hardware limitations on the width.
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
a39d22f246
nvk: properly align slm size
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
cb54c32fee
nvk: Use SET_PIPELINE_PROGRAM pre-Volta
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
f24bd52915
nvk: align desc root table
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
2a8673f694
nvk: rework QMD handling to support pre Turing
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
80d0a074fc
nvk: properly align shaders pre Turing
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Karol Herbst
1949c83381
nvk: fix some class version checks
...
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
891624b08f
nvk: Advertise EXT_vertex_attribute_divisor
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Thomas H.P. Andersen
b9316b624a
nvk: advertise EXT_image_2d_view_of_3d
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Thomas H.P. Andersen
380a2bc795
nvk: add check for VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
...
The tests in dEQP-VK.pipeline.*.image_2d_view_3d_image.* set this
bit and nil was not checking for it
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
George Ouzounoudis
6f9319f60f
nvk: Support base instance in instanced draw calls
...
Vulkan's gl_InstanceIndex is different than OpenGL gl_InstanceID.
For nvk, gl_InstanceIndex is lowered as gl_BaseInstance + gl_InstanceID in nir
code. This means we need to supply base instance to the vertex shader.
We load the value at mme draw time to a root constant, as it seems there
is no existing system value corresponding to this info.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
George Ouzounoudis
b2a52982d1
nvk: Set base vertex state in sequential mme draw
...
We need to set base vertex state to zero before emitting a sequential
draw call, if we have already emitted an indexed draw call that changed
that state.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
George Ouzounoudis
73f5ab5456
nvk: Add a macro for root descriptor table byte offsets
...
Use a helper macro instead of using offsetof directly.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
George Ouzounoudis
0de4083544
nvk: Do not increment instance id across draws
...
In cases of multiple draws (i.e. indirect draws) instance id should not
increment across draw boundaries. Use a local copy of "begin" to modify
the instance id inside the instances loop only.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
ff30b05917
nvk: Add a devenv ICD json file
...
This also reworks the ICD generation stuff based on the radv header
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
b0d8ddc70e
nvk: Support VK_FORMAT_B10G11R11_UFLOAT_PACK32 for vertex buffers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Dave Airlie
c9b72acc4e
nvk: fix multiple pipelines failure allocation case.
...
Fixes these failures:
dEQP-VK.api.object_management.alloc_callback_fail_multiple*
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
79d7ee22e1
nvk/format: Style fix for VkFormatProperties3KHR
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
7d629d7aec
nvk: Add a bo size to nvk_descriptor_set
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
3568027b9d
nvk: Assert that descriptor buffer access stays in-bounds
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00
Faith Ekstrand
be417625c4
nvk: Advertise VK_KHR_depth_stencil_resolve
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:02 +00:00