d3d1x: autogenerate shader enums and text from def files
authorLuca Barbieri <luca@luca-barbieri.com>
Thu, 23 Sep 2010 11:17:45 +0000 (13:17 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Thu, 23 Sep 2010 14:06:02 +0000 (16:06 +0200)
This avoids the duplication in tpf.h and tpf_text.cpp

17 files changed:
src/gallium/state_trackers/d3d1x/d3d1xshader/Makefile
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/files.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/interpolations.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/opcodes.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_compnums.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_index_reprs.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_modes.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/shortfiles.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/svs.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/targets.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/token_instruction_extended_types.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/defs/token_operand_extended_types.txt [new file with mode: 0644]
src/gallium/state_trackers/d3d1x/d3d1xshader/gen-header.sh [new file with mode: 0755]
src/gallium/state_trackers/d3d1x/d3d1xshader/gen-text.sh [new file with mode: 0755]
src/gallium/state_trackers/d3d1x/d3d1xshader/include/tpf.h
src/gallium/state_trackers/d3d1x/d3d1xshader/src/tpf_parse.cpp
src/gallium/state_trackers/d3d1x/d3d1xshader/src/tpf_text.cpp [deleted file]

index 8c8e2fb445f60ed9bbf738541de4e6b2b51b60f5..866762e1bb409048b6e0f90cb0e6a428c81be203 100644 (file)
@@ -5,3 +5,9 @@ PROGS=tools/fxdis
 LIBS=libd3d1xshader.a
 
 include ../Makefile.inc
+
+include/tpf_defs.h: $(wildcard defs/*.txt)
+       ./gen-header.sh $^ > $@
+
+src/tpf_text.cpp: $(wildcard defs/*.txt)
+       ./gen-text.sh $^ > $@
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/files.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/files.txt
new file mode 100644 (file)
index 0000000..c44a46b
--- /dev/null
@@ -0,0 +1,41 @@
+temp
+input
+output
+indexable_temp
+immediate32
+immediate64
+sampler
+resource
+constant_buffer
+immediate_constant_buffer
+label
+input_primitiveid
+output_depth
+null
+rasterizer
+output_coverage_mask
+stream
+function_body
+function_table
+interface
+function_input
+function_output
+output_control_point_id
+input_fork_instance_id
+input_join_instance_id
+input_control_point
+output_control_point
+input_patch_constant
+input_domain_point
+this_pointer
+unordered_access_view
+thread_group_shared_memory
+input_thread_id
+input_thread_group_id
+input_thread_id_in_group
+input_coverage_mask
+input_thread_id_in_group_flattened
+input_gs_instance_id
+output_depth_greater_equal
+output_depth_less_equal
+cycle_counter
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/interpolations.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/interpolations.txt
new file mode 100644 (file)
index 0000000..4e52eec
--- /dev/null
@@ -0,0 +1,8 @@
+undefined
+constant
+linear
+linear centroid
+linear noperspective
+linear noperspective centroid
+linear sample
+linear noperspective sample
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/opcodes.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/opcodes.txt
new file mode 100644 (file)
index 0000000..46ff28d
--- /dev/null
@@ -0,0 +1,207 @@
+add
+and
+break
+breakc
+call
+callc
+case
+continue
+continuec
+cut
+default
+deriv_rtx
+deriv_rty
+discard
+div
+dp2
+dp3
+dp4
+else
+emit
+emitthencut
+endif
+endloop
+endswitch
+eq
+exp
+frc
+ftoi
+ftou
+ge
+iadd
+if
+ieq
+ige
+ilt
+imad
+imax
+imin
+imul
+ine
+ineg
+ishl
+ishr
+itof
+label
+ld
+ld_ms
+log
+loop
+lt
+mad
+min
+max
+customdata
+mov
+movc
+mul
+ne
+nop
+not
+or
+resinfo
+ret
+retc
+round_ne
+round_ni
+round_pi
+round_z
+rsq
+sample
+sample_c
+sample_c_lz
+sample_l
+sample_d
+sample_b
+sqrt
+switch
+sincos
+udiv
+ult
+uge
+umul
+umad
+umax
+umin
+ushr
+utof
+xor
+dcl_resource
+dcl_constant_buffer
+dcl_sampler
+dcl_index_range
+dcl_gs_output_primitive_topology
+dcl_gs_input_primitive
+dcl_max_output_vertex_count
+dcl_input
+dcl_input_sgv
+dcl_input_siv
+dcl_input_ps
+dcl_input_ps_sgv
+dcl_input_ps_siv
+dcl_output
+dcl_output_sgv
+dcl_output_siv
+dcl_temps
+dcl_indexable_temp
+dcl_global_flags
+d3d10_count
+lod
+gather4
+sample_pos
+sample_info
+d3d10_1_count
+hs_decls
+hs_control_point_phase
+hs_fork_phase
+hs_join_phase
+emit_stream
+cut_stream
+emitthencut_stream
+interface_call
+bufinfo
+deriv_rtx_coarse
+deriv_rtx_fine
+deriv_rty_coarse
+deriv_rty_fine
+gather4_c
+gather4_po
+gather4_po_c
+rcp
+f32tof16
+f16tof32
+uaddc
+usubb
+countbits
+firstbit_hi
+firstbit_lo
+firstbit_shi
+ubfe
+ibfe
+bfi
+bfrev
+swapc
+dcl_stream
+dcl_function_body
+dcl_function_table
+dcl_interface
+dcl_input_control_point_count
+dcl_output_control_point_count
+dcl_tess_domain
+dcl_tess_partitioning
+dcl_tess_output_primitive
+dcl_hs_max_tessfactor
+dcl_hs_fork_phase_instance_count
+dcl_hs_join_phase_instance_count
+dcl_thread_group
+dcl_unordered_access_view_typed
+dcl_unordered_access_view_raw
+dcl_unordered_access_view_structured
+dcl_thread_group_shared_memory_raw
+dcl_thread_group_shared_memory_structured
+dcl_resource_raw
+dcl_resource_structured
+ld_uav_typed
+store_uav_typed
+ld_raw
+store_raw
+ld_structured
+store_structured
+atomic_and
+atomic_or
+atomic_xor
+atomic_cmp_store
+atomic_iadd
+atomic_imax
+atomic_imin
+atomic_umax
+atomic_umin
+imm_atomic_alloc
+imm_atomic_consume
+imm_atomic_iadd
+imm_atomic_and
+imm_atomic_or
+imm_atomic_xor
+imm_atomic_exch
+imm_atomic_cmp_exch
+imm_atomic_imax
+imm_atomic_imin
+imm_atomic_umax
+imm_atomic_umin
+sync
+dadd
+dmax
+dmin
+dmul
+deq
+dge
+dlt
+dne
+dmov
+dmovc
+dtof
+ftod
+eval_snapped
+eval_sample_index
+eval_centroid
+dcl_gs_instance_count
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_compnums.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_compnums.txt
new file mode 100644 (file)
index 0000000..887df2b
--- /dev/null
@@ -0,0 +1,5 @@
+0
+1
+4
+n
+
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_index_reprs.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_index_reprs.txt
new file mode 100644 (file)
index 0000000..f1ce172
--- /dev/null
@@ -0,0 +1,5 @@
+imm32
+imm64
+reg
+reg_imm32
+reg_imm64
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_modes.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/operand_modes.txt
new file mode 100644 (file)
index 0000000..4088957
--- /dev/null
@@ -0,0 +1,4 @@
+mask
+swizzle
+scalar
+
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/shortfiles.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/shortfiles.txt
new file mode 100644 (file)
index 0000000..9e2d303
--- /dev/null
@@ -0,0 +1,41 @@
+r
+v
+o
+x
+l
+d
+sampler
+resource
+cb
+icb
+label
+vPrim
+oDepth
+null
+rasterizer
+oMask
+stream
+function_body
+function_table
+interface
+function_input
+function_output
+vOutputControlPointID
+vForkInstanceID
+vJoinInstanceID
+vicp
+vocp
+input_patch_constant
+vDomain
+this
+u
+g
+vThreadID
+vThreadGrouID
+vThreadIDInGroup
+vCoverage
+vThreadIDInGroupFlattened
+vGSInstanceID
+oDepthGE
+oDepthLE
+vCycleCounter
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/svs.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/svs.txt
new file mode 100644 (file)
index 0000000..c7148ec
--- /dev/null
@@ -0,0 +1,23 @@
+undefined
+position
+clip_distance
+cull_distance
+render_target_array_index
+viewport_array_index
+vertex_id
+primitive_id
+instance_id
+is_front_face
+sample_index
+final_quad_u_eq_0_edge_tessfactor
+final_quad_v_eq_0_edge_tessfactor
+final_quad_u_eq_1_edge_tessfactor
+final_quad_v_eq_1_edge_tessfactor
+final_quad_u_inside_tessfactor
+final_quad_v_inside_tessfactor
+final_tri_u_eq_0_edge_tessfactor
+final_tri_v_eq_0_edge_tessfactor
+final_tri_w_eq_0_edge_tessfactor
+final_tri_inside_tessfactor
+final_line_detail_tessfactor
+final_line_density_tessfactor
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/targets.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/targets.txt
new file mode 100644 (file)
index 0000000..d3bc186
--- /dev/null
@@ -0,0 +1,13 @@
+unknown
+buffer
+texture1d
+texture2d
+texture2dms
+texture3d
+texturecube
+texture1darray
+texture2darray
+texture2dmsarray
+texturecubearray
+raw_buffer
+structured_buffer
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/token_instruction_extended_types.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/token_instruction_extended_types.txt
new file mode 100644 (file)
index 0000000..e8fd70c
--- /dev/null
@@ -0,0 +1,4 @@
+empty
+sample_controls
+resource_dim
+resource_return_type
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/token_operand_extended_types.txt b/src/gallium/state_trackers/d3d1x/d3d1xshader/defs/token_operand_extended_types.txt
new file mode 100644 (file)
index 0000000..891fcaf
--- /dev/null
@@ -0,0 +1,2 @@
+empty
+modifier
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/gen-header.sh b/src/gallium/state_trackers/d3d1x/d3d1xshader/gen-header.sh
new file mode 100755 (executable)
index 0000000..558794f
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/bash
+for i in "$@"; do
+       n=$(basename "$i" .txt|sed -e 's/s$//')
+       if test "$n" == "shortfile"; then continue; fi
+       echo "enum tpf_$n"
+       echo "{"
+       while read j; do
+               echo $'\t'"TPF_${n}_$j",
+       done < "$i" |tr '[a-z]' '[A-Z]'|tr ' ' '_'
+       echo $'\t'"TPF_${n}_COUNT"|tr '[a-z]' '[A-Z]'
+       echo "};"
+       echo
+done
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/gen-text.sh b/src/gallium/state_trackers/d3d1x/d3d1xshader/gen-text.sh
new file mode 100755 (executable)
index 0000000..b31e16e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+for i in "$@"; do
+       n=$(basename "$i" .txt|sed -e 's/s$//')
+       echo "const char* tpf_${n}_names[] ="
+       echo "{"
+       while read j; do
+               echo $'\t'"\"$j\"",
+       done < "$i"
+       echo "};"
+       echo
+done
index 2761b794d59b6cddbc17d0bae08698d21d4b43ac..6ab9b820e8fac422b1d36ab3ee4058bd64b9cd5b 100644 (file)
 #include <iostream>
 #include "le32.h"
 
-/* This is an independent implementation of definitions and tools for the
- * "tokenized program format" (TPF) bytecode  documented in the
- * d3d11TokenizedProgramFormat.hpp header in the Windows Driver Development kit
- */
-
-enum tpf_opcode {
-       // Shader Model 4.0 (Direct3D 10.0)
-
-       TPF_OPCODE_ADD,
-       TPF_OPCODE_AND,
-       TPF_OPCODE_BREAK,
-       TPF_OPCODE_BREAKC,
-       TPF_OPCODE_CALL,
-       TPF_OPCODE_CALLC,
-       TPF_OPCODE_CASE,
-       TPF_OPCODE_CONTINUE,
-       TPF_OPCODE_CONTINUEC,
-       TPF_OPCODE_CUT,
-       TPF_OPCODE_DEFAULT,
-       TPF_OPCODE_DERIV_RTX,
-       TPF_OPCODE_DERIV_RTY,
-       TPF_OPCODE_DISCARD,
-       TPF_OPCODE_DIV,
-       TPF_OPCODE_DP2,
-       TPF_OPCODE_DP3,
-       TPF_OPCODE_DP4,
-       TPF_OPCODE_ELSE,
-       TPF_OPCODE_EMIT,
-       TPF_OPCODE_EMITTHENCUT,
-       TPF_OPCODE_ENDIF,
-       TPF_OPCODE_ENDLOOP,
-       TPF_OPCODE_ENDSWITCH,
-       TPF_OPCODE_EQ,
-       TPF_OPCODE_EXP,
-       TPF_OPCODE_FRC,
-       TPF_OPCODE_FTOI,
-       TPF_OPCODE_FTOU,
-       TPF_OPCODE_GE,
-       TPF_OPCODE_IADD,
-       TPF_OPCODE_IF,
-       TPF_OPCODE_IEQ,
-       TPF_OPCODE_IGE,
-       TPF_OPCODE_ILT,
-       TPF_OPCODE_IMAD,
-       TPF_OPCODE_IMAX,
-       TPF_OPCODE_IMIN,
-       TPF_OPCODE_IMUL,
-       TPF_OPCODE_INE,
-       TPF_OPCODE_INEG,
-       TPF_OPCODE_ISHL,
-       TPF_OPCODE_ISHR,
-       TPF_OPCODE_ITOF,
-       TPF_OPCODE_LABEL,
-       TPF_OPCODE_LD,
-       TPF_OPCODE_LD_MS,
-       TPF_OPCODE_LOG,
-       TPF_OPCODE_LOOP,
-       TPF_OPCODE_LT,
-       TPF_OPCODE_MAD,
-       TPF_OPCODE_MIN,
-       TPF_OPCODE_MAX,
-       TPF_OPCODE_CUSTOMDATA,
-       TPF_OPCODE_MOV,
-       TPF_OPCODE_MOVC,
-       TPF_OPCODE_MUL,
-       TPF_OPCODE_NE,
-       TPF_OPCODE_NOP,
-       TPF_OPCODE_NOT,
-       TPF_OPCODE_OR,
-       TPF_OPCODE_RESINFO,
-       TPF_OPCODE_RET,
-       TPF_OPCODE_RETC,
-       TPF_OPCODE_ROUND_NE,
-       TPF_OPCODE_ROUND_NI,
-       TPF_OPCODE_ROUND_PI,
-       TPF_OPCODE_ROUND_Z,
-       TPF_OPCODE_RSQ,
-       TPF_OPCODE_SAMPLE,
-       TPF_OPCODE_SAMPLE_C,
-       TPF_OPCODE_SAMPLE_C_LZ,
-       TPF_OPCODE_SAMPLE_L,
-       TPF_OPCODE_SAMPLE_D,
-       TPF_OPCODE_SAMPLE_B,
-       TPF_OPCODE_SQRT,
-       TPF_OPCODE_SWITCH,
-       TPF_OPCODE_SINCOS,
-       TPF_OPCODE_UDIV,
-       TPF_OPCODE_ULT,
-       TPF_OPCODE_UGE,
-       TPF_OPCODE_UMUL,
-       TPF_OPCODE_UMAD,
-       TPF_OPCODE_UMAX,
-       TPF_OPCODE_UMIN,
-       TPF_OPCODE_USHR,
-       TPF_OPCODE_UTOF,
-       TPF_OPCODE_XOR,
-
-       // these have custom formats
-       TPF_OPCODE_DCL_RESOURCE,
-       TPF_OPCODE_DCL_CONSTANT_BUFFER,
-       TPF_OPCODE_DCL_SAMPLER,
-       TPF_OPCODE_DCL_INDEX_RANGE,
-       TPF_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY,
-       TPF_OPCODE_DCL_GS_INPUT_PRIMITIVE,
-       TPF_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT,
-       TPF_OPCODE_DCL_INPUT,
-       TPF_OPCODE_DCL_INPUT_SGV,
-       TPF_OPCODE_DCL_INPUT_SIV,
-       TPF_OPCODE_DCL_INPUT_PS,
-       TPF_OPCODE_DCL_INPUT_PS_SGV,
-       TPF_OPCODE_DCL_INPUT_PS_SIV,
-       TPF_OPCODE_DCL_OUTPUT,
-       TPF_OPCODE_DCL_OUTPUT_SGV,
-       TPF_OPCODE_DCL_OUTPUT_SIV,
-       TPF_OPCODE_DCL_TEMPS,
-       TPF_OPCODE_DCL_INDEXABLE_TEMP,
-       TPF_OPCODE_DCL_GLOBAL_FLAGS,
-
-       TPF_OPCODE_D3D10_COUNT, // this is really a reserved opcode...
-
-       // Shader Model 4.1 (Direct3D 10.1)
-
-       TPF_OPCODE_LOD,
-       TPF_OPCODE_GATHER4,
-       TPF_OPCODE_SAMPLE_POS,
-       TPF_OPCODE_SAMPLE_INFO,
-
-       TPF_OPCODE_D3D10_1_COUNT, // this is really a reserved opcode...
-
-       // Shader Model 5.0 (Direct3D 11)
-
-       // HS subshader beginning markers
-       TPF_OPCODE_HS_DECLS,
-       TPF_OPCODE_HS_CONTROL_POINT_PHASE,
-       TPF_OPCODE_HS_FORK_PHASE,
-       TPF_OPCODE_HS_JOIN_PHASE,
-
-       TPF_OPCODE_EMIT_STREAM,
-       TPF_OPCODE_CUT_STREAM,
-       TPF_OPCODE_EMITTHENCUT_STREAM,
-       TPF_OPCODE_INTERFACE_CALL,
-
-       TPF_OPCODE_BUFINFO,
-       TPF_OPCODE_DERIV_RTX_COARSE,
-       TPF_OPCODE_DERIV_RTX_FINE,
-       TPF_OPCODE_DERIV_RTY_COARSE,
-       TPF_OPCODE_DERIV_RTY_FINE,
-       TPF_OPCODE_GATHER4_C,
-       TPF_OPCODE_GATHER4_PO,
-       TPF_OPCODE_GATHER4_PO_C,
-       TPF_OPCODE_RCP,
-       TPF_OPCODE_F32TOF16,
-       TPF_OPCODE_F16TOF32,
-       TPF_OPCODE_UADDC,
-       TPF_OPCODE_USUBB,
-       TPF_OPCODE_COUNTBITS,
-       TPF_OPCODE_FIRSTBIT_HI,
-       TPF_OPCODE_FIRSTBIT_LO,
-       TPF_OPCODE_FIRSTBIT_SHI,
-       TPF_OPCODE_UBFE,
-       TPF_OPCODE_IBFE,
-       TPF_OPCODE_BFI,
-       TPF_OPCODE_BFREV,
-       TPF_OPCODE_SWAPC,
-
-       // these have custom formats
-       TPF_OPCODE_DCL_STREAM,
-       TPF_OPCODE_DCL_FUNCTION_BODY,
-       TPF_OPCODE_DCL_FUNCTION_TABLE,
-       TPF_OPCODE_DCL_INTERFACE,
-
-       // these have custom formats
-       TPF_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT,
-       TPF_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT,
-       TPF_OPCODE_DCL_TESS_DOMAIN,
-       TPF_OPCODE_DCL_TESS_PARTITIONING,
-       TPF_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE,
-       TPF_OPCODE_DCL_HS_MAX_TESSFACTOR,
-       TPF_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT,
-       TPF_OPCODE_DCL_HS_JOIN_PHASE_INSTANCE_COUNT,
-
-       // these have custom formats
-       TPF_OPCODE_DCL_THREAD_GROUP,
-       TPF_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED,
-       TPF_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW,
-       TPF_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED,
-       TPF_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW,
-       TPF_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED,
-       TPF_OPCODE_DCL_RESOURCE_RAW,
-       TPF_OPCODE_DCL_RESOURCE_STRUCTURED,
-
-       TPF_OPCODE_LD_UAV_TYPED,
-       TPF_OPCODE_STORE_UAV_TYPED,
-       TPF_OPCODE_LD_RAW,
-       TPF_OPCODE_STORE_RAW,
-       TPF_OPCODE_LD_STRUCTURED,
-       TPF_OPCODE_STORE_STRUCTURED,
-
-       TPF_OPCODE_ATOMIC_AND,
-       TPF_OPCODE_ATOMIC_OR,
-       TPF_OPCODE_ATOMIC_XOR,
-       TPF_OPCODE_ATOMIC_CMP_STORE,
-       TPF_OPCODE_ATOMIC_IADD,
-       TPF_OPCODE_ATOMIC_IMAX,
-       TPF_OPCODE_ATOMIC_IMIN,
-       TPF_OPCODE_ATOMIC_UMAX,
-       TPF_OPCODE_ATOMIC_UMIN,
-
-       TPF_OPCODE_IMM_ATOMIC_ALLOC,
-       TPF_OPCODE_IMM_ATOMIC_CONSUME,
-       TPF_OPCODE_IMM_ATOMIC_IADD,
-       TPF_OPCODE_IMM_ATOMIC_AND,
-       TPF_OPCODE_IMM_ATOMIC_OR,
-       TPF_OPCODE_IMM_ATOMIC_XOR,
-       TPF_OPCODE_IMM_ATOMIC_EXCH,
-       TPF_OPCODE_IMM_ATOMIC_CMP_EXCH,
-       TPF_OPCODE_IMM_ATOMIC_IMAX,
-       TPF_OPCODE_IMM_ATOMIC_IMIN,
-       TPF_OPCODE_IMM_ATOMIC_UMAX,
-       TPF_OPCODE_IMM_ATOMIC_UMIN,
-
-       TPF_OPCODE_SYNC,
-
-       TPF_OPCODE_DADD,
-       TPF_OPCODE_DMAX,
-       TPF_OPCODE_DMIN,
-       TPF_OPCODE_DMUL,
-       TPF_OPCODE_DEQ,
-       TPF_OPCODE_DGE,
-       TPF_OPCODE_DLT,
-       TPF_OPCODE_DNE,
-       TPF_OPCODE_DMOV,
-       TPF_OPCODE_DMOVC,
-
-       TPF_OPCODE_DTOF,
-       TPF_OPCODE_FTOD,
-
-       TPF_OPCODE_EVAL_SNAPPED,
-       TPF_OPCODE_EVAL_SAMPLE_INDEX,
-       TPF_OPCODE_EVAL_CENTROID,
-
-       TPF_OPCODE_DCL_GS_INSTANCE_COUNT,
-
-       TPF_OPCODE_D3D11_COUNT
-};
+#include "tpf_defs.h"
 
 extern const char* tpf_opcode_names[];
-
-enum tpf_file
-{
-       TPF_FILE_TEMP = 0,
-       TPF_FILE_INPUT = 1,
-       TPF_FILE_OUTPUT = 2,
-       TPF_FILE_INDEXABLE_TEMP = 3,
-       TPF_FILE_IMMEDIATE32    = 4, // one 32-bit value for each component follows
-       TPF_FILE_IMMEDIATE64    = 5, // one 64-bit value for each component follows
-       TPF_FILE_SAMPLER = 6,
-       TPF_FILE_RESOURCE = 7,
-       TPF_FILE_CONSTANT_BUFFER= 8,
-       TPF_FILE_IMMEDIATE_CONSTANT_BUFFER= 9,
-       TPF_FILE_LABEL = 10,
-       TPF_FILE_INPUT_PRIMITIVEID = 11,
-       TPF_FILE_OUTPUT_DEPTH = 12,
-       TPF_FILE_NULL = 13,
-
-       // Added in D3D10.1
-
-       TPF_FILE_RASTERIZER = 14,
-       TPF_FILE_OUTPUT_COVERAGE_MASK = 15,
-
-       // Added in D3D11
-
-       TPF_FILE_STREAM = 16,
-       TPF_FILE_FUNCTION_BODY = 17,
-       TPF_FILE_FUNCTION_TABLE = 18,
-       TPF_FILE_INTERFACE = 19,
-       TPF_FILE_FUNCTION_INPUT = 20,
-       TPF_FILE_FUNCTION_OUTPUT = 21,
-       TPF_FILE_OUTPUT_CONTROL_POINT_ID = 22,
-       TPF_FILE_INPUT_FORK_INSTANCE_ID = 23,
-       TPF_FILE_INPUT_JOIN_INSTANCE_ID = 24,
-       TPF_FILE_INPUT_CONTROL_POINT = 25,
-       TPF_FILE_OUTPUT_CONTROL_POINT = 26,
-       TPF_FILE_INPUT_PATCH_CONSTANT = 27,
-       TPF_FILE_INPUT_DOMAIN_POINT = 28,
-       TPF_FILE_THIS_POINTER = 29,
-       TPF_FILE_UNORDERED_ACCESS_VIEW = 30,
-       TPF_FILE_THREAD_GROUP_SHARED_MEMORY = 31,
-       TPF_FILE_INPUT_THREAD_ID = 32,
-       TPF_FILE_INPUT_THREAD_GROUP_ID = 33,
-       TPF_FILE_INPUT_THREAD_ID_IN_GROUP = 34,
-       TPF_FILE_INPUT_COVERAGE_MASK = 35,
-       TPF_FILE_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36,
-       TPF_FILE_INPUT_GS_INSTANCE_ID = 37,
-       TPF_FILE_OUTPUT_DEPTH_GREATER_EQUAL = 38,
-       TPF_FILE_OUTPUT_DEPTH_LESS_EQUAL = 39,
-       TPF_FILE_CYCLE_COUNTER = 40,
-
-       TPF_FILE_COUNT = 41,
-};
-
 extern const char* tpf_file_names[];
 extern const char* tpf_file_ms_names[];
-
-enum tpf_target
-{
-       TPF_TARGET_UNKNOWN = 0,
-       TPF_TARGET_BUFFER = 1,
-       TPF_TARGET_TEXTURE1D = 2,
-       TPF_TARGET_TEXTURE2D = 3,
-       TPF_TARGET_TEXTURE2DMS = 4,
-       TPF_TARGET_TEXTURE3D = 5,
-       TPF_TARGET_TEXTURECUBE = 6,
-       TPF_TARGET_TEXTURE1DARRAY = 7,
-       TPF_TARGET_TEXTURE2DARRAY = 8,
-       TPF_TARGET_TEXTURE2DMSARRAY = 9,
-       TPF_TARGET_TEXTURECUBEARRAY = 10,
-
-       // Added in D3D11
-       TPF_TARGET_RAW_BUFFER = 11,
-       TPF_TARGET_STRUCTURED_BUFFER = 12,
-};
-
 extern const char* tpf_target_names[];
-
-enum tpf_interpolation
-{
-       TPF_INTERPOLATION_UNDEFINED = 0,
-       TPF_INTERPOLATION_CONSTANT = 1,
-       TPF_INTERPOLATION_LINEAR = 2,
-       TPF_INTERPOLATION_LINEAR_CENTROID = 3,
-       TPF_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
-       TPF_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
-
-       // Added in D3D10.1
-       TPF_INTERPOLATION_LINEAR_SAMPLE = 6,
-       TPF_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
-};
-
 extern const char* tpf_interpolation_names[];
-
-enum tpf_sv
-{
-       TPF_SV_UNDEFINED,
-       TPF_SV_POSITION,
-       TPF_SV_CLIP_DISTANCE,
-       TPF_SV_CULL_DISTANCE,
-       TPF_SV_RENDER_TARGET_ARRAY_INDEX,
-       TPF_SV_VIEWPORT_ARRAY_INDEX,
-       TPF_SV_VERTEX_ID,
-       TPF_SV_PRIMITIVE_ID,
-       TPF_SV_INSTANCE_ID,
-       TPF_SV_IS_FRONT_FACE,
-       TPF_SV_SAMPLE_INDEX,
-
-       // Added in D3D11
-       TPF_SV_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_QUAD_U_INSIDE_TESSFACTOR,
-       TPF_SV_FINAL_QUAD_V_INSIDE_TESSFACTOR,
-       TPF_SV_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR,
-       TPF_SV_FINAL_TRI_INSIDE_TESSFACTOR,
-       TPF_SV_FINAL_LINE_DETAIL_TESSFACTOR,
-       TPF_SV_FINAL_LINE_DENSITY_TESSFACTOR,
-};
-
 extern const char* tpf_sv_names[];
 
 struct tpf_token_version
@@ -518,14 +155,6 @@ struct tpf_token_instruction
        };
 };
 
