Henri Verbeet : wined3d: Use the output signature to setup SM4 vertex shader output semantics.

Alexandre Julliard julliard at winehq.org
Thu May 28 09:39:41 CDT 2009


Module: wine
Branch: master
Commit: 3925cd5f15c25a20e0f729fbc359e518c53e5c41
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3925cd5f15c25a20e0f729fbc359e518c53e5c41

Author: Henri Verbeet <hverbeet at 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 &&




More information about the wine-cvs mailing list