Stefan Dösinger : wined3d: Don' t reserve clipping constants needlessly.

Alexandre Julliard julliard at winehq.org
Thu Oct 8 08:57:12 CDT 2009


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Tue Oct  6 20:59:44 2009 +0200

wined3d: Don't reserve clipping constants needlessly.

---

 dlls/wined3d/arb_program_shader.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 691792d..39bd0b5 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -648,8 +648,15 @@ static DWORD shader_generate_arb_declarations(IWineD3DBaseShader *iface, const s
                 if(reg_maps->constf[idx] & (1 << shift)) highest_constf = i;
             }
 
-            clip_limit = GL_LIMITS(clipplanes);
-            if(ctx->target_version == ARB) clip_limit = min(clip_limit, 4);
+            if(use_nv_clip(gl_info) && ctx->target_version >= NV2)
+            {
+                clip_limit = GL_LIMITS(clipplanes);
+            }
+            else
+            {
+                unsigned int mask = ctx->cur_vs_args->boolclip.clipplane_mask;
+                clip_limit = min(count_bits(mask), 4);
+            }
             *num_clipplanes = min(clip_limit, max_constantsF - highest_constf - 1);
             max_constantsF -= *num_clipplanes;
             if(*num_clipplanes < clip_limit)




More information about the wine-cvs mailing list