Skip to content
Snippets Groups Projects
  1. Dec 09, 2019
  2. Sep 17, 2015
    • Sandy Stutsman's avatar
      Do not allow duplicate IDs in video mode info buffer. · 7ee27e89
      Sandy Stutsman authored
      Modes are returned in a buffer from qemu with IDs in increasing but not
      necessarily consecutive order. (Some modes may be omitted if they don't fit
      into the framebuffer.) Two custom modes are appended to the local buffer to
      support arbitrary resolutions. The first custom id must be set to +1 of the
      last id in the mode buffer, not to the last index +1 of the buffer.
      
      E.G. these are the last entries in the mode buffer returned from QEMU:
      	Index      Mode id (unfortunately named ModeIndex in the struct)
      	...
      	124         128
      	125         130
      	126         132
      	127         134 (last mode returned from QEMU)
      
      Custom Modes:
      	128         135 (Not 128!)
      	129         136
      
      If the first custom mode id is set to 128 (the number of modes returned
      from QEMU), it will duplicate the id for the mode at index 124. That could
      cause the FindMode function which searches the mode list by mode id
      to return the wrong mode information.
      
      The custom mode id's are now set to be greater than the last mode id
      returned from QEMU.
      
      The last argument in the FillVidModeInfo is replaced with the actual mode
      id rather than the index.  This does nothing more than replace the mode id
      with itself.
      
      This addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1202424
      
      ---
      Updated the comments
      ---
      7ee27e89
  3. Sep 16, 2015
    • Sandy Stutsman's avatar
      Remove redundant macro definitions. · 31a59216
      Sandy Stutsman authored
      A change to spice-procotol adds spice/macros.h to the qxl build.  This
      causes a few macros to be redefined, resulting in warnings that break the
      build.
      
      Explicitly including the spice/macros.h file in place of the
      redundant macros fixes the warnings.
      31a59216
  4. Jun 29, 2015
  5. Sep 09, 2013
  6. Jul 30, 2013
    • Alon Levy's avatar
      miniport: halve QXL_IO_UPDATE_IRQ calls · 49feefa9
      Alon Levy authored
      QXL_IO_UPDATE_IRQ causes the device to check int_mask and int_pending
      and issue an interrupt if that is required. Since we just zeroed
      int_mask, no interrupt will ever be issued. Since we issue another
      QXL_IO_UPDATE_IRQ in the interrupt routine DPC right after resetting
      int_mask any pending interrupt will be raised then.
      
      RHBZ: 856246
      49feefa9
    • Alon Levy's avatar
      miniport: use a limited interrupt mask · 06e3a524
      Alon Levy authored
      06e3a524
    • Alon Levy's avatar
      display/driver: DrvDeleteDeviceBitmap: log if pdev disabled · dfa00f06
      Alon Levy authored
      Alternative is to leak, and this happens regularely. Perhaps we should
      be keeping track and destroying these surfaces later (in case no reset
      happens in the middle, which destroys all off screen surfaces anyway).
      dfa00f06
  7. Jul 29, 2013
  8. Jul 17, 2013
    • Alon Levy's avatar
      xddm/miniport/qxl.inf: bump version and touch date · ab746740
      Alon Levy authored
      We haven't done this for most any change. Perhaps we should do this? No
      idea what the x.y.z.w convention is, so I made the most minor change
      right now. But the date is the important bit.
      ab746740
    • Alon Levy's avatar
      miniport: disable surfaces by default · 154c4770
      Alon Levy authored
      Change the registry checking logic we already have, instead of enabling
      surfaces by default we now disable surfaces by default. They can be
      enabled without driver change by creating a registry key name
      "SurfacesEnabled" of type DWORD with any value under the adapter key.
      
      To find the adapter key, one way is looking for the key under which
      there is a value of name "QxlDeviceID" after a successfull startup of
      the qxl driver.
      
      RHBZ: 985408
      154c4770
  9. Jul 05, 2013
    • Yonit Halperin's avatar
      display: apply the fix in fc314927 to Alpha Bitmaps · 170af9c6
      Yonit Halperin authored
      rhbz#968050
      
      In contrast to Microsoft Msdn documentation, the iUniq of a SURFOBJ doesn't
      always change when the surface changes. However, it seems that the
      iUniq of the associated color_trans (XLATEOBJ) changes, while its
      flXlate=XO_TRIVIAL. Since we tried to retrieve the alpha bitmap key
      only by the surface iUniq, we fetched the wrong bitmap, and it looked
      like parts of the screen haven't been rendered.
      
      The patch modifies QXLGetAlphaBitmap so that it will use GetCacheImage
      instead of duplicating its code. GetCacheImage was already fixed in
      fc314927 to combine the iUniq of the surace and the
      color_trans.
      170af9c6
  10. Jul 01, 2013
  11. Jun 24, 2013
    • Yonit Halperin's avatar
      display: fix deadlock when dbg_level >= 15 · ae74511e
      Yonit Halperin authored
      DebugPrintV first locks print_sem, and then locks io_sem.
      async_io, locks io_sem.
      In ordr to avoid a deadlock, DebugPrintV MUSTN'T be called when
      io_sem is locked.
      I also moved the locking of io_sem, so that reading pdev->use_async
      will also be protected (async_io can modify use_async to 0 upon a
      timeout).
      
      Also notice, that locking io_sem during DebugPrintV limits our ability
      to use the log_port for debugging concurrency problems related to ios.
      ae74511e
  12. Jun 21, 2013
    • Yonit Halperin's avatar
      display: handle correctly bitmaps with line-size > 64K · 0a245857
      Yonit Halperin authored
      rhbz#966835
      
      We do not support copying such bitmaps. But instead of failing
      operations that involve such bitmaps we either BSODed (in checked
      builds), or proceeded with the bitmap copying (in free builds) - this lead to an infinite
      loop allocating QXLDataChunks without any data, just header.
      0a245857
  13. Oct 28, 2012
  14. Oct 25, 2012
  15. Oct 14, 2012
    • Alon Levy's avatar
      only allow word aligned strides · 5020ad9f
      Alon Levy authored
      This is a pixman requirement. If it isn't enforced spice crashes, qemu
      with it. That should be fixed, but there is no simple way to allow for
      non word aligned strides, and the only down side is that for 16 bit
      modes we will require even widths. And we already have the same
      implementation detail in the X driver, only there it is a multiple of 8,
      not 4.
      
      The SurfaceCreate command's stride is computed in one place:
       miniport:FillVidModeInfo sets ScreenStride as word aligned
       display:pdev->stride is set from ScreenStride
      
      A third change at GetSurfaceMemory fixes the stride used for GDI
      allocated surface, but since surface 0 has a fixed larger then required
      area this isn't required for the bug fix, just for consistency.
      5020ad9f
  16. Oct 10, 2012
    • Alon Levy's avatar
      miniport: QXLEscape: use 5/5/5 16 bit · a1889087
      Alon Levy authored
      Change IOCTL_QXL_SET_CUSTOM_DISPLAY to use 5/6/5 (via SetCustomDisplay).
      
      The replaced 5/6/5 is not supported by us. Specifically we fail
      display/rop.c:TestSrcBits and thus fail _BitBlt. I'm not sure how
      exactly this causes the BSOD for 863410, but it does in fact do that,
      and applying this fix, by not failing _BitBlt also fixes 863410.
      
      RHBZ: 863410
      a1889087
  17. Sep 05, 2012
    • Alon Levy's avatar
      add registry key "DisableSurfaces" · acb958c9
      Alon Levy authored
      Presence of the key disables off screen surfaces creation; The callback
      is still registered, but it always fails.
      
      Registry key is checked on device initialization only, not during
      runtime, so you must reset the vm to see any affects.
      acb958c9
  18. Aug 08, 2012
  19. May 16, 2012
  20. Oct 06, 2011
  21. Sep 21, 2011
    • Alon Levy's avatar
      miniport/qxl: more verbose debug on StartIO · ac69ec9a
      Alon Levy authored
      ac69ec9a
    • Alon Levy's avatar
      display: handle interrupt handler disappearance (rhbz 721118) · 96b19230
      Alon Levy authored
      This patch handles the surprise removal whql test. The surprise
      removal test sends a surprise removal IRP via a filter driver to
      qxl.sys. The handling of that IRP is actually done in videoprt.sys,
      and there is no API to get notified. The side effect of the handler
      in videoprt.sys is disabling our interrupt handler. This patch takes
      care of continuing to work after our interrupt is disabled. This is
      in effect the opposite of what the MSDN states that a device should do
      after a surprise removal, since the MSDN requires every IO to fail after
      the surprise removal IRP has been successfully handled. On the other
      hand, this workaround is sufficient to pass the test.
      
      The workaround is to turn the EngWaitForSingleEvent on the io_cmd_event
      event into a timed wait.
      
      If it fails, we revert to synchronouse IO, which doesn't require that
      event at all.
      96b19230
    • Alon Levy's avatar
      display: add pdev->use_async · 0ba9e870
      Alon Levy authored
      0ba9e870
    • Alon Levy's avatar
      build.bat copy to a dest dir if given · 90e36140
      Alon Levy authored
      90e36140
  22. Sep 18, 2011
  23. Aug 28, 2011
    • Yonit Halperin's avatar
    • Yonit Halperin's avatar
      display: fix how MoveAllSurfacesToRam handles failure · bb379117
      Yonit Halperin authored
      1) send create surface commands for all the surfaces that have not been
         moved to vram
      2) fix the parameters sent to SendSurfaceCreateCommand
      3) send create primary surface IO
      bb379117
    • Yonit Halperin's avatar
      display: not using globals, RHBZ #731644 · 6dca8c70
      Yonit Halperin authored
      due to the previous patch ("support clearing the pci-bar when the pdev is disabled for revision<3 as well"),
      surfaces_info and other resources like caches, are no longer shared between pdevs. Moreover,
      it is an error to use globals, since different display driver sessions have different memory space.
      
      In addition I removed all the semaphores that are not related to the pci ram. These semaphores
      were protecting the surfaces_info array and the caches, however these sturctures belong only to one pdev,
      and according to http://msdn.microsoft.com/en-us/library/ff568281%28v=vs.85%29.aspx, can be accessed
      only from a single thread.
      
      For the rest of the semaphores, I returned them to the same state that was in revision 1 => they
      are part of the PDev. However, this should be fixed:
      1) In order to protect the device log buffer,
         the print_sem must be shared by different pdevs and
         different display sessions. Alternatively, we can use IOCTL for logging.
      2) malloc_sem: not sure what it protects. Maybe globals in mspace?
         since only the enabled pdev is allocating memory, I don't
         think it is required (unless it is possible to have
         AssertMode(x, enable) before AssertMode(y, disable).
      3) cmd_sem, cursor_sem: again, since only the enabled pdev touches the cmd rings
         I don't think it is required.
      4) io_sem - same as print sem. Note that we should prevent starvation between
                  print_sem and io_sem in DebugPrintV.
      6dca8c70
Loading