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
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
Hi,
While we are busy updating the interface: can we please also add a
callback which is called by spice server each time it updates a
surface in qxl device memory?
you mean whenever we render something? I guess I'll allow it to be
NULL at first cause I don't want to bother implementing it
Hi,
I find it problematic to decouple the qxl operations upon QXL_IO and the
worker operations. For example: upon destroy_surfaces, the qxl resets
the tracked guest commands. However, since destroy_surfaces is asynced,
the worker might read commands from the ring before handling destroy
surfaces,
On Thu, Jul 07, 2011 at 09:16:33AM +0300, Yonit Halperin wrote:
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
On Thu, Jul 07, 2011 at 09:38:01AM +0300, Yonit Halperin wrote:
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
On Thu, Jul 07, 2011 at 09:07:53AM +0200, Gerd Hoffmann wrote:
Hi,
While we are busy updating the interface: can we please also add a
callback which is called by spice server each time it updates a
surface in qxl device memory?
you mean whenever we render something? I guess I'll allow it
On Thu, Jul 07, 2011 at 09:29:47AM +0200, Gerd Hoffmann wrote:
Hi,
I find it problematic to decouple the qxl operations upon QXL_IO and the
worker operations. For example: upon destroy_surfaces, the qxl resets
the tracked guest commands. However, since destroy_surfaces is asynced,
the worker
On 07/06/2011 08:37 PM, Alon Levy wrote:
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.
Hi,
after flushing
Hi,
void (*surface_updated)(QXLInstance *qxl, uint32_t surface_id, struct QXLRect
*rect)
Looks good.
heh - I changed it to a list of rects instead of one in the patch I sent. Do you
think a single is better?
A list is fine too and I think it actually is even better. We can use
also
On Thu, Jul 07, 2011 at 10:19:43AM +0200, Andrea Celestino wrote:
Do you think that is possible to reduce further the compression time? If you
have an idea, I can try to implement it.
During my testing, I was under the impression that while I was testing with
a 1024x768 screen resolution and a
On Thu, Jul 07, 2011 at 11:26:56AM +0300, Yonit Halperin wrote:
On 07/06/2011 08:37 PM, Alon Levy wrote:
---
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
+++
Hi,
If FILTER only has 2 possible values, it would fit on a single bit,
did you use 2 because you know it will have to be extended soon?
I don't know of any specific plans, but there has been some talk about
adding support for bicubic filtering, so that's why I added the extra
bit. There are
v2/v3 - v3:
Same as v2/v3 was intented to be - forgot to commit changes, and after rebasing
most of the patches were changed, only 3 (asynchronous io port support) got
changed
significantly as per the updated: line below.
v2/v3 comment:
This is the whole thing, not splitting it this time. So
---
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]
---
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
+++
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
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 |4
display/qxldd.h |2 ++
include/qxl_driver.h |2 ++
miniport/qxl.c
---
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 f49585e..6219169 100644
--- a/include/qxl_driver.h
+++ b/include/qxl_driver.h
@@ -36,7 +36,7 @@ enum {
#define IOCTL_QXL_GET_INFO \
---
display/driver.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index 00fb5a3..357f79c 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -1231,7 +1231,7 @@ HBITMAP APIENTRY DrvCreateDeviceBitmap(DHPDEV dhpdev,
SIZEL size,
---
miniport/qxl.c | 13 +++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index 89e2075..7d6429d 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -718,13 +718,20 @@ void HWReset(QXLExtension *dev_ext);
#pragma alloc_text(PAGE,
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(+),
---
miniport/qxl.c | 182
1 files changed, 92 insertions(+), 90 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index d4b4afd..b5fdd29 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -142,7 +142,7 @@ ULONG DriverEntry(PVOID
---
miniport/qxl.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index b5fdd29..f184cf8 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 |6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index f184cf8..4747cd9 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 |4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index 4747cd9..05a660b 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -428,7 +428,7 @@ VP_STATUS SetVideoModeInfo(QXLExtension *dev,
PVIDEO_MODE_INFORMATION
---
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 =
---
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 357f79c..2fc099d 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -533,7 +533,7 @@
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 2fc099d..d22ccf9 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -529,11
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
Cc: Yonit Halperin yhalp...@redhat.com
---
display/driver.c | 15 ---
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index d22ccf9..32b4c9b 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -606,9 +606,11 @@ static VOID
---
display/res.c | 87 +
1 files changed, 87 insertions(+), 0 deletions(-)
diff --git a/display/res.c b/display/res.c
index 5e6d866..dd837b5 100644
--- a/display/res.c
+++ b/display/res.c
@@ -19,6 +19,9 @@
MERCHANTABILITY or FITNESS
---
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 32b4c9b..dcac224 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -695,7 +695,6 @@ static
---
display/res.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/display/res.c b/display/res.c
index 87c43c7..7c9181d 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/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 dcac224..09cd21b 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -1271,6 +1271,7 @@ HBITMAP APIENTRY
---
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 09cd21b..11ba875 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -1283,7 +1283,7 @@ HBITMAP
From: Yonit Halperin yhalp...@redhat.com
---
display/res.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/display/res.c b/display/res.c
index 76fc6b7..3f39c06 100644
--- a/display/res.c
+++ b/display/res.c
@@ -2888,7 +2888,7 @@ static void CursorCacheRemove(PDev *pdev,
From: Yonit Halperin yhalp...@redhat.com
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 3f39c06..14b0c97 100644
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
Cc: Yonit Halperin yhalp...@redhat.com
---
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
+++
Cc: Yonit Halperin yhalp...@redhat.com
---
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
Cc: Yonit Halperin yhalp...@redhat.com
---
display/res.c | 11 +--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/display/res.c b/display/res.c
index de55889..3c38e88 100644
--- a/display/res.c
+++ b/display/res.c
@@ -389,8 +389,15 @@ static void *__AllocMem(PDev* pdev,
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
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
---
display/driver.c | 44 ++--
1 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/display/driver.c b/display/driver.c
index fff462d..e77e32f 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -958,13 +958,53 @@ VOID
---
miniport/qxl.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/miniport/qxl.c b/miniport/qxl.c
index 746c554..10de59a 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -650,7 +650,7 @@ VP_STATUS FindAdapter(PVOID dev_extension,
}
if ((status =
On Thu, Jul 07, 2011 at 11:42:44AM +0200, Soeren Sandmann wrote:
Hi,
If FILTER only has 2 possible values, it would fit on a single bit,
did you use 2 because you know it will have to be extended soon?
I don't know of any specific plans, but there has been some talk about
adding support
---
display/res.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/display/res.c b/display/res.c
index 3c38e88..e6f0f81 100644
--- a/display/res.c
+++ b/display/res.c
@@ -264,6 +264,8 @@ static void WaitForCmdRing(PDev* pdev)
if (!wait) {
break;
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
Hi,
Generally, when parameters of a function are divided into several lines,
they should be aligned to the same column.
On 07/07/2011 12:43 PM, Alon Levy wrote:
Adds fields to SurfaceInfo to cache data previously only available
via SurfaceArea::draw_area.
Adds two functions to save and
On 07/07/2011 12:43 PM, Alon Levy wrote:
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
On 07/07/2011 12:43 PM, Alon Levy wrote:
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
Hi,
I forgot some more things about this patch:
On 07/07/2011 05:00 PM, Yonit Halperin wrote:
+static BOOL AssertModeDisable(PDev *pdev)
+{
+ DEBUG_PRINT((pdev, 3, %s entry\n, __FUNCTION__));
+ /* flush command ring and update all surfaces */
+ WRITE_PORT_UCHAR(pdev-notify_cmd_port, 0);
+
---
server/red_worker.c |4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/server/red_worker.c b/server/red_worker.c
index 9a61e86..8ae89a2 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -9140,7 +9140,7 @@ static void display_channel_release_item(RedChannel
---
server/red_worker.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/server/red_worker.c b/server/red_worker.c
index 8ae89a2..d8d032d 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -9541,7 +9541,7 @@ static inline void
used to move dirty rectangle notification from update_area to surface_updated.
This is RfC quality. Specifically where to call surface_updated. Currently I
only call it from stop. This should be good enough for migration, which is
the only use case I think. This means after stop qemu is guranteed
---
server/spice.h |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/server/spice.h b/server/spice.h
index 4fcc1cf..79886b9 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -89,7 +89,7 @@ struct SpiceCoreInterface {
#define SPICE_INTERFACE_QXL qxl
#define
On Fri, May 13, 2011 at 04:38:38PM +0800, Shuxiang Lim wrote:
You shall check the wiki page of it for the build/install/use of it or
download the .apk or src files.
Any use or improvement will be appreciated!
Besides, this version will need no change in server side at all,that is,it
can
I am trying to figure out the best approach to continue to port spice client to
iOS. Performance is a big issue in this effort.
I have tried all of the following:
* MacPorts to take advantages of the ported libraries. But there are just too
many that don't work, mismatched versions, and don't
59 matches
Mail list logo