WineD3D: glBlend* fixes
rscheidegger_lists at hispeed.ch
Mon Sep 25 17:53:25 CDT 2006
> Roderick, Mesa calls the extension "GL_EXT_blend_minmax", and so does
> the spec. I don't know what exactly uses the min_max form. Is this a
Apart from the blend_minmax typo, it appears to be me this patch has
some other problems.
>> This patch changes the detection extension detection for
>> glBlendColor/glBlendEquation. The function glBlendColor is part of
>> OpenGL 1.1 and is supported on all OpenGL implementations.
No, it's not. Calls to it are ONLY legal on opengl up to 1.3 if either
ARB_imaging or EXT_blend_color are supported (the spec says "Blend Color
is an imaging subset feature, and is only allowed when the imaging
subset is supported"). It is however part of OpenGL 1.4.
So, a really correct detection would be to check for ogl version 1.4,
EXT_blend_color, ARB_imaging. Maybe the check for ARB_imaging could be
omitted, but it is possible there are drivers out there which only
announce support for ARB_imaging but not EXT_blend_color, according to
www.delphi3d.net there are indeed some tnt2's out there which claim
support for ARB_imaging but not EXT_blend_color - if I'd have to guess
I'd suspect the call to glBlendColor results in a sw fallback.
>> Further glBlendEquation is part of GL_ARB_imaging aswell. For the
>> same reason GL_ARB_imaging can't be used to detect glBlendEquation.
>> This call isn't supported on all OpenGL implementations. Luckily it
>> is part of 'GL_EXT_blend_min_max' so that is used now.
This is not quite so simple. If OGL 1.4 is supported, or the version is
lower but ARB_imaging itself is supported, all the blend function stuff
from ARB_imaging is ok. If only either EXT_blend_minmax or
EXT_blend_subtract is supported, then glBlendEquation is supported, but
only different modes are valid (FUNC_ADD, MIN, MAX for EXT_blend_minmax,
FUNC_ADD, FUNC_SUBTRACT, FUNC_REVERSE_SUBTRACT for EXT_blend_subtract).
But if all you care is that glBlendEquation is available, you should
probably detect ogl 1.4, and EXT_blend_subtract (some cards only support
EXT_blend_subtract but not EXT_blend_minmax), but really for correctness
EXT_blend_minmax and ARB_imaging should be checked too.
(not subscribed to wine-devel - include me in cc for answers)
More information about the wine-devel