Henri Verbeet : wined3d: Introduce shader_sm1_read_comment() to read shader comments.
Alexandre Julliard
julliard at winehq.org
Fri May 1 09:33:20 CDT 2009
Module: wine
Branch: master
Commit: a605fcd2fd54358a3615b071229935f224f69c2e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a605fcd2fd54358a3615b071229935f224f69c2e
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Fri May 1 09:13:54 2009 +0200
wined3d: Introduce shader_sm1_read_comment() to read shader comments.
---
dlls/wined3d/baseshader.c | 48 +++++++++++++++++++++++---------------------
1 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index 7efed39..c56b3cf 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -296,6 +296,20 @@ static void shader_sm1_read_semantic(const DWORD **ptr, struct wined3d_shader_se
shader_parse_dst_param(dst_token, NULL, &semantic->reg);
}
+static void shader_sm1_read_comment(const DWORD **ptr, const char **comment)
+{
+ DWORD token = **ptr;
+
+ if ((token & WINED3DSI_OPCODE_MASK) != WINED3DSIO_COMMENT)
+ {
+ *comment = NULL;
+ return;
+ }
+
+ *comment = (const char *)++(*ptr);
+ *ptr += (token & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
+}
+
static const char *shader_opcode_names[] =
{
/* WINED3DSIH_ABS */ "abs",
@@ -465,11 +479,6 @@ static inline DWORD shader_get_writemask(DWORD param)
return param & WINED3DSP_WRITEMASK_ALL;
}
-static inline BOOL shader_is_comment(DWORD token)
-{
- return WINED3DSIO_COMMENT == (token & WINED3DSI_OPCODE_MASK);
-}
-
/* Convert floating point offset relative
* to a register file to an absolute offset for float constants */
static unsigned int shader_get_float_offset(WINED3DSHADER_PARAM_REGISTER_TYPE register_type, UINT register_idx)
@@ -608,16 +617,12 @@ HRESULT shader_get_registers_used(IWineD3DBaseShader *iface, struct shader_reg_m
while (WINED3DVS_END() != *pToken) {
struct wined3d_shader_instruction ins;
+ const char *comment;
UINT param_size;
/* Skip comments */
- if (shader_is_comment(*pToken))
- {
- DWORD comment_len = (*pToken & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
- ++pToken;
- pToken += comment_len;
- continue;
- }
+ shader_sm1_read_comment(&pToken, &comment);
+ if (comment) continue;
/* Fetch opcode */
shader_sm1_read_opcode(&pToken, &ins, ¶m_size, shader_ins, shader_version);
@@ -1132,15 +1137,12 @@ void shader_generate_main(IWineD3DBaseShader *iface, SHADER_BUFFER* buffer,
while (WINED3DPS_END() != *pToken)
{
+ const char *comment;
UINT param_size;
/* Skip comment tokens */
- if (shader_is_comment(*pToken))
- {
- pToken += (*pToken & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
- ++pToken;
- continue;
- }
+ shader_sm1_read_comment(&pToken, &comment);
+ if (comment) continue;
/* Read opcode */
shader_sm1_read_opcode(&pToken, &ins, ¶m_size, opcode_table, shader_version);
@@ -1245,14 +1247,14 @@ void shader_trace_init(const DWORD *pFunction, const SHADER_OPCODE *opcode_table
while (WINED3DVS_END() != *pToken)
{
struct wined3d_shader_instruction ins;
+ const char *comment;
UINT param_size;
- if (shader_is_comment(*pToken)) /* comment */
+ /* comment */
+ shader_sm1_read_comment(&pToken, &comment);
+ if (comment)
{
- DWORD comment_len = (*pToken & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
- ++pToken;
- TRACE("//%s\n", (const char*)pToken);
- pToken += comment_len;
+ TRACE("//%s\n", comment);
continue;
}
More information about the wine-cvs
mailing list