issues
search
3Shain
/
dxmt
Metal-based implementation of D3D11 for MacOS / Wine
MIT License
345
stars
12
forks
source link
feat: dxbc to air transpiler
#1
Closed
3Shain
closed
7 months ago
3Shain
commented
8 months ago
.metallib
serialization
[x] vertex function
[x] fragment function
[x] kernel function
input/output binding
[x] vertex function
[x] user defined input (InputLayout)
[x] user defined output
[x] SGV: vertex id
[x] SGV: instance id
[x] SIG: position
[ ] SIG: clip distance
[ ] SIG: cull distance
[ ] SIG: render target array index
[ ] SIG: viewport array index
[x] fragment function
[x] user defined input
[x] user defined output (RenderTarget)
No dual-source blending yet
[x] SGV: primitive id
[ ] SGV: input coverage
[x] SGV: isfrontface
[x] SGV: position
[x] SGV: sample index
[x] render target array index *
[x] viewport array index *
[x] SIV: depth (include depthGE and depthLE)
[x] kernel function
[x] thread id
[x] thread group id
[x] thread id in group
[x] thread id in group flatten
resource binding
[x] temp register
[x] indexable temp register
[x] constant buffer
[x] srv: textures/typed
[x] srv: raw
[x] srv: structured
[x] uav: textures/typed
[x] uav: raw
[x] uav: structured
[ ] uav: counter
[x] sampler
[x] threadgroup memory (not really to bind but declare)
dxbc instructions: integer arithmetic / bitwise
[x] iadd
iaddcb
[x] imad
[x] imax
[x] imin
[x] imul
[x] ineg
[ ] uaddc
[x] udiv
[x] umad
[x] umax
[x] umin
[ ] usubb
[ ] msad
[x] and
[x] bfi
[x] bfrev
[x] countbits
[x] firstbit
[x] ibfe
[x] ishl
[x] ishr
[x] not
[x] or
[x] ubfe
[x] ushr
[x] xor
dxbc instructions: float arithmetic
[x] add
[x] dp2
[x] dp3
[x] dp4
[x] div
[x] exp
[x] frc
[x] log
[x] mad
[x] max
[x] min
[x] mul
[x] nop
[x] round_ne
[x] round_ni
[x] round_pi
[x] ruond_z
[x] rcp
[x] rsq
[x] sincos
[x] sqrt
dxbc instructions: condition (almost done)
[x] eq
[x] ne
[x] lt
[x] ge
[x] ieq
[x] ine
[x] ilt
[x] ige
[x] ult
[x] uge
dxbc instructions: control flow
[x] if
[x] else
[x] endif
[x] loop
[x] endloop
[x] break
[x] breakc
[x] continue
[x] continuec
[x] switch
[x] case
[x] default
[x] endswitch
[x] ret
[x] retc
[ ] call
[ ] callc
[ ] label
[ ] fcall
[ ] "this" register
dxbc instructions: raster
[x] discard
[x] deriv_rtx_coarse
[x] deriv_rty_coarse
[x] deriv_rtx_fine
[x] deriv_rtx_fine
[x] lod
dxbc instructions : move
[x] mov
[x] movc
[x] swap
dxbc instructions: type conversion
[x] ftoi
[x] ftou
[x] itof
[x] utof
[x] f16tof32
[x] f32tof16
dxbc instructions: resource access
[x] bufinfo
[x] gather4
[x] gather4_c
[x] gather4_po
[x] gather4_po_c
[x] ld
[x] ld2dms
[x] ld_uav_typed
[x] store_uav_typed
[x] ld_raw
[x] store_raw
[x] ld_structured
[x] store_structured
[ ] resinfo
[x] sample
[x] sample_b
[x] sample_d
[x] sample_l
[x] sample_c
[x] sample_c_lz
[ ] sampleinfo
[ ] samplepos
[ ] eval_sample_index
[ ] eval_centroid
[ ] eval_snapped
[ ] check_access_mapped
dxbc: topology (state here for reference, but we don't implement GS for now
[ ] cut
[ ] cut_stream
[ ] emit
[ ] emit_stream
[ ] emitThenCut
[ ] emitThenCut_stream
dxbc: uav and tgsm (atomic) operations
[x] sync
[x] atomic_and
[x] atomic_or
[x] atomic_xor
[x] atomic_cmp_store
[x] atomic_iadd
[x] atomic_imax
[x] atomic_imin
[x] atomic_umax
[x] atomic_umin
[ ] imm_atomic_alloc
[ ] imm_atomic_consume
[x] imm_atomic_and
[x] imm_atomic_or
[x] imm_atomic_xor
[x] imm_atomic_exch
[x] imm_atomic_cmp_exch
[x] imm_atomic_iadd
[x] imm_atomic_imax
[x] imm_atomic_imin
[x] imm_atomic_umax
[x] imm_atomic_umin
dxbc: source modifier
[x] negative
[x] abs
dxbc: dest modifier
[x] saturate
precise
.metallib
serializationinput/output binding
resource binding
dxbc instructions: integer arithmetic / bitwise
iaddcbdxbc instructions: float arithmetic
dxbc instructions: condition (almost done)
dxbc instructions: control flow
dxbc instructions: raster
dxbc instructions : move
dxbc instructions: type conversion
dxbc instructions: resource access
dxbc: topology (state here for reference, but we don't implement GS for now
dxbc: uav and tgsm (atomic) operations
dxbc: source modifier
dxbc: dest modifier
precise