From: Keith W. <ke...@tu...> - 2004-02-13 20:51:02
|
Roland Scheidegger wrote: > Keith Whitwell wrote: > >> >>>> Am I missing something -- isn't this setting the appropriate blend >>>> modes? Is the constant color not getting updated correctly? >>> >>> >>> >>> Yes, exactly, the constant color isn't updated at all (so the color >>> is _really_ constant ;-)). Mesa would call ctx->Driver.BlendColor to >>> inform the driver of the changed color, but neither R200 nor Radeon >>> implement it. >>> >> >> Wow. >> >> OK, the r200 register is RB3D_BLENDCOLOR: 0x3218, it holds an ARGB8888 >> color. > > ok, I'll try to implement it. This register is just before the > ABLENDCNTL and CBLENDCNTL, so that makes it easier to support these (for > the GL_EXT_blend_xx_separate extensions) at the same time. Unfortunately > requires a drm change, and unfortunately though I think it needs a new > state atom (since appending to the ctx atom won't work, as it wouldn't > be compatible at all to old drm modules). It's a pity that appending to > the ctx atom won't work, as this would have avoided some strange problem > (ABLENDCNTL and CBLENDCNTL are not sompletely separate registers from > BLENDCNTL, i.e. writing to BLENDCNTL will affect either ABLENDCNTL or > CBLENDCNTL or both, not sure yet since I still lack a test application. > That's a problem since the ctx atom gets emitted a lot, and thus the > previous updates to ABLENDCNTL and CBLENDCNTL in a different state atom > get always overwritten. Maybe I'll figure out how the registers > interact to avoid just always resubmitting ABLENDCNTL and > CBLENDCNTL...). For only the blend_color extension this isn't a > problem though. You could create two new state atoms and just leave the old ctx atom for legacy. Keith |