22#ifndef __WINE_D3DCOMPILER_PRIVATE_H
23#define __WINE_D3DCOMPILER_PRIVATE_H
27#include "wine/rbtree.h"
47#define D3DERR_INVALIDCALL 0x8876086c
169#define MAX_SRC_REGS 4
197 uint32_t regnum,
unsigned int line_no);
203 const struct src_regs *srcs,
int expectednsrcs);
215#define MESSAGEBUFFER_INITIAL_SIZE 256
264#define PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args)))
266#define PRINTF_ATTR(fmt,args)
289#define SWIZZLE_ERR ~0U
414#define BWRITERSP_WRITEMASK_0 0x1
415#define BWRITERSP_WRITEMASK_1 0x2
416#define BWRITERSP_WRITEMASK_2 0x4
417#define BWRITERSP_WRITEMASK_3 0x8
418#define BWRITERSP_WRITEMASK_ALL 0xf
437#define BWRITERSI_TEXLD_PROJECT 1
438#define BWRITERSI_TEXLD_BIAS 2
458#define BWRITER_SM1_VS 0xfffeu
459#define BWRITER_SM1_PS 0xffffu
461#define BWRITERPS_VERSION(major, minor) ((BWRITER_SM1_PS << 16) | ((major) << 8) | (minor))
462#define BWRITERVS_VERSION(major, minor) ((BWRITER_SM1_VS << 16) | ((major) << 8) | (minor))
464#define BWRITERVS_X_X (0)
465#define BWRITERVS_X_Y (1)
466#define BWRITERVS_X_Z (2)
467#define BWRITERVS_X_W (3)
469#define BWRITERVS_Y_X (0 << 2)
470#define BWRITERVS_Y_Y (1 << 2)
471#define BWRITERVS_Y_Z (2 << 2)
472#define BWRITERVS_Y_W (3 << 2)
474#define BWRITERVS_Z_X (0 << 4)
475#define BWRITERVS_Z_Y (1 << 4)
476#define BWRITERVS_Z_Z (2 << 4)
477#define BWRITERVS_Z_W (3 << 4)
479#define BWRITERVS_W_X (0 << 6)
480#define BWRITERVS_W_Y (1 << 6)
481#define BWRITERVS_W_Z (2 << 6)
482#define BWRITERVS_W_W (3 << 6)
484#define BWRITERVS_NOSWIZZLE (BWRITERVS_X_X | BWRITERVS_Y_Y | BWRITERVS_Z_Z | BWRITERVS_W_W)
486#define BWRITERVS_SWIZZLE_X (BWRITERVS_X_X | BWRITERVS_Y_X | BWRITERVS_Z_X | BWRITERVS_W_X)
487#define BWRITERVS_SWIZZLE_Y (BWRITERVS_X_Y | BWRITERVS_Y_Y | BWRITERVS_Z_Y | BWRITERVS_W_Y)
488#define BWRITERVS_SWIZZLE_Z (BWRITERVS_X_Z | BWRITERVS_Y_Z | BWRITERVS_Z_Z | BWRITERVS_W_Z)
489#define BWRITERVS_SWIZZLE_W (BWRITERVS_X_W | BWRITERVS_Y_W | BWRITERVS_Z_W | BWRITERVS_W_W)
519#define DXBC_HEADER_SIZE (8 * sizeof(uint32_t))
521#define MAKE_TAG(ch0, ch1, ch2, ch3) \
522 ((DWORD)(ch0) | ((DWORD)(ch1) << 8) | \
523 ((DWORD)(ch2) << 16) | ((DWORD)(ch3) << 24 ))
524#define TAG_Aon9 MAKE_TAG('A', 'o', 'n', '9')
525#define TAG_DXBC MAKE_TAG('D', 'X', 'B', 'C')
526#define TAG_FX10 MAKE_TAG('F', 'X', '1', '0')
527#define TAG_ISGN MAKE_TAG('I', 'S', 'G', 'N')
528#define TAG_OSGN MAKE_TAG('O', 'S', 'G', 'N')
529#define TAG_OSG5 MAKE_TAG('O', 'S', 'G', '5')
530#define TAG_PCSG MAKE_TAG('P', 'C', 'S', 'G')
531#define TAG_RDEF MAKE_TAG('R', 'D', 'E', 'F')
532#define TAG_SDBG MAKE_TAG('S', 'D', 'B', 'G')
533#define TAG_SHDR MAKE_TAG('S', 'H', 'D', 'R')
534#define TAG_SHEX MAKE_TAG('S', 'H', 'E', 'X')
535#define TAG_STAT MAKE_TAG('S', 'T', 'A', 'T')
536#define TAG_XNAP MAKE_TAG('X', 'N', 'A', 'P')
537#define TAG_XNAS MAKE_TAG('X', 'N', 'A', 'S')
std::map< E_MODULE, HMODULE > mod
enum _D3D_SHADER_VARIABLE_CLASS D3D_SHADER_VARIABLE_CLASS
enum _D3D_SHADER_VARIABLE_TYPE D3D_SHADER_VARIABLE_TYPE
void create_vs11_parser(struct asm_parser *ret)
bwritervs_rastout_offsets
const char * debug_print_srcmod(uint32_t mod)
bwritershader_param_srcmod_type
void create_ps12_parser(struct asm_parser *ret)
BOOL add_constB(struct bwriter_shader *shader, uint32_t reg, BOOL x)
void create_vs2x_parser(struct asm_parser *ret)
@ BWRITER_COMPARISON_NONE
void compilation_message(struct compilation_messages *msg, const char *fmt, va_list args)
bwritershader_param_dstmod_type
@ BWRITERSPDM_PARTIALPRECISION
@ BWRITERSPDM_MSAMPCENTROID
HRESULT shader_write_bytecode(const struct bwriter_shader *shader, uint32_t **result, uint32_t *size)
void create_vs10_parser(struct asm_parser *ret)
#define PRINTF_ATTR(fmt, args)
void create_ps30_parser(struct asm_parser *ret)
@ BWRITERDECLUSAGE_BLENDWEIGHT
@ BWRITERDECLUSAGE_NORMAL
@ BWRITERDECLUSAGE_POSITION
@ BWRITERDECLUSAGE_BINORMAL
@ BWRITERDECLUSAGE_TANGENT
@ BWRITERDECLUSAGE_TESSFACTOR
@ BWRITERDECLUSAGE_BLENDINDICES
@ BWRITERDECLUSAGE_POSITIONT
@ BWRITERDECLUSAGE_TEXCOORD
@ BWRITERDECLUSAGE_SAMPLE
const char * debug_print_shift(uint32_t shift)
const char * debug_print_comp(uint32_t comp)
BOOL add_constF(struct bwriter_shader *shader, uint32_t reg, float x, float y, float z, float w)
BOOL record_sampler(struct bwriter_shader *shader, uint32_t samptype, uint32_t mod, uint32_t regnum)
struct instruction * alloc_instr(unsigned int srcs)
void WINAPIV static void set_parse_status(enum parse_status *current, enum parse_status update)
void create_ps11_parser(struct asm_parser *ret)
const char * debug_d3dcompiler_d3d_blob_part(D3D_BLOB_PART part)
void create_ps10_parser(struct asm_parser *ret)
void SlDeleteShader(struct bwriter_shader *shader)
const char * debug_print_dstreg(const struct shader_reg *reg)
void create_ps20_parser(struct asm_parser *ret)
bwritersampler_texture_type
struct bwriter_shader * SlAssembleShader(const char *text, char **messages)
void create_ps14_parser(struct asm_parser *ret)
const char * debug_print_dstmod(uint32_t mod)
bwritershader_param_register_type
void create_vs30_parser(struct asm_parser *ret)
void WINAPIV asmparser_message(struct asm_parser *ctx, const char *fmt,...) PRINTF_ATTR(2
struct asm_parser asm_ctx
bwritershader_instruction_opcode_type
@ BWRITERSIO_TEXM3x2DEPTH
@ BWRITERSIO_TEXM3x3VSPEC
BOOL record_declaration(struct bwriter_shader *shader, uint32_t usage, uint32_t usage_idx, uint32_t mod, BOOL output, uint32_t regnum, uint32_t writemask, BOOL builtin)
const char * debug_d3dcompiler_shader_variable_type(D3D_SHADER_VARIABLE_TYPE t)
const char * debug_print_srcreg(const struct shader_reg *reg)
struct bwriter_shader * parse_asm_shader(char **messages)
void create_vs20_parser(struct asm_parser *ret)
void create_ps13_parser(struct asm_parser *ret)
const char * debug_print_opcode(uint32_t opcode)
const char * debug_d3dcompiler_shader_variable_class(D3D_SHADER_VARIABLE_CLASS c)
BOOL add_constI(struct bwriter_shader *shader, uint32_t reg, int x, int y, int z, int w)
void create_ps2x_parser(struct asm_parser *ret)
BOOL add_instruction(struct bwriter_shader *shader, struct instruction *instr)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLubyte GLubyte GLubyte GLubyte w
GLsizeiptr const GLvoid GLenum usage
struct task_struct * current
struct vkd3d_spirv_builtin builtin
struct bwriter_shader * shader
unsigned int m3x3pad_count
const struct asmparser_backend * funcs
void(* dcl_input)(struct asm_parser *This, uint32_t usage, uint32_t num, uint32_t mod, const struct shader_reg *reg)
void(* predicate)(struct asm_parser *This, const struct shader_reg *predicate)
void(* constB)(struct asm_parser *This, uint32_t reg, BOOL x)
void(* dcl_sampler)(struct asm_parser *This, uint32_t samptype, uint32_t mod, uint32_t regnum, unsigned int line_no)
void(* constI)(struct asm_parser *This, uint32_t reg, int x, int y, int z, int w)
void(* instr)(struct asm_parser *parser, uint32_t opcode, uint32_t mod, uint32_t shift, enum bwriter_comparison_type comp, const struct shader_reg *dst, const struct src_regs *srcs, int expectednsrcs)
void(* srcreg)(struct asm_parser *This, struct instruction *instr, int num, const struct shader_reg *src)
void(* dstreg)(struct asm_parser *This, struct instruction *instr, const struct shader_reg *dst)
void(* constF)(struct asm_parser *This, uint32_t reg, float x, float y, float z, float w)
void(* coissue)(struct asm_parser *This)
void(* dcl_output)(struct asm_parser *This, uint32_t usage, uint32_t num, const struct shader_reg *reg)
struct constant ** constI
unsigned char major_version
struct declaration * outputs
struct declaration * inputs
struct constant ** constB
struct constant ** constF
unsigned int instr_alloc_size
struct samplerdecl * samplers
unsigned int num_samplers
unsigned char minor_version
struct instruction ** instr
enum bwriter_comparison_type comptype
struct shader_reg predicate
uint32_t additional_offset
struct shader_reg * rel_reg
struct shader_reg reg[MAX_SRC_REGS]