Is there the possibility to support EXA for legacy S3 chips?

Evgeny M. Zubok evgeny.zubok at tochka.ru
Wed May 27 14:09:42 PDT 2009


I have made the first attempt to implement basic `Copy' and `Solid' EXA
functions in xf86-video-s3, but soon came to intention that EXA support
is not possible. Is there mistake in my thinking below?

S3's Graphic Processor (S3 GP) is able to copy areas only in terms of
coordinates, i. e. it can copy rectangle from (src-x, src-y) to (dest-x,
dest-y) with width w and height h (Fig. 1). This method is used in XAA
ScreenToScreenCopy function. But S3 GP hasn't mean to copy offscreen
pixmaps in format presented on Fig. 2 to framebuffer, i. e. there is no
way to write the pixmap's offset and pitch directly into GP registers to
make subsequent copying. I looked up on the code of few other drivers
where EXA is implemented (ati, trident, mga) -- all these chips have the
possibility to write offset and pitch of pixmap into their GP.

Although the method (by means of Pixel Transfer Register) exists to
upload pixmap from the system memory to S3's offscreen memory in
required format (Fig. 1) (I didn't try it), such offscreen memory
organization will not be understandable to the EXA offscreen memory
manager. Most probably this will follow to incorrect pixmap migration
and overwriting previously uploaded pixmaps.

The objection above sounds like the judgement to EXA support in S3
driver. No?


     <--- 800 * 4 Bpp ---->

  0  ======================  -
  .  ===========111111=====  |
  .  ===========222222=====  |
  .  ===========333333===== 600 scanlines (Framebuffer)
  .  ===========444444=====  |
599  ======================  |
600  111111================  -
  .  222222================  |
  .  333333================  |
  .  444444================  55 scanlines (Offscreen)
  .  ======================  |
  .  ======================  |
654  ======================  -

Fig. 1. S3 GP fb and offscreen representation, 800x600/32bpp, 
        2Mb video RAM (655 scanlines).



     <--- 800 * 4 Bpp ---->

  0  ======================  -
  .  ===========111111=====  |
  .  ===========222222=====  |
  .  ===========333333===== 600 scanlines (Framebuffer)
  .  ===========444444=====  |
599  ======================  |
600  1111112222223333334444  -
  .  44====================  |
  .  ======================  |
  .  ======================  55 scanlines (Offscreen)
  .  ======================  |
  .  ======================  |
654  ======================  -

Fig. 2. EXA Pixmap in offscreen, 800x600/32bpp, 2Mb video RAM 
        (655 scanlines)




More information about the xorg mailing list