summarylogtreecommitdiffstats
path: root/patch_temp_constants.patch
blob: 62fde61a54b3a04e5ffec94093f5d8f79402b58d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h
index 6e84faf..e90b43a 100644
--- a/dlls/d3d9/d3d9_private.h
+++ b/dlls/d3d9/d3d9_private.h
@@ -315,7 +315,7 @@ HRESULT vertexshader_init(struct d3d9_vertexshader *shader,
         struct d3d9_device *device, const DWORD *byte_code) DECLSPEC_HIDDEN;
 struct d3d9_vertexshader *unsafe_impl_from_IDirect3DVertexShader9(IDirect3DVertexShader9 *iface) DECLSPEC_HIDDEN;
 
-#define D3D9_MAX_VERTEX_SHADER_CONSTANTF 256
+#define D3D9_MAX_VERTEX_SHADER_CONSTANTF 1024
 #define D3D9_MAX_SIMULTANEOUS_RENDERTARGETS 4
 
 struct d3d9_pixelshader
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 7e85988..cdc25a2 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -427,14 +427,14 @@ static void shader_set_limits(struct wined3d_shader *shader)
     vs_limits[] =
     {
         /* min_version, max_version, sampler, constant_int, constant_float, constant_bool, packed_output, packed_input */
-        {WINED3D_SHADER_VERSION(1, 0), WINED3D_SHADER_VERSION(1, 1), { 0,  0, 256,  0, 12,  0}},
-        {WINED3D_SHADER_VERSION(2, 0), WINED3D_SHADER_VERSION(2, 1), { 0, 16, 256, 16, 12,  0}},
+        {WINED3D_SHADER_VERSION(1, 0), WINED3D_SHADER_VERSION(1, 1), { 0,  0, /*256 */1024,  0, 12,  0}},
+        {WINED3D_SHADER_VERSION(2, 0), WINED3D_SHADER_VERSION(2, 1), { 0, 16, /*256 */1024, 16, 12,  0}},
         /* DX10 cards on Windows advertise a D3D9 constant limit of 256
          * even though they are capable of supporting much more (GL
          * drivers advertise 1024). d3d9.dll and d3d8.dll clamp the
          * wined3d-advertised maximum. Clamp the constant limit for <= 3.0
          * shaders to 256. */
-        {WINED3D_SHADER_VERSION(3, 0), WINED3D_SHADER_VERSION(3, 0), { 4, 16, 256, 16, 12,  0}},
+        {WINED3D_SHADER_VERSION(3, 0), WINED3D_SHADER_VERSION(3, 0), { 4, 16, /*256*/1024, 16, 12,  0}},
         {WINED3D_SHADER_VERSION(4, 0), WINED3D_SHADER_VERSION(4, 0), {16,  0,   0,  0, 16,  0}},
         {0}
     },
@@ -743,8 +743,10 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
                         break;
                     }
                     if (shader_version.type == WINED3D_SHADER_TYPE_PIXEL && shader_version.major == 3
-                            && semantic->usage == WINED3D_DECL_USAGE_POSITION && !semantic->usage_idx)
+                            && semantic->usage == WINED3D_DECL_USAGE_POSITION && !semantic->usage_idx) {
+			WARN("shader_version.type == WINED3D_SHADER_TYPE_PIXEL && shader_version.major == 3 ...\n");
                         return WINED3DERR_INVALIDCALL;
+		    }
                     reg_maps->input_registers |= 1u << reg_idx;
                     shader_signature_from_semantic(&input_signature_elements[reg_idx], semantic);
                     break;
@@ -886,8 +888,10 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
             for (i = 0; i < ins.dst_count; ++i)
             {
                 if (!shader_record_register_usage(shader, reg_maps, &ins.dst[i].reg,
-                        shader_version.type, constf_size))
+                        shader_version.type, constf_size)) {
+                    WARN("!shader_record_register_usage\n");
                     return WINED3DERR_INVALIDCALL;
+		}
 
                 if (shader_version.type == WINED3D_SHADER_TYPE_VERTEX)
                 {
@@ -1061,8 +1065,10 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
 
             if (ins.predicate)
                 if (!shader_record_register_usage(shader, reg_maps, &ins.predicate->reg,
-                        shader_version.type, constf_size))
+                        shader_version.type, constf_size)) {
+		    WARN("!shader_record_register_usage (2)");
                     return WINED3DERR_INVALIDCALL;
+		}
 
             for (i = 0; i < ins.src_count; ++i)
             {
@@ -1070,14 +1076,18 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
                 struct wined3d_shader_register reg = ins.src[i].reg;
 
                 if (!shader_record_register_usage(shader, reg_maps, &ins.src[i].reg,
-                        shader_version.type, constf_size))
+                        shader_version.type, constf_size)) {
+                    WARN("!shader_record_register_usage (3)\n");
                     return WINED3DERR_INVALIDCALL;
+		}
                 while (count)
                 {
                     ++reg.idx[0].offset;
                     if (!shader_record_register_usage(shader, reg_maps, &reg,
-                            shader_version.type, constf_size))
+                            shader_version.type, constf_size)) {
+			WARN("!shader_record_register_usage (4)");  
                         return WINED3DERR_INVALIDCALL;
+		    }
                     --count;
                 }
 
@@ -1090,7 +1100,7 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
                         shader->u.ps.color0_reg = ins.src[i].reg.idx[0].offset;
                     }
                 }
-            }
+            } //for (i = 0; i < ins.src_count; ++i)
         }
     }
     reg_maps->loop_depth = max_loop_depth;
@@ -2071,8 +2081,10 @@ static HRESULT shader_set_function(struct wined3d_shader *shader, const DWORD *b
 
     /* Second pass: figure out which registers are used, what the semantics are, etc. */
     if (FAILED(hr = shader_get_registers_used(shader, fe, reg_maps, &shader->input_signature,
-            &shader->output_signature, byte_code, float_const_count)))
-        return hr;
+            &shader->output_signature, byte_code, float_const_count))) {
+	    	WARN("Error shader_get_registers_used\n");
+        	return hr;
+	}
 
     if (reg_maps->shader_version.type != type)
     {