wined3d: Implement shader_sm4_is_end().
This commit is contained in:
parent
2a5a6a3439
commit
454dd2ed07
|
@ -334,11 +334,11 @@ HRESULT shader_get_registers_used(IWineD3DBaseShader *iface, const struct wined3
|
||||||
shader_delete_constant_list(&This->baseShader.constantsB);
|
shader_delete_constant_list(&This->baseShader.constantsB);
|
||||||
shader_delete_constant_list(&This->baseShader.constantsI);
|
shader_delete_constant_list(&This->baseShader.constantsI);
|
||||||
|
|
||||||
fe->shader_read_header(&pToken, &shader_version);
|
fe->shader_read_header(fe_data, &pToken, &shader_version);
|
||||||
reg_maps->shader_version = shader_version;
|
reg_maps->shader_version = shader_version;
|
||||||
pshader = shader_is_pshader_version(shader_version);
|
pshader = shader_is_pshader_version(shader_version);
|
||||||
|
|
||||||
while (!fe->shader_is_end(&pToken))
|
while (!fe->shader_is_end(fe_data, &pToken))
|
||||||
{
|
{
|
||||||
struct wined3d_shader_instruction ins;
|
struct wined3d_shader_instruction ins;
|
||||||
const char *comment;
|
const char *comment;
|
||||||
|
@ -876,9 +876,9 @@ void shader_generate_main(IWineD3DBaseShader *iface, SHADER_BUFFER *buffer,
|
||||||
ins.src = src_param;
|
ins.src = src_param;
|
||||||
This->baseShader.parse_state.current_row = 0;
|
This->baseShader.parse_state.current_row = 0;
|
||||||
|
|
||||||
fe->shader_read_header(&pToken, &shader_version);
|
fe->shader_read_header(fe_data, &pToken, &shader_version);
|
||||||
|
|
||||||
while (!fe->shader_is_end(&pToken))
|
while (!fe->shader_is_end(fe_data, &pToken))
|
||||||
{
|
{
|
||||||
const char *comment;
|
const char *comment;
|
||||||
UINT param_size;
|
UINT param_size;
|
||||||
|
@ -977,12 +977,12 @@ void shader_trace_init(const struct wined3d_shader_frontend *fe, void *fe_data,
|
||||||
|
|
||||||
TRACE("Parsing %p\n", pFunction);
|
TRACE("Parsing %p\n", pFunction);
|
||||||
|
|
||||||
fe->shader_read_header(&pToken, &shader_version);
|
fe->shader_read_header(fe_data, &pToken, &shader_version);
|
||||||
|
|
||||||
TRACE("%s_%u_%u\n", shader_is_pshader_version(shader_version) ? "ps": "vs",
|
TRACE("%s_%u_%u\n", shader_is_pshader_version(shader_version) ? "ps": "vs",
|
||||||
WINED3DSHADER_VERSION_MAJOR(shader_version), WINED3DSHADER_VERSION_MINOR(shader_version));
|
WINED3DSHADER_VERSION_MAJOR(shader_version), WINED3DSHADER_VERSION_MINOR(shader_version));
|
||||||
|
|
||||||
while (!fe->shader_is_end(&pToken))
|
while (!fe->shader_is_end(fe_data, &pToken))
|
||||||
{
|
{
|
||||||
struct wined3d_shader_instruction ins;
|
struct wined3d_shader_instruction ins;
|
||||||
const char *comment;
|
const char *comment;
|
||||||
|
|
|
@ -434,7 +434,7 @@ static void shader_sm1_free(void *data)
|
||||||
HeapFree(GetProcessHeap(), 0, data);
|
HeapFree(GetProcessHeap(), 0, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shader_sm1_read_header(const DWORD **ptr, DWORD *shader_version)
|
static void shader_sm1_read_header(void *data, const DWORD **ptr, DWORD *shader_version)
|
||||||
{
|
{
|
||||||
TRACE("version: 0x%08x\n", **ptr);
|
TRACE("version: 0x%08x\n", **ptr);
|
||||||
*shader_version = *(*ptr)++;
|
*shader_version = *(*ptr)++;
|
||||||
|
@ -525,7 +525,7 @@ static void shader_sm1_read_comment(const DWORD **ptr, const char **comment)
|
||||||
*ptr += (token & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
|
*ptr += (token & WINED3DSI_COMMENTSIZE_MASK) >> WINED3DSI_COMMENTSIZE_SHIFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL shader_sm1_is_end(const DWORD **ptr)
|
static BOOL shader_sm1_is_end(void *data, const DWORD **ptr)
|
||||||
{
|
{
|
||||||
if (**ptr == WINED3DSP_END)
|
if (**ptr == WINED3DSP_END)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,7 +30,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
|
||||||
|
|
||||||
struct wined3d_sm4_data
|
struct wined3d_sm4_data
|
||||||
{
|
{
|
||||||
/* We don't store a lot in here yet. */
|
const DWORD *end;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void *shader_sm4_init(const DWORD *byte_code)
|
static void *shader_sm4_init(const DWORD *byte_code)
|
||||||
|
@ -50,12 +50,15 @@ static void shader_sm4_free(void *data)
|
||||||
HeapFree(GetProcessHeap(), 0, data);
|
HeapFree(GetProcessHeap(), 0, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shader_sm4_read_header(const DWORD **ptr, DWORD *shader_version)
|
static void shader_sm4_read_header(void *data, const DWORD **ptr, DWORD *shader_version)
|
||||||
{
|
{
|
||||||
|
struct wined3d_sm4_data *priv = data;
|
||||||
|
priv->end = *ptr;
|
||||||
|
|
||||||
TRACE("version: 0x%08x\n", **ptr);
|
TRACE("version: 0x%08x\n", **ptr);
|
||||||
*shader_version = *(*ptr)++;
|
*shader_version = *(*ptr)++;
|
||||||
TRACE("token count: %u\n", **ptr);
|
TRACE("token count: %u\n", **ptr);
|
||||||
++(*ptr);
|
priv->end += *(*ptr)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shader_sm4_read_opcode(void *data, const DWORD **ptr, struct wined3d_shader_instruction *ins,
|
static void shader_sm4_read_opcode(void *data, const DWORD **ptr, struct wined3d_shader_instruction *ins,
|
||||||
|
@ -100,10 +103,10 @@ static void shader_sm4_read_comment(const DWORD **ptr, const char **comment)
|
||||||
*comment = NULL;
|
*comment = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL shader_sm4_is_end(const DWORD **ptr)
|
static BOOL shader_sm4_is_end(void *data, const DWORD **ptr)
|
||||||
{
|
{
|
||||||
FIXME("ptr %p stub!\n", ptr);
|
struct wined3d_sm4_data *priv = data;
|
||||||
return TRUE;
|
return *ptr == priv->end;
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct wined3d_shader_frontend sm4_shader_frontend =
|
const struct wined3d_shader_frontend sm4_shader_frontend =
|
||||||
|
|
|
@ -672,7 +672,7 @@ struct wined3d_shader_frontend
|
||||||
{
|
{
|
||||||
void *(*shader_init)(const DWORD *ptr);
|
void *(*shader_init)(const DWORD *ptr);
|
||||||
void (*shader_free)(void *data);
|
void (*shader_free)(void *data);
|
||||||
void (*shader_read_header)(const DWORD **ptr, DWORD *shader_version);
|
void (*shader_read_header)(void *data, const DWORD **ptr, DWORD *shader_version);
|
||||||
void (*shader_read_opcode)(void *data, const DWORD **ptr, struct wined3d_shader_instruction *ins,
|
void (*shader_read_opcode)(void *data, const DWORD **ptr, struct wined3d_shader_instruction *ins,
|
||||||
UINT *param_size, DWORD shader_version);
|
UINT *param_size, DWORD shader_version);
|
||||||
void (*shader_read_src_param)(const DWORD **ptr, struct wined3d_shader_src_param *src_param,
|
void (*shader_read_src_param)(const DWORD **ptr, struct wined3d_shader_src_param *src_param,
|
||||||
|
@ -681,7 +681,7 @@ struct wined3d_shader_frontend
|
||||||
struct wined3d_shader_src_param *dst_rel_addr, DWORD shader_version);
|
struct wined3d_shader_src_param *dst_rel_addr, DWORD shader_version);
|
||||||
void (*shader_read_semantic)(const DWORD **ptr, struct wined3d_shader_semantic *semantic);
|
void (*shader_read_semantic)(const DWORD **ptr, struct wined3d_shader_semantic *semantic);
|
||||||
void (*shader_read_comment)(const DWORD **ptr, const char **comment);
|
void (*shader_read_comment)(const DWORD **ptr, const char **comment);
|
||||||
BOOL (*shader_is_end)(const DWORD **ptr);
|
BOOL (*shader_is_end)(void *data, const DWORD **ptr);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct wined3d_shader_frontend sm1_shader_frontend;
|
extern const struct wined3d_shader_frontend sm1_shader_frontend;
|
||||||
|
|
Loading…
Reference in New Issue