[PATCH 5/5] wined3d: Move min_rel_offset / max_rel_offset to the shader_reg_maps structure.
Henri Verbeet
hverbeet at codeweavers.com
Wed Dec 1 13:50:48 CST 2010
---
dlls/wined3d/shader.c | 27 +++++++++------------------
dlls/wined3d/wined3d_private.h | 4 +---
2 files changed, 10 insertions(+), 21 deletions(-)
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 9eaf89c..8220d65 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -399,17 +399,8 @@ static void shader_record_register_usage(IWineD3DBaseShaderImpl *shader, struct
case WINED3DSPR_CONST:
if (reg->rel_addr)
{
- if (shader_type != WINED3D_SHADER_TYPE_PIXEL)
- {
- if (reg->idx < ((IWineD3DVertexShaderImpl *)shader)->min_rel_offset)
- {
- ((IWineD3DVertexShaderImpl *)shader)->min_rel_offset = reg->idx;
- }
- if (reg->idx > ((IWineD3DVertexShaderImpl *)shader)->max_rel_offset)
- {
- ((IWineD3DVertexShaderImpl *)shader)->max_rel_offset = reg->idx;
- }
- }
+ if (reg->idx < reg_maps->min_rel_offset) reg_maps->min_rel_offset = reg->idx;
+ if (reg->idx > reg_maps->max_rel_offset) reg_maps->max_rel_offset = reg->idx;
reg_maps->usesrelconstF = TRUE;
}
else
@@ -1904,21 +1895,21 @@ HRESULT vertexshader_init(IWineD3DVertexShaderImpl *shader, IWineD3DDeviceImpl *
if (device->vs_selected_mode == SHADER_ARB
&& (gl_info->quirks & WINED3D_QUIRK_ARB_VS_OFFSET_LIMIT)
- && shader->min_rel_offset <= shader->max_rel_offset)
+ && reg_maps->min_rel_offset <= reg_maps->max_rel_offset)
{
- if (shader->max_rel_offset - shader->min_rel_offset > 127)
+ if (reg_maps->max_rel_offset - reg_maps->min_rel_offset > 127)
{
FIXME("The difference between the minimum and maximum relative offset is > 127.\n");
FIXME("Which this OpenGL implementation does not support. Try using GLSL.\n");
- FIXME("Min: %d, Max: %d.\n", shader->min_rel_offset, shader->max_rel_offset);
+ FIXME("Min: %u, Max: %u.\n", reg_maps->min_rel_offset, reg_maps->max_rel_offset);
}
- else if (shader->max_rel_offset - shader->min_rel_offset > 63)
+ else if (reg_maps->max_rel_offset - reg_maps->min_rel_offset > 63)
{
- shader->rel_offset = shader->min_rel_offset + 63;
+ shader->rel_offset = reg_maps->min_rel_offset + 63;
}
- else if (shader->max_rel_offset > 63)
+ else if (reg_maps->max_rel_offset > 63)
{
- shader->rel_offset = shader->min_rel_offset;
+ shader->rel_offset = reg_maps->min_rel_offset;
}
else
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index c10055f..aa77211 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -568,7 +568,7 @@ typedef struct shader_reg_maps
/* Whether or not loops are used in this shader, and nesting depth */
unsigned loop_depth;
unsigned highest_render_target;
-
+ UINT min_rel_offset, max_rel_offset;
} shader_reg_maps;
/* Keeps track of details for TEX_M#x# instructions which need to maintain
@@ -2868,8 +2868,6 @@ typedef struct IWineD3DVertexShaderImpl {
/* Vertex shader attributes. */
struct wined3d_shader_attribute attributes[MAX_ATTRIBS];
-
- UINT min_rel_offset, max_rel_offset;
UINT rel_offset;
} IWineD3DVertexShaderImpl;
--
1.7.2.2
More information about the wine-patches
mailing list