Module: wine Branch: master Commit: 3925cd5f15c25a20e0f729fbc359e518c53e5c41 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3925cd5f15c25a20e0f729fbc3...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu May 28 08:44:21 2009 +0200
wined3d: Use the output signature to setup SM4 vertex shader output semantics.
---
dlls/wined3d/vertexshader.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c index 681ec35..b8c56cc 100644 --- a/dlls/wined3d/vertexshader.c +++ b/dlls/wined3d/vertexshader.c @@ -246,6 +246,7 @@ static HRESULT WINAPI IWineD3DVertexShaderImpl_SetFunction(IWineD3DVertexShader IWineD3DVertexShaderImpl *This =(IWineD3DVertexShaderImpl *)iface; IWineD3DDeviceImpl *deviceImpl = (IWineD3DDeviceImpl *) This->baseShader.device; const struct wined3d_shader_frontend *fe; + unsigned int i; HRESULT hr; shader_reg_maps *reg_maps = &This->baseShader.reg_maps;
@@ -281,6 +282,16 @@ static HRESULT WINAPI IWineD3DVertexShaderImpl_SetFunction(IWineD3DVertexShader pFunction, GL_LIMITS(vshader_constantsF)); if (hr != WINED3D_OK) return hr;
+ if (output_signature) + { + for (i = 0; i < output_signature->element_count; ++i) + { + struct wined3d_shader_signature_element *e = &output_signature->elements[i]; + reg_maps->output_registers |= 1 << e->register_idx; + This->output_signature[e->register_idx] = *e; + } + } + vshader_set_limits(This);
if(deviceImpl->vs_selected_mode == SHADER_ARB &&