Faith Ekstrand
83142c825f
nouveau/mme: Don't allow WaW dependencies in the same Turing instruction
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:04 +00:00
Faith Ekstrand
5560f5f4ff
nvk: Make some MME builder names more consistent
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
0d45486f2c
nvk: Add a helper for pushing indirect data
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
d5a31866ec
nvk: Rework nvk_cmd_push a bit
...
Instead of taking an nvk_cmd_bo take a nouveau_ws_bo and keep the map
pointer separate. We'll need to do this when we start pushing stuff
that isn't nvk_cmd_bo. Also, rework the bounds to be in bytes.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
eed24d89dd
nvk/drm: Take a byte offset/range in push_add_push
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
b76d6725e2
nouveau/mme: nouveau/mme: Add builder tests for SLL and SRL
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
aa69c25125
nouveau/mme: Use a uint32_t for size in mme_fermi_bfe()
...
It will never be a non-fixed value.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
c98179b868
nouveau/mme: Add builder tests for SUB
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
e8032b893d
nouveau/mme: Add some generic builder tests
...
These don't need hardware and instead run entirely in the simulator.
The goal is to have something that we can run in CI and which ensures
consistency between the Turing and Fermi MMEs.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
15295e32ec
nouveau/mme: Unify some of the test framework
...
Most of the actual nouveau device enumeration and test running framework
was copy+paste between the two.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
94ea7cad3a
nouveau/mme: Take a const nv_device_info in mme_builder_init
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
b664b42fce
nouveau/mme: Don't swap x and y in mme_fermi_merge_to()
...
This was probably an artifact of the fermi/turing merge.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
75deae5988
nouveau/mme: Fix is_int18 for negative numbers
...
util_mask_sign_extend returns a uint64_t which we need to cast to
uint32_t in order to get the right comparison. Otherwise, we risk
having ~0 in the top 32 bits and the comparison failing.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
67008dfe78
nil: Only choose a PTE kind for tiled images
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Dave Airlie
22cd2658e8
nvk: Report image alignments from NIL
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Dave Airlie
be5a07aa52
nil: Fix image align and size constraints
...
In order to use compressed images we have to align to at least (1<<16)
though the kernel also likes (1<<21).
This fixes the alignments/sizes so they can work with vm allocs
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Dave Airlie
a51b06c730
nvk: set the device fd
...
This is needed later for syncobj support
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Dave Airlie
ee06bee79a
nvk/winsys: store device ptr into bo instead of ptr
...
This will be needed later.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Dave Airlie
be456a3be2
nvk: init dev->physical_device earlier.
...
When device is passed to bo destroy this is needed earlier.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
cca5f6b280
nvk: Cosmetic clean-ups to Create/DestroyDevice
...
Use dev and pdev instead of device and physical_device. Also, clean up
whitespace a bit while we're here.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
ade334a807
nvk: Handle zero-size index and vertex buffers pre-Turing
...
According to the nouveau GL driver, this should be the addres of the
last byte, not the byte after the end. The calculation will overflow if
range is 0 so we need to handle that special.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
7c096786ca
nvk: Use a GS for layerered rendering pre-MaxwellB
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
74e8be6545
vulkan/meta: Insert a geometry shader when needed
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
af3400a957
nvk: Compile all NIR before running codegen
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
George Ouzounoudis
838c92ae95
nvk: Compile geometry shaders
...
This enables compiling geometry shaders. Based primarily on gallium
nvc0/nvc0_program.c.
We need to enable/disable user clip planes based on the last geometry
stage. Some asserts in codegen need to be changed too because the
compacted clip distance inputs are arrayed in the geometry shader. So we
have an array of clip distances for each input vertex.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
ccc50eb276
nvk: Properly align root descriptor tables for pre-Pascal
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
3595701e16
nvk: Free a couple regs in nvk_mme_build_draw_*()
...
We don't need base_instance after we've set it the first time. We also
don't need to keep intance_count around forever. mme_loop() always
consumes the value at the beginning so we can free up a register right
away. Fermi is really tight on registers and this is enough to make
the basic draw MMEs successfully compile.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
dabc4f6bcc
nvk: Disable indirect draw/dispatch and query copy MMEs for now
...
These all rely on mme_tu104_read_fifoed() which isn't available before
Turing. They're also really register-expensive and we can't compile
them without paring things down a bit.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
731cfb86e7
nvk: Use a contiguous shader heap pre-Volta
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
55be10648d
nvk: Add support for contiguous heaps to nvk_heap
...
This is required for shader heaps pre-Volta because they use a single
64-bit base address and 32-bit offsets for individual shaders. In this
case, the addresses returned from the heap are relative to the base.
The BO for the heap can be retrieved via nvk_heap_get_contiguous_bo_ref
which returns an actual reference so it's safe to call from the queue
submit path.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Mary
dc8fd9050c
nouveau/mme: Add Fermi hardware tests
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Mary
d64a0b787e
nouveau/mme: Add Fermi simulator
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
b949a53206
Add add immediate optimizations
...
Also, immediates are signed 18-bit values so modify the builder to
support the entire range.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
e848cbafa4
Support immediates in MERGE
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Mary
162269f049
nouveau/mme: Add Fermi builder
...
Co-Authored-By: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Mary
663258be5e
nouveau/mme: Add initial Fermi definition
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
5971c0967a
nouveau/mme: Take an nv_device_info in mme_builder_init
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
dfe4627e3d
nouveau/mme: Prepare the builder for multiple GPU generations
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
ff39efdf55
nouveau/mme: Move the cf_stack struct to mme_builder.h
...
Fermi wants exactly the same thing.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
7630f0e645
nouveau/mme: Drop the implicit_imm parameter from mme_alu_to()
...
It's only used for control-flow and MERGE, all of which are special.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
baa1735364
nouveau/mme: Move the guts of mme_state_arr_to() into mme_tu104_builder.c
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
9e1a868b6d
nouveau/mme: Move the guts of mme_merge_to() into mme_tu104_builder.c
...
It's going to be a bit different on Fermi.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
0b52da5afa
nouveau/mme: Break the Turing builder guts into a separate header
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
724f7a875f
nouveau/mme: Make helpers less Turing specific
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
cc87631b20
nouveau/mme: Use mme_mov() for temp copies of register IMM32 sources
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
d207b3356e
nouveau/mme: Add an intermediate MME_CMP_OP enum
...
Having everything go through the Turing opcodes isn't a good long-term
plan so add an intermediate which is independent of HW generation.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
c0c7e23ca8
nouveau/mme: Add an intermediate MME_ALU_OP enum
...
Having everything go through the Turing opcodes isn't a good long-term
plan so add an intermediate which is independent of HW generation.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
db5b38cb9e
nouveau/mme: Add a mme_reg_alloc struct
...
This has some nice asserts which we'll want when we start having
reserved registers on Fermi.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Faith Ekstrand
2d7f96228d
nouveau/mme: Move mme_value into its own header
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00
Rebecca Mckeever
70ce8ba5a4
nvk: Implement VK_EXT_image_view_min_lod
...
Closes: https://gitlab.freedesktop.org/nouveau/mesa/-/issues/40
Signed-off-by: Rebecca Mckeever <rebecca.mckeever@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326 >
2023-08-04 21:32:03 +00:00