[Spice-devel] multiple heads memory arrangement

Alon Levy alevy at redhat.com
Wed Apr 18 03:53:28 PDT 2012


Hi,

 I'm just starting to work on this, wanted to solicit some feedback. I
 am thinking that the simplest way to implement multiple heads would be:

  Add additional QXLRam headers back to back on the vram bar.
  Add a new flag QXL_RAM_FLAG_MORE_HEADS, set it on all but the last
  (largest offset into bar) header.
  Don't add new fields to QXLRom or QXLRam.
  Update QXLRom.ram_header_offset to point to the first (smallest
  offset) header.
 
New driver that notices the QXL_RAM_FLAG_MORE_HEADS will count the
headers (it cannot be done by looking at the header offset since it may
not know about additional future data that will be put at the end of the
bar).

Old driver will lose sizeof(QXLRam) * (num_heads - 1) bytes from the end
of the bar.

Visually it would look like this for a two head qxl device:

   .----------------------------------------------.
   |                   ROM BAR                    |
   | ...                                          |
  || ram_header_offset                            |
  || ...                                          |
  ||                                              |
  ||                                              |
  |'----------------------------------------------'
  |
  |
  |.--------------------------------------------------.
  ||                     VRAM BAR                     |
  |.--------------------------------------------------.
  ||                   Working area                   |
  ||                                                  |
  v.--------------------------------------------------.
   |                   First Header                   |
   | magic                                            |
   | ...                                              |
   | flags == QXL_RAM_FLAG_MORE_HEADS                 |
   |                                                  |
   .--------------------------------------------------.
   |                  Second Header                   |
   | magic                                            |
   | ... (identical fields) ...                       |
   | flags == 0                                       |
   '--------------------------------------------------'

Alon


More information about the Spice-devel mailing list