From: Brian P. <br...@tu...> - 2003-12-11 14:58:11
|
Kendall Bennett wrote: > Brian Paul <br...@tu...> wrote: > > >>>I am not familiar with how Mesa handles complex clipping on X11, when >>>drawing to the front buffer. Does Mesa use a shadow buffer in system >>>memory and draw into that, and then blit? Or does Mesa have hooks such >>>that it can get a complex clip list from X11 and then do the clipping >>>that way? >> >>It's up to the Mesa device driver, since this is a window >>system-specific issue. > > > Cool. I expected that, so it is nice to know the functionality is there. > > >>For the DRI drivers, the XF86DRIGetDrawableInfo() function (part >>of the XF86DRI X extension) returns the cliprects for the named >>window. The drivers call this function whenever they obtain the >>drawing lock. > > > Ok. I can get that info easily enough also as our SNAP drivers have the > ability to grab all the necessary clip lists from DirectX (or actually > whatever underlying platform is used). > > >>>We have the ability to handle complex clip lists in the SciTech MGL so >>>we can render directly to the front buffer (via DirectX ;-), and now >>>that I have the latest Mesa integrated I wanted make sure Mesa would >>>correctly honor the clip lists as well. Then general technique in the >>>MGL is to take the complex clip list and traverse it, re-drawing the >>>primitive object over and over for each of the clip rects in the entire >>>list. The same idea could be used for Mesa, but I am not sure if there >>>are hooked in there already for this (ie: exceute a cassette multiple >>>times to iterate over the clip list)? >> >>The DRI drivers loop over the rects in the clipping list when they >>render anything. > > > Is that done with a hook in the generic code, or do the DRI drivers > implement their own versions of the rendering pipeline to handle this? > Can you point me at a module to look at for an example? The code is in each of the drivers, but I don't remember off-hand exactly where. I'm sure you can find it with a little grepping. -Brian |