On 07/06/2011 08:37 PM, Alon Levy wrote:
The new _ASYNC io's in qxl_dev listed at the end get six new api
functions, and an additional callback function "async_complete". When
the async version of a specific io is used, completion is notified by
calling async_complete, and no READY message is wri
On 07/06/2011 08:37 PM, Alon Levy wrote:
The new _ASYNC io's in qxl_dev listed at the end get six new api
functions, and an additional callback function "async_complete". When
the async version of a specific io is used, completion is notified by
calling async_complete, and no READY message is wri
---
server/spice.h |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/server/spice.h b/server/spice.h
index fec2476..20ceeef 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -206,6 +206,8 @@ struct QXLInterface {
void (*notify_update)(QXLInstance *qin, uint32_t updat
---
server/red_dispatcher.c | 64 ++-
server/red_worker.c |4 ++-
server/spice.h | 18 ++--
3 files changed, 53 insertions(+), 33 deletions(-)
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c
index 477dede..6cc
This does three things:
flush both command rings
stop (rendering everything)
start
Pulled out start and stop to their own functions to do this easily.
The added api is specifically async, i.e. it calls async_complete
when done.
---
server/red_dispatcher.c | 10
server/red_worker.c
The new _ASYNC io's in qxl_dev listed at the end get six new api
functions, and an additional callback function "async_complete". When
the async version of a specific io is used, completion is notified by
calling async_complete, and no READY message is written or expected by
the dispatcher.
update
v2 changes:
added cookie (uint64_t), seperate patch
added surface_update (as long as we are changing the api)
- more of an RfC since I'm not sure what Gerd wants..
v1 comment:
This is a redoing of async io support using spice api changes, and on top of
it the s3 support patches using the orig
On Wed, Jul 06, 2011 at 02:42:03PM +0200, Gerd Hoffmann wrote:
> Hi,
>
> >diff --git a/server/spice.h b/server/spice.h
> >index f64ff41..f0d5685 100644
> >--- a/server/spice.h
> >+++ b/server/spice.h
> >@@ -122,6 +122,17 @@ struct QXLWorker {
> > void (*reset_cursor)(QXLWorker *worker);
> >
On Wed, 2011-07-06 at 15:38 +0200, Soeren Sandmann wrote:
> RENDER is a very commonly used X extension that currently is not
> supported very well in SPICE. This leads to the QXL X driver having to
> read back pixels from the device, render in software, then transmit an
> image. This is currently t
RENDER is a very commonly used X extension that currently is not
supported very well in SPICE. This leads to the QXL X driver having to
read back pixels from the device, render in software, then transmit an
image. This is currently the biggest performance issue with SPICE for X.
The specification
---
display/driver.c |1 -
display/res.c|3 ++-
miniport/qxl.c |6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 4a80202..4ff0d43 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -696,7 +696,6 @@ static BOOL
Hi,
diff --git a/server/spice.h b/server/spice.h
index f64ff41..f0d5685 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -122,6 +122,17 @@ struct QXLWorker {
void (*reset_cursor)(QXLWorker *worker);
void (*destroy_surface_wait)(QXLWorker *worker, uint32_t surface_id);
void
---
display/driver.c | 44 ++--
1 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 02ee8d0..37135aa 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -956,13 +956,53 @@ VOID DrvDisableSurface(DHP
our old code did a very minimal flow good for resolution change:
DrvAssertMode False (disable)
destroy primary surface
delete vram memslot
DrvAssertMode True (enable)
create primary surface (destroyed on disable)
create vram memslot
Aside: Importantly the flow for resolution change invol
GDI will continue using any callback we registered even after a
DrvAssertMode(FALSE). We are expected to move any surface we own to GDI handled
and ignore any new requests to create a surface. This is called punting and we
use PDev->enabled to indicate if this is required.
A later patch will set P
Adds fields to SurfaceInfo to cache data previously only available
via SurfaceArea::draw_area.
Adds two functions to save and restore surfaces from ram:
MoveAllSurfacesToVideoRam
allocates and copies surfaces from vram to ram, and calls EngModifySurface
with an empty hook list to make those sur
This adds a third surface allocation type, allocation from guest memory using
the windows ddk allocator.
Not all code paths are used later - the creation is not done since
copy-surfaces-to-ram allocates memory itself, and at the end we never allocate
any surfaces when the device is disabled, we ju
Cc: Yonit Halperin
---
display/surface.h |8 +++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/display/surface.h b/display/surface.h
index e677610..0b7edb3 100644
--- a/display/surface.h
+++ b/display/surface.h
@@ -55,10 +55,16 @@ static _inline void FreeSurfaceInfo(PDev
Cc: Yonit Halperin
---
display/surface.h |3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/display/surface.h b/display/surface.h
index 00fd93c..e677610 100644
--- a/display/surface.h
+++ b/display/surface.h
@@ -41,6 +41,9 @@ static _inline UINT32 GetSurfaceId(SURFOBJ *sur
Cc: Yonit Halperin
---
display/surface.c |9 +
display/surface.h | 15 +++
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/display/surface.c b/display/surface.c
index 436e76e..d24e751 100644
--- a/display/surface.c
+++ b/display/surface.c
@@ -111,14 +111,
---
display/res.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/display/res.c b/display/res.c
index 146a918..9bbdb06 100644
--- a/display/res.c
+++ b/display/res.c
@@ -264,6 +264,8 @@ static void WaitForCmdRing(PDev* pdev)
if (!wait) {
break;
Cc: Yonit Halperin
---
display/res.c | 11 +--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/display/res.c b/display/res.c
index 0a9db0b..146a918 100644
--- a/display/res.c
+++ b/display/res.c
@@ -389,8 +389,15 @@ static void *__AllocMem(PDev* pdev, UINT32 mspace_type,
Refactors InitResources code called upon DrvEnableSurface so it can later be
called
from AssertModeEnable. Introduces three helpers:
EmptyReleaseRing - no vmexit, goes over release ring and empties it all (as
opposed to
OOM behavior that empties 50 resources).
InitDeviceMemoryResources - resets
From: Yonit Halperin
even if it is not found in the cache (which is an error)
---
display/res.c | 45 ++---
1 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/display/res.c b/display/res.c
index 08ab537..d93a6af 100644
--- a/display/res.c
+
From: Yonit Halperin
---
display/res.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/display/res.c b/display/res.c
index 3c24f6c..08ab537 100644
--- a/display/res.c
+++ b/display/res.c
@@ -2888,7 +2888,7 @@ static void CursorCacheRemove(PDev *pdev, InternalCursor
*cu
---
display/driver.c |2 +-
display/res.c |2 +-
display/surface.h |2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 3d15295..3d46dca 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -1281,7 +1281,7 @@ HBITMAP AP
---
display/driver.c |1 +
display/res.c|3 +++
2 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 4ff0d43..3d15295 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -1269,6 +1269,7 @@ HBITMAP APIENTRY DrvCreateDeviceBitmap(DH
---
display/res.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/display/res.c b/display/res.c
index ebeebb3..ea3f7f8 100644
--- a/display/res.c
+++ b/display/res.c
@@ -672,7 +672,7 @@ QXLDrawable *Drawable(PDev *pdev, UINT8 type, RECTL *area,
CLIPOBJ *clip, UINT32
---
display/res.c | 87 +
1 files changed, 87 insertions(+), 0 deletions(-)
diff --git a/display/res.c b/display/res.c
index c649f44..ebb408b 100644
--- a/display/res.c
+++ b/display/res.c
@@ -19,6 +19,9 @@
MERCHANTABILITY or FITNESS F
Cc: Yonit Halperin
---
display/driver.c | 15 ---
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 1e9b833..4a80202 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -606,9 +606,11 @@ static VOID CreatePrimarySurface(PDev
changes the passed user pointer to mspace from NULL to a proper pdev, so
it will be able to print using QXL_IO_LOG.
---
display/qxldd.h | 25 +
display/res.c | 14 --
display/res.h |1 +
3 files changed, 34 insertions(+), 6 deletions(-)
diff --git a
Disabled if no DBG, and uses loglevel == 1
---
display/driver.c | 31 +++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 132d57c..1e9b833 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -529,11 +529,42
---
display/driver.c | 35 ++-
display/surface.c |4 ++--
2 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 872c40a..132d57c 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -533,7 +533,7 @@ VOID
---
display/mspace.c |6 --
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/display/mspace.c b/display/mspace.c
index ec29fc6..d0ba123 100644
--- a/display/mspace.c
+++ b/display/mspace.c
@@ -2402,8 +2402,9 @@ size_t mspace_footprint(mspace msp) {
mstate ms = (mstate)msp;
---
miniport/qxl.c |4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index d9b5bb5..43749a9 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -428,7 +428,7 @@ VP_STATUS SetVideoModeInfo(QXLExtension *dev,
PVIDEO_MODE_INFORMATION video_mo
---
miniport/qxl.c |6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index ba82d9f..d9b5bb5 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -420,11 +420,11 @@ VP_STATUS Prob(QXLExtension *dev, VIDEO_PORT_CONFIG_INFO
*conf_info,
}
---
miniport/qxl.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index 575bbf0..ba82d9f 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -1003,11 +1003,13 @@ BOOLEAN StartIO(PVOID dev_extension,
PVIDEO_REQUEST_PACKET packet)
---
miniport/qxl.c | 182
1 files changed, 92 insertions(+), 90 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index 5341ab4..575bbf0 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -142,7 +142,7 @@ ULONG DriverEntry(PVOID c
We zero the memory explicitly for debugging purposes when going to sleep
to ensure the return path doesn't rely on any initialization done before.
SetPowerState slightly refactored in the process.
---
miniport/qxl.c | 36
1 files changed, 32 insertions(+), 4
---
miniport/qxl.c | 13 +++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index 583e610..b5f0cfd 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -718,13 +718,20 @@ void HWReset(QXLExtension *dev_ext);
#pragma alloc_text(PAGE, HWRe
---
miniport/qxl.c |3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index dce965e..583e610 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -79,6 +79,7 @@ typedef struct QXLExtension {
PHYSICAL_ADDRESS vram_physical;
ULONG vr
snprintf is Copyright Patrick Powell 1995 (with more changes, see
miniport/minimal_snprintf.c
starting comment).
Implements a DebugPrint similar to the one in display, using QXL_IO_LOG with
the buffer
on the pci devram bar at ram->log_buf, and log_level taken from there as well
(set by
qemu via
---
display/driver.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index fd9902d..872c40a 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -1229,7 +1229,7 @@ HBITMAP APIENTRY DrvCreateDeviceBitmap(DHPDEV dhpdev,
SIZEL size, UL
---
include/qxl_driver.h |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/qxl_driver.h b/include/qxl_driver.h
index a341c43..885c3c6 100644
--- a/include/qxl_driver.h
+++ b/include/qxl_driver.h
@@ -36,7 +36,7 @@ enum {
#define IOCTL_QXL_GET_INFO \
CTL_CODE(FI
Revision 3 (V10) of the qxl device supports these added io ports which make
sleep, resolution
change and logout simpler to implement with less vmexits from pov of the driver.
---
display/driver.c |2 ++
display/qxldd.h |2 ++
include/qxl_driver.h |2 ++
miniport/qxl.c |
Fixes same issue in RHBZ#700134, but for a windows guest. Requires a revision 3
pci device, that will be introduced with qemu patches. If the revision is 2 the
old behavior is maintained, namely using the non asynchronous io ports.
qxl revision 3 (QXL_REVISION_V10) gains support for async io opera
---
display/driver.c |1 +
display/qxldd.h |2 ++
include/qxl_driver.h |2 ++
miniport/qxl.c |4
4 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index f82c744..2c88cc5 100644
--- a/display/driver.c
+++ b/display
---
miniport/qxl.inf |4
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/miniport/qxl.inf b/miniport/qxl.inf
index bb7f582..6527075 100644
--- a/miniport/qxl.inf
+++ b/miniport/qxl.inf
@@ -20,18 +20,22 @@ qxl.Display = 11; system32
; WinXP x86 and up
[q.NTx86]
%RHAT%
This is the whole thing, not splitting it this time. So I apologize
for patches already sent and acked on the list (but I think there are
none).
updated:
async uses an enum for the async ops.
flush_surfaces is also async.
You need an updated qemu and spice to test. (see patches on the correspon
I am studying red_send_stream_data() function. I have the stable version of
spice 0.8.1. A the end of this function there are some line that I don't
understand totally:
red_channel_init_send_data(channel, SPICE_MSG_DISPLAY_STREAM_DATA, NULL);
SpiceMsgDisplayStreamData stream_data;
stream_data.id
On Wed, Jul 06, 2011 at 01:04:24PM +0200, Alon Levy wrote:
> On Wed, Jul 06, 2011 at 12:32:53PM +0200, Christophe Fergeau wrote:
> > It's not used when we use jpeg-turbo colorspaces, so it's better
> > to allocate it when we know we'll need it rather than always
> > allocating it even if it won't b
On Tue, Jul 05, 2011 at 04:12:47PM +0300, Yonit Halperin wrote:
> On 07/05/2011 03:22 PM, Alon Levy wrote:
> >On Mon, Jun 20, 2011 at 10:57:58AM +0200, Alon Levy wrote:
> >
> >ping?
> >
> >>qemu calls spice_server_migrate_switch even if it didn't do a
> >>spice_server_migrate_info first. Fix the re
On Wed, 2011-07-06 at 13:23 +0300, Arnon Gilboa wrote:
> John A. Sullivan III wrote:
> >
> > We've made considerable progress. We do not have VS2008 as we are not a
> > Windows shop and I assume in my Windows ignorance that that's a paid
> > licensed product so we'd have track which of us could w
This does three things:
flush both command rings
stop (rendering everything)
start
Pulled out start and stop to their own functions to do this easily.
The added api is specifically async, i.e. it calls async_complete
when done.
---
server/red_dispatcher.c | 10
server/red_worker.c
The new _ASYNC io's in qxl_dev listed at the end get six new api
functions, and an additional callback function "async_complete". When
the async version of a specific io is used, completion is notified by
calling async_complete, and no READY message is written or expected by
the dispatcher.
update
This is a redoing of async io support using spice api changes, and on top of
it the s3 support patches using the original suggestion of an added api call
(but
named flush_surfaces instead of update_mem).
Recap: After the previous discussions with Gerd and Yonit we agreed a way to
call flush_all_q
On Wed, Jul 06, 2011 at 12:32:53PM +0200, Christophe Fergeau wrote:
> It's not used when we use jpeg-turbo colorspaces, so it's better
> to allocate it when we know we'll need it rather than always
> allocating it even if it won't be used.
Just one thing - you're turning an abort to a return FALSE
On Wed, Jul 06, 2011 at 12:22:48PM +0200, Alon Levy wrote:
>
> belated ACK series. Just I remember there was one issue about a non required
> malloc or a required one that you should free, and you said you already
> intened
> to fix that, I don't remember where.
Ah yeah, sorry, I never sent t
It's not used when we use jpeg-turbo colorspaces, so it's better
to allocate it when we know we'll need it rather than always
allocating it even if it won't be used.
---
server/mjpeg_encoder.c | 16
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/server/mjpeg_enco
On Wed, Jul 06, 2011 at 11:48:54AM +0200, Andrea Celestino wrote:
> In order to measure compression time, you mean the time between
> jpeg_start_compress() and jpeg_finish_compress, or the time of
> encode_frame() function?
I measured the time of the whole red_send_stream_data function. In
retrosp
On Tue, Jun 28, 2011 at 01:18:01PM +0200, Christophe Fergeau wrote:
> Hi,
>
Hi,
belated ACK series. Just I remember there was one issue about a non required
malloc or a required one that you should free, and you said you already intened
to fix that, I don't remember where.
Alon
> Currently,
John A. Sullivan III wrote:
We've made considerable progress. We do not have VS2008 as we are not a
Windows shop and I assume in my Windows ignorance that that's a paid
licensed product so we'd have track which of us could work on it and
which couldn't so we've tried to make due with just the S
In order to measure compression time, you mean the time between
jpeg_start_compress() and jpeg_finish_compress, or the time of
encode_frame() function?
2011/7/5 Christophe Fergeau
> I finally ran some performance test on these changes on a small theora
> clip, average compression time goes down
On Tue, Jul 05, 2011 at 12:30:29PM +0200, Andrea Celestino wrote:
> I have read the document "spice_for_newbies.pdf", that describes how spice
> works.
> When I play a video on the guest, the video is decoded then the user
> application requests the OS graphic engine (X in linux), to perform a
> re
Please, I would like to know if what I wrote in my previous message it's
correct.
Thanks.
Regards.
2011/7/5 Andrea Celestino
> I have read the document "spice_for_newbies.pdf", that describes how spice
> works.
> When I play a video on the guest, the video is decoded then the user
> application
65 matches
Mail list logo