-enum tpf_token_instruction_extended_type
-{
-       TPF_TOKEN_INSTRUCTION_EXTENDED_TYPE_EMPTY = 0,
-       TPF_TOKEN_INSTRUCTION_EXTENDED_TYPE_SAMPLE_CONTROLS = 1,
-       TPF_TOKEN_INSTRUCTION_EXTENDED_TYPE_RESOURCE_DIM = 2,
-       TPF_TOKEN_INSTRUCTION_EXTENDED_TYPE_RESOURCE_RETURN_TYPE = 3,
-};
-
 union  tpf_token_instruction_extended
 {
        struct
@@ -565,30 +194,6 @@ struct tpf_token_resource_return_type
        unsigned w : 4;
 };
 
-enum tpf_operand_comps
-{
-       TPF_OPERAND_COMPS_0 = 0,
-       TPF_OPERAND_COMPS_1 = 1,
-       TPF_OPERAND_COMPS_4 = 2,
-       TPF_OPERAND_COMPS_N = 3
-};
-
-enum tpf_operand_mode
-{
-       TPF_OPERAND_MODE_MASK = 0,
-       TPF_OPERAND_MODE_SWIZZLE = 1,
-       TPF_OPERAND_MODE_SCALAR = 2
-};
-
-enum tpf_operand_index_repr
-{
-       TPF_OPERAND_INDEX_REPR_IMM32 = 0,
-       TPF_OPERAND_INDEX_REPR_IMM64 = 1,
-       TPF_OPERAND_INDEX_REPR_REG = 2,
-       TPF_OPERAND_INDEX_REPR_REG_IMM32 = 3,
-       TPF_OPERAND_INDEX_REPR_REG_IMM64 = 4,
-};
-
 struct tpf_token_operand
 {
        unsigned comps_enum : 2; /* tpf_operands_comps */
@@ -606,12 +211,6 @@ struct tpf_token_operand
 #define TPF_OPERAND_SEL_SWZ(sel, i) (((sel) >> ((i) * 2)) & 3)
 #define TPF_OPERAND_SEL_SCALAR(sel) ((sel) & 3)
 
-enum tpf_token_operand_extended_type
-{
-       TPF_TOKEN_OPERAND_EXTENDED_TYPE_EMPTY = 0,
-       TPF_TOKEN_OPERAND_EXTENDED_TYPE_MODIFIER = 1,
-};
-
 struct tpf_token_operand_extended
 {
        unsigned type : 6;
@@ -806,3 +405,4 @@ bool tpf_find_labels(tpf_program& program);
 bool tpf_allocate_resource_sampler_pairs(tpf_program& program);
 
 #endif /* TPF_H_ */
+
index a4f6cc6b661d5a45a948ea184fecc4686a243aa1..2dfb88e5beb55720f0a54d3d64127a17f48b0f7f 100644 (file)
@@ -86,13 +86,13 @@ struct tpf_parser
                op.mask = 0xf;
                switch(optok.comps_enum)
                {
-               case TPF_OPERAND_COMPS_0:
+               case TPF_OPERAND_COMPNUM_0:
                        op.comps = 0;
                        break;
-               case TPF_OPERAND_COMPS_1:
+               case TPF_OPERAND_COMPNUM_1:
                        op.comps = 1;
                        break;
-               case TPF_OPERAND_COMPS_4:
+               case TPF_OPERAND_COMPNUM_4:
                        op.comps = 4;
                        op.mode = optok.mode;
                        switch(optok.mode)
@@ -111,7 +111,7 @@ struct tpf_parser
                                break;
                        }
                        break;
-               case TPF_OPERAND_COMPS_N:
+               case TPF_OPERAND_COMPNUM_N:
                        fail("Unhandled operand component type");
                }
                op.file = (tpf_file)optok.file;
@@ -192,7 +192,7 @@ relative:
                        read_token(&insntok);
                        unsigned* insn_end = tokens - 1 + insntok.length;
                        tpf_opcode opcode = (tpf_opcode)insntok.opcode;
-                       check(opcode < TPF_OPCODE_D3D11_COUNT);
+                       check(opcode < TPF_OPCODE_COUNT);
 
                        if(opcode == TPF_OPCODE_CUSTOMDATA)
                        {
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/src/tpf_text.cpp b/src/gallium/state_trackers/d3d1x/d3d1xshader/src/tpf_text.cpp
deleted file mode 100644 (file)
index 94192c9..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-// generated with sed -re 's/TPF_WHATEVER_//; s/=.*//; s,//.*,,; s/,//; s/\s*//g;'|tr '[A-Z]' '[a-z]'|tr -s '\n'|sed -re 's/(.*)/\t"\1",/g'
-
-const char* tpf_opcode_names[] =
-{
-       "add",
-       "and",
-       "break",
-       "breakc",
-       "call",
-       "callc",
-       "case",
-       "continue",
-       "continuec",
-       "cut",
-       "default",
-       "deriv_rtx",
-       "deriv_rty",
-       "discard",
-       "div",
-       "dp2",
-       "dp3",
-       "dp4",
-       "else",
-       "emit",
-       "emitthencut",
-       "endif",
-       "endloop",
-       "endswitch",
-       "eq",
-       "exp",
-       "frc",
-       "ftoi",
-       "ftou",
-       "ge",
-       "iadd",
-       "if",
-       "ieq",
-       "ige",
-       "ilt",
-       "imad",
-       "imax",
-       "imin",
-       "imul",
-       "ine",
-       "ineg",
-       "ishl",
-       "ishr",
-       "itof",
-       "label",
-       "ld",
-       "ld_ms",
-       "log",
-       "loop",
-       "lt",
-       "mad",
-       "min",
-       "max",
-       "customdata",
-       "mov",
-       "movc",
-       "mul",
-       "ne",
-       "nop",
-       "not",
-       "or",
-       "resinfo",
-       "ret",
-       "retc",
-       "round_ne",
-       "round_ni",
-       "round_pi",
-       "round_z",
-       "rsq",
-       "sample",
-       "sample_c",
-       "sample_c_lz",
-       "sample_l",
-       "sample_d",
-       "sample_b",
-       "sqrt",
-       "switch",
-       "sincos",
-       "udiv",
-       "ult",
-       "uge",
-       "umul",
-       "umad",
-       "umax",
-       "umin",
-       "ushr",
-       "utof",
-       "xor",
-       "dcl_resource",
-       "dcl_constant_buffer",
-       "dcl_sampler",
-       "dcl_index_range",
-       "dcl_gs_output_primitive_topology",
-       "dcl_gs_input_primitive",
-       "dcl_max_output_vertex_count",
-       "dcl_input",
-       "dcl_input_sgv",
-       "dcl_input_siv",
-       "dcl_input_ps",
-       "dcl_input_ps_sgv",
-       "dcl_input_ps_siv",
-       "dcl_output",
-       "dcl_output_sgv",
-       "dcl_output_siv",
-       "dcl_temps",
-       "dcl_indexable_temp",
-       "dcl_global_flags",
-       "d3d10_count",
-       "lod",
-       "gather4",
-       "sample_pos",
-       "sample_info",
-       "d3d10_1_count",
-       "hs_decls",
-       "hs_control_point_phase",
-       "hs_fork_phase",
-       "hs_join_phase",
-       "emit_stream",
-       "cut_stream",
-       "emitthencut_stream",
-       "interface_call",
-       "bufinfo",
-       "deriv_rtx_coarse",
-       "deriv_rtx_fine",
-       "deriv_rty_coarse",
-       "deriv_rty_fine",
-       "gather4_c",
-       "gather4_po",
-       "gather4_po_c",
-       "rcp",
-       "f32tof16",
-       "f16tof32",
-       "uaddc",
-       "usubb",
-       "countbits",
-       "firstbit_hi",
-       "firstbit_lo",
-       "firstbit_shi",
-       "ubfe",
-       "ibfe",
-       "bfi",
-       "bfrev",
-       "swapc",
-       "dcl_stream",
-       "dcl_function_body",
-       "dcl_function_table",
-       "dcl_interface",
-       "dcl_input_control_point_count",
-       "dcl_output_control_point_count",
-       "dcl_tess_domain",
-       "dcl_tess_partitioning",
-       "dcl_tess_output_primitive",
-       "dcl_hs_max_tessfactor",
-       "dcl_hs_fork_phase_instance_count",
-       "dcl_hs_join_phase_instance_count",
-       "dcl_thread_group",
-       "dcl_unordered_access_view_typed",
-       "dcl_unordered_access_view_raw",
-       "dcl_unordered_access_view_structured",
-       "dcl_thread_group_shared_memory_raw",
-       "dcl_thread_group_shared_memory_structured",
-       "dcl_resource_raw",
-       "dcl_resource_structured",
-       "ld_uav_typed",
-       "store_uav_typed",
-       "ld_raw",
-       "store_raw",
-       "ld_structured",
-       "store_structured",
-       "atomic_and",
-       "atomic_or",
-       "atomic_xor",
-       "atomic_cmp_store",
-       "atomic_iadd",
-       "atomic_imax",
-       "atomic_imin",
-       "atomic_umax",
-       "atomic_umin",
-       "imm_atomic_alloc",
-       "imm_atomic_consume",
-       "imm_atomic_iadd",
-       "imm_atomic_and",
-       "imm_atomic_or",
-       "imm_atomic_xor",
-       "imm_atomic_exch",
-       "imm_atomic_cmp_exch",
-       "imm_atomic_imax",
-       "imm_atomic_imin",
-       "imm_atomic_umax",
-       "imm_atomic_umin",
-       "sync",
-       "dadd",
-       "dmax",
-       "dmin",
-       "dmul",
-       "deq",
-       "dge",
-       "dlt",
-       "dne",
-       "dmov",
-       "dmovc",
-       "dtof",
-       "ftod",
-       "eval_snapped",
-       "eval_sample_index",
-       "eval_centroid",
-       "dcl_gs_instance_count",
-       "d3d11_count",
-};
-
-const char* tpf_file_names[] =
-{
-       "temp",
-       "input",
-       "output",
-       "indexable_temp",
-       "immediate32",
-       "immediate64",
-       "sampler",
-       "resource",
-       "constant_buffer",
-       "immediate_constant_buffer",
-       "label",
-       "input_primitiveid",
-       "output_depth",
-       "null",
-       "rasterizer",
-       "output_coverage_mask",
-       "stream",
-       "function_body",
-       "function_table",
-       "interface",
-       "function_input",
-       "function_output",
-       "output_control_point_id",
-       "input_fork_instance_id",
-       "input_join_instance_id",
-       "input_control_point",
-       "output_control_point",
-       "input_patch_constant",
-       "input_domain_point",
-       "this_pointer",
-       "unordered_access_view",
-       "thread_group_shared_memory",
-       "input_thread_id",
-       "input_thread_group_id",
-       "input_thread_id_in_group",
-       "input_coverage_mask",
-       "input_thread_id_in_group_flattened",
-       "input_gs_instance_id",
-       "output_depth_greater_equal",
-       "output_depth_less_equal",
-       "cycle_counter",
-};
-
-const char* tpf_file_ms_names[] =
-{
-       "r",
-       "v",
-       "o",
-       "x",
-       "l",
-       "d",
-       "sampler",
-       "resource",
-       "cb",
-       "icb",
-       "label",
-       "vPrim",
-       "oDepth",
-       "null",
-       "rasterizer",
-       "oMask",
-       "stream",
-       "function_body",
-       "function_table",
-       "interface",
-       "function_input",
-       "function_output",
-       "vOutputControlPointID",
-       "vForkInstanceID",
-       "vJoinInstanceID",
-       "vicp",
-       "vocp",
-       "input_patch_constant",
-       "vDomain",
-       "this",
-       "u",
-       "g",
-       "vThreadID",
-       "vThreadGrouID",
-       "vThreadIDInGroup",
-       "vCoverage",
-       "vThreadIDInGroupFlattened",
-       "vGSInstanceID",
-       "oDepthGE",
-       "oDepthLE",
-       "vCycleCounter",
-};
-
-const char* tpf_target_names[] =
-{
-       "unknown",
-       "buffer",
-       "texture1d",
-       "texture2d",
-       "texture2dms",
-       "texture3d",
-       "texturecube",
-       "texture1darray",
-       "texture2darray",
-       "texture2dmsarray",
-       "texturecubearray",
-       "raw_buffer",
-       "structured_buffer",
-};
-
-const char* tpf_interpolation_names[] =
-{
-       "undefined",
-       "constant",
-       "linear",
-       "linear centroid",
-       "linear noperspective",
-       "linear noperspective centroid",
-       "linear sample",
-       "linear noperspective sample",
-};
-
-const char* tpf_sv_names[] =
-{
-       "undefined",
-       "position",
-       "clip_distance",
-       "cull_distance",
-       "render_target_array_index",
-       "viewport_array_index",
-       "vertex_id",
-       "primitive_id",
-       "instance_id",
-       "is_front_face",
-       "sample_index",
-       "final_quad_u_eq_0_edge_tessfactor",
-       "final_quad_v_eq_0_edge_tessfactor",
-       "final_quad_u_eq_1_edge_tessfactor",
-       "final_quad_v_eq_1_edge_tessfactor",
-       "final_quad_u_inside_tessfactor",
-       "final_quad_v_inside_tessfactor",
-       "final_tri_u_eq_0_edge_tessfactor",
-       "final_tri_v_eq_0_edge_tessfactor",
-       "final_tri_w_eq_0_edge_tessfactor",
-       "final_tri_inside_tessfactor",
-       "final_line_detail_tessfactor",
-       "final_line_density_tessfactor",
-};