wined3d: Use the output signature to setup SM4 vertex shader output semantics.
Henri Verbeet
hverbeet at codeweavers.com
Thu May 28 01:44:21 CDT 2009
---
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 &&
--
1.6.0.6
--------------090308000301090806090603--
More information about the wine-patches
mailing list