Module: wine Branch: master Commit: 03d7f527cf206d254fbe6cad0bef4bd96ccb7321 URL: http://source.winehq.org/git/wine.git/?a=commit;h=03d7f527cf206d254fbe6cad0b...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Dec 1 20:50:48 2010 +0100
wined3d: Move min_rel_offset / max_rel_offset to the shader_reg_maps structure.
---
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;