From 8a68f418dbea0967003818e5bbac10e5ffc22512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Tue, 6 Oct 2009 20:59:44 +0200 Subject: [PATCH] wined3d: Don't reserve clipping constants needlessly. --- dlls/wined3d/arb_program_shader.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 691792d6216..39bd0b515f9 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)