/** * MojoShader; generate shader programs from bytecode of compiled * Direct3D shaders. * * Please see the file LICENSE.txt in the source's root directory. * * This file written by Ryan C. Gordon. */ #define __MOJOSHADER_INTERNAL__ 1 #include "mojoshader_profile.h" #pragma GCC visibility push(hidden) #if SUPPORT_PROFILE_BYTECODE void emit_BYTECODE_start(Context *ctx, const char *profilestr) { ctx->ignores_ctab = 1; } // emit_BYTECODE_start void emit_BYTECODE_finalize(Context *ctx) { // just copy the whole token stream and make all other emitters no-ops. if (set_output(ctx, &ctx->mainline)) { const size_t len = ((size_t) (ctx->tokens - ctx->orig_tokens)) * sizeof (uint32); buffer_append(ctx->mainline, (const char *) ctx->orig_tokens, len); } // if } // emit_BYTECODE_finalize void emit_BYTECODE_end(Context *ctx) {} void emit_BYTECODE_phase(Context *ctx) {} void emit_BYTECODE_global(Context *ctx, RegisterType t, int n) {} void emit_BYTECODE_array(Context *ctx, VariableList *var) {} void emit_BYTECODE_sampler(Context *c, int s, TextureType t, int tb) {} void emit_BYTECODE_const_array(Context *ctx, const ConstantsList *c, int base, int size) {} void emit_BYTECODE_uniform(Context *ctx, RegisterType t, int n, const VariableList *var) {} void emit_BYTECODE_attribute(Context *ctx, RegisterType t, int n, MOJOSHADER_usage u, int i, int w, int f) {} const char *get_BYTECODE_varname(Context *ctx, RegisterType rt, int regnum) { char regnum_str[16]; const char *regtype_str = get_D3D_register_string(ctx, rt, regnum, regnum_str, sizeof (regnum_str)); char buf[64]; snprintf(buf, sizeof (buf), "%s%s", regtype_str, regnum_str); return StrDup(ctx, buf); } // get_BYTECODE_varname const char *get_BYTECODE_const_array_varname(Context *ctx, int base, int size) { char buf[64]; snprintf(buf, sizeof (buf), "c_array_%d_%d", base, size); return StrDup(ctx, buf); } // get_BYTECODE_const_array_varname #define EMIT_BYTECODE_OPCODE_FUNC(op) \ void emit_BYTECODE_##op(Context *ctx) {} EMIT_BYTECODE_OPCODE_FUNC(RESERVED) EMIT_BYTECODE_OPCODE_FUNC(NOP) EMIT_BYTECODE_OPCODE_FUNC(MOV) EMIT_BYTECODE_OPCODE_FUNC(ADD) EMIT_BYTECODE_OPCODE_FUNC(SUB) EMIT_BYTECODE_OPCODE_FUNC(MAD) EMIT_BYTECODE_OPCODE_FUNC(MUL) EMIT_BYTECODE_OPCODE_FUNC(RCP) EMIT_BYTECODE_OPCODE_FUNC(RSQ) EMIT_BYTECODE_OPCODE_FUNC(DP3) EMIT_BYTECODE_OPCODE_FUNC(DP4) EMIT_BYTECODE_OPCODE_FUNC(MIN) EMIT_BYTECODE_OPCODE_FUNC(MAX) EMIT_BYTECODE_OPCODE_FUNC(SLT) EMIT_BYTECODE_OPCODE_FUNC(SGE) EMIT_BYTECODE_OPCODE_FUNC(EXP) EMIT_BYTECODE_OPCODE_FUNC(LOG) EMIT_BYTECODE_OPCODE_FUNC(LIT) EMIT_BYTECODE_OPCODE_FUNC(DST) EMIT_BYTECODE_OPCODE_FUNC(LRP) EMIT_BYTECODE_OPCODE_FUNC(FRC) EMIT_BYTECODE_OPCODE_FUNC(M4X4) EMIT_BYTECODE_OPCODE_FUNC(M4X3) EMIT_BYTECODE_OPCODE_FUNC(M3X4) EMIT_BYTECODE_OPCODE_FUNC(M3X3) EMIT_BYTECODE_OPCODE_FUNC(M3X2) EMIT_BYTECODE_OPCODE_FUNC(CALL) EMIT_BYTECODE_OPCODE_FUNC(CALLNZ) EMIT_BYTECODE_OPCODE_FUNC(LOOP) EMIT_BYTECODE_OPCODE_FUNC(RET) EMIT_BYTECODE_OPCODE_FUNC(ENDLOOP) EMIT_BYTECODE_OPCODE_FUNC(LABEL) EMIT_BYTECODE_OPCODE_FUNC(POW) EMIT_BYTECODE_OPCODE_FUNC(CRS) EMIT_BYTECODE_OPCODE_FUNC(SGN) EMIT_BYTECODE_OPCODE_FUNC(ABS) EMIT_BYTECODE_OPCODE_FUNC(NRM) EMIT_BYTECODE_OPCODE_FUNC(SINCOS) EMIT_BYTECODE_OPCODE_FUNC(REP) EMIT_BYTECODE_OPCODE_FUNC(ENDREP) EMIT_BYTECODE_OPCODE_FUNC(IF) EMIT_BYTECODE_OPCODE_FUNC(ELSE) EMIT_BYTECODE_OPCODE_FUNC(ENDIF) EMIT_BYTECODE_OPCODE_FUNC(BREAK) EMIT_BYTECODE_OPCODE_FUNC(MOVA) EMIT_BYTECODE_OPCODE_FUNC(TEXKILL) EMIT_BYTECODE_OPCODE_FUNC(TEXBEM) EMIT_BYTECODE_OPCODE_FUNC(TEXBEML) EMIT_BYTECODE_OPCODE_FUNC(TEXREG2AR) EMIT_BYTECODE_OPCODE_FUNC(TEXREG2GB) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X2PAD) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X2TEX) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X3PAD) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X3TEX) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X3SPEC) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X3VSPEC) EMIT_BYTECODE_OPCODE_FUNC(EXPP) EMIT_BYTECODE_OPCODE_FUNC(LOGP) EMIT_BYTECODE_OPCODE_FUNC(CND) EMIT_BYTECODE_OPCODE_FUNC(TEXREG2RGB) EMIT_BYTECODE_OPCODE_FUNC(TEXDP3TEX) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X2DEPTH) EMIT_BYTECODE_OPCODE_FUNC(TEXDP3) EMIT_BYTECODE_OPCODE_FUNC(TEXM3X3) EMIT_BYTECODE_OPCODE_FUNC(TEXDEPTH) EMIT_BYTECODE_OPCODE_FUNC(CMP) EMIT_BYTECODE_OPCODE_FUNC(BEM) EMIT_BYTECODE_OPCODE_FUNC(DP2ADD) EMIT_BYTECODE_OPCODE_FUNC(DSX) EMIT_BYTECODE_OPCODE_FUNC(DSY) EMIT_BYTECODE_OPCODE_FUNC(TEXLDD) EMIT_BYTECODE_OPCODE_FUNC(TEXLDL) EMIT_BYTECODE_OPCODE_FUNC(BREAKP) EMIT_BYTECODE_OPCODE_FUNC(BREAKC) EMIT_BYTECODE_OPCODE_FUNC(IFC) EMIT_BYTECODE_OPCODE_FUNC(SETP) EMIT_BYTECODE_OPCODE_FUNC(DEF) EMIT_BYTECODE_OPCODE_FUNC(DEFI) EMIT_BYTECODE_OPCODE_FUNC(DEFB) EMIT_BYTECODE_OPCODE_FUNC(DCL) EMIT_BYTECODE_OPCODE_FUNC(TEXCRD) EMIT_BYTECODE_OPCODE_FUNC(TEXLD) #undef EMIT_BYTECODE_OPCODE_FUNC #endif // SUPPORT_PROFILE_BYTECODE #pragma GCC visibility pop