summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/svga/svga_tgsi_emit.h98
1 files changed, 56 insertions, 42 deletions
diff --git a/src/gallium/drivers/svga/svga_tgsi_emit.h b/src/gallium/drivers/svga/svga_tgsi_emit.h
index 949c39dd3ee..e36a9559ed8 100644
--- a/src/gallium/drivers/svga/svga_tgsi_emit.h
+++ b/src/gallium/drivers/svga/svga_tgsi_emit.h
@@ -38,16 +38,18 @@ struct src_register
};
-struct svga_arl_consts {
+struct svga_arl_consts
+{
int number;
int idx;
int swizzle;
int arl_num;
};
-/* Internal functions:
- */
+/**
+ * This is the context/state used during TGSI->SVGA shader translation.
+ */
struct svga_shader_emitter
{
unsigned size;
@@ -63,7 +65,7 @@ struct svga_shader_emitter
int nr_hw_float_const;
int nr_hw_int_const;
int nr_hw_temp;
-
+
int insn_offset;
int internal_temp_count;
@@ -129,28 +131,24 @@ struct svga_shader_emitter
};
-boolean svga_shader_emit_dword( struct svga_shader_emitter *emit,
- unsigned dword );
+boolean
+svga_shader_emit_dword(struct svga_shader_emitter *emit, unsigned dword);
-boolean svga_shader_emit_dwords( struct svga_shader_emitter *emit,
- const unsigned *dwords,
- unsigned nr );
+boolean
+svga_shader_emit_dwords(struct svga_shader_emitter *emit,
+ const unsigned *dwords, unsigned nr);
-boolean svga_shader_emit_opcode( struct svga_shader_emitter *emit,
- unsigned opcode );
+boolean
+svga_shader_emit_opcode(struct svga_shader_emitter *emit,
+ unsigned opcode);
-boolean svga_shader_emit_instructions( struct svga_shader_emitter *emit,
- const struct tgsi_token *tokens );
+boolean
+svga_shader_emit_instructions(struct svga_shader_emitter *emit,
+ const struct tgsi_token *tokens);
-boolean svga_translate_decl_sm30( struct svga_shader_emitter *emit,
- const struct tgsi_full_declaration *decl );
-
-
-static INLINE boolean emit_instruction( struct svga_shader_emitter *emit,
- SVGA3dShaderInstToken opcode )
-{
- return svga_shader_emit_opcode( emit, opcode.value );
-}
+boolean
+svga_translate_decl_sm30(struct svga_shader_emitter *emit,
+ const struct tgsi_full_declaration *decl);
#define TRANSLATE_SWIZZLE(x,y,z,w) ((x) | ((y) << 2) | ((z) << 4) | ((w) << 6))
@@ -166,9 +164,18 @@ static INLINE boolean emit_instruction( struct svga_shader_emitter *emit,
TRANSLATE_SWIZZLE(TGSI_SWIZZLE_W,TGSI_SWIZZLE_W,TGSI_SWIZZLE_W,TGSI_SWIZZLE_W)
+/** Emit the given SVGA3dShaderInstToken opcode */
+static INLINE boolean
+emit_instruction(struct svga_shader_emitter *emit,
+ SVGA3dShaderInstToken opcode)
+{
+ return svga_shader_emit_opcode(emit, opcode.value);
+}
+
+/** Generate a SVGA3dShaderInstToken for the given SVGA3D shader opcode */
static INLINE SVGA3dShaderInstToken
-inst_token( unsigned opcode )
+inst_token(unsigned opcode)
{
SVGA3dShaderInstToken inst;
@@ -184,9 +191,8 @@ inst_token( unsigned opcode )
* Note that this function is used to create tokens for output registers,
* temp registers AND constants (see emit_def_const()).
*/
-static INLINE SVGA3dShaderDestToken
-dst_register( unsigned file,
- int number )
+static INLINE SVGA3dShaderDestToken
+dst_register(unsigned file, int number)
{
SVGA3dShaderDestToken dest;
@@ -204,13 +210,17 @@ dst_register( unsigned file,
dest.shfScale = 0;
dest.type_lower = file & 0x7;
dest.reserved0 = 1; /* is_reg */
-
+
return dest;
}
+
+/**
+ * Apply a writemask to the given SVGA3dShaderDestToken, returning a
+ * new SVGA3dShaderDestToken.
+ */
static INLINE SVGA3dShaderDestToken
-writemask( SVGA3dShaderDestToken dest,
- unsigned mask )
+writemask(SVGA3dShaderDestToken dest, unsigned mask)
{
assert(dest.mask & mask);
dest.mask &= mask;
@@ -218,8 +228,9 @@ writemask( SVGA3dShaderDestToken dest,
}
-static INLINE SVGA3dShaderSrcToken
-src_token( unsigned file, int number )
+/** Create a SVGA3dShaderSrcToken given a register file and number */
+static INLINE SVGA3dShaderSrcToken
+src_token(unsigned file, int number)
{
SVGA3dShaderSrcToken src;
@@ -241,28 +252,31 @@ src_token( unsigned file, int number )
}
-static INLINE struct src_register
-src_register( unsigned file, int number )
+/** Create a src_register given a register file and register number */
+static INLINE struct src_register
+src_register(unsigned file, int number)
{
struct src_register src;
-
- src.base = src_token( file, number );
+
+ src.base = src_token(file, number);
src.indirect.value = 0;
return src;
}
-static INLINE SVGA3dShaderDestToken dst( struct src_register src )
+/** Translate src_register into SVGA3dShaderDestToken */
+static INLINE SVGA3dShaderDestToken
+dst(struct src_register src)
{
- return dst_register( SVGA3dShaderGetRegType( src.base.value ),
- src.base.num );
+ return dst_register(SVGA3dShaderGetRegType(src.base.value), src.base.num);
}
-static INLINE struct src_register src( SVGA3dShaderDestToken dst )
+
+/** Translate SVGA3dShaderDestToken to a src_register */
+static INLINE struct src_register
+src(SVGA3dShaderDestToken dst)
{
- return src_register( SVGA3dShaderGetRegType( dst.value ),
- dst.num );
+ return src_register(SVGA3dShaderGetRegType(dst.value), dst.num);
}
-
#endif