> Yep. What I was trying to understand is that, since I already setup my own > region, what can I do to it ? For example, how do I get to "AGP > space" addresses (as oppposed to physical or virtual).
Userspace programs always deal in virtual addresses. You need to map the section of agp space you're interested in to your process' virtual address space - this is the function of drmAddMap/drmMap. When you call drmAddMap you tell it which bit of agp space you're interested in making available to the 3d client (this is done in the 2d driver). When you call drmMap in the 3d driver, that returns a pointer to the virtual mapping of that portion of agp space. You can't use that pointer to talk to hardware, of course, but you can use it to put stuff into the agp memory from your userspace program. The hardware will need to know either the offset from the beginning of the agp aperture or the physical address. When I say physical address I mean (beginning-of-agp-aperture + offset-in-agp-aperture). The agp aperture is just a special region of the physical address space. > Well, for once, the size of AGP aperture is limited. 1 meg of system RAM > on 512 meg machine is much less than 1 meg off 32 meg AGP aperture. Usually they're 64 meg. And there's usually plenty left over - don't worry about it. > Secondly, if 3d only touches AGP stuff and capture only uses pci-gart > tables I can have a separate driver for video capture - and it won't > interfere with 3d stuff.. I can't say you're wrong, but if I was doing it I'd work with agpgart first simply because all the infrastructure is there and debugged. > > > * Do we actually need to set AGP registers to translate _all_ > > > addresses ? > > > > This sounds like a misconception - the agp aperture is only 32 or 64 meg, > > and it's only addresses in that range which get translated. Addresses > > outside the aperture are unaffected by agp translations. Otherwise the > > whole computer would break??? > > Well, that's what I thought as well, but something confused me.. Hmmm, I > don't seem to find the relevant place in the driver - I'll assume it does > not exist and move on. I hope I've explained a little better above. You map the agp region into the process virtual address space useing drmAddMap/drmMap, then just get a regular old pointer that you can write to and read from (but reads are very slow because agp is uncached) Keith _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel