nir/vtn: Implement printf opcode in terms of intrinsic (v9)

[airlied: rebase fixup types]

v2: add support for storing strings in a sideband storage,
just store the index in print buffer.

v3: move the format strings into the nir shader as well

v4: simplify the write constant string + explicit sizes
move printf cap definition.

v5: just parse the format string to find string specifiers
using util code.
add vtn_fail_if if we can't get the correct type.

v6: use ralloc + avoid instr handler for srcs > 5

v7: use a packed struct 4 bytes align all of it

v8: simplify constant copy

v9: rework to use a single string and common string
extract code, (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8254>
This commit is contained in:
Jesse Natalie
2020-06-21 14:36:00 -07:00
committed by Dave Airlie
parent 2a3fe68c33
commit 9524e9dbd0
2 changed files with 111 additions and 7 deletions

View File

@@ -68,6 +68,7 @@ struct spirv_supported_capabilities {
bool multiview;
bool physical_storage_buffer_address;
bool post_depth_coverage;
bool printf;
bool ray_tracing;
bool ray_query;
bool ray_traversal_primitive_culling;