mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-22 02:00:22 +01:00
panfrost/midgard: Add perspective division opcodes
...on the load/store unit, not the ALUs. Looks goofy but hey. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
b0396d6dda
commit
fc472007e7
2 changed files with 9 additions and 0 deletions
|
|
@ -371,6 +371,13 @@ typedef enum {
|
|||
/* Used in OpenCL. Probably can ld other things as well */
|
||||
midgard_op_ld_global_id = 0x10,
|
||||
|
||||
/* The L/S unit can do perspective division a clock faster than the ALU
|
||||
* if you're lucky. Put the vec4 in r27, and call with 0x24 as the
|
||||
* unknown state; the output will be <x/w, y/w, z/w, 1>. Replace w with
|
||||
* z for the z version */
|
||||
midgard_op_ldst_perspective_division_z = 0x12,
|
||||
midgard_op_ldst_perspective_division_w = 0x13,
|
||||
|
||||
/* val in r27.y, address embedded, outputs result to argument. Invert val for sub. Let val = +-1 for inc/dec. */
|
||||
midgard_op_atomic_add = 0x40,
|
||||
midgard_op_atomic_and = 0x44,
|
||||
|
|
|
|||
|
|
@ -153,6 +153,8 @@ struct mir_op_props alu_opcode_props[256] = {
|
|||
const char *load_store_opcode_names[256] = {
|
||||
[midgard_op_st_cubemap_coords] = "st_cubemap_coords",
|
||||
[midgard_op_ld_global_id] = "ld_global_id",
|
||||
[midgard_op_ldst_perspective_division_z] = "ldst_perspective_division_z",
|
||||
[midgard_op_ldst_perspective_division_w] = "ldst_perspective_division_w",
|
||||
|
||||
[midgard_op_atomic_add] = "atomic_add",
|
||||
[midgard_op_atomic_and] = "atomic_and",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue