Re: scroll down the screen

2023-01-20 Thread Colin Parker
Hi Johnny,
What I said is, I don't think you can run Sculpt effectively on such
small screens right now. When using an emulator I always set the screen
size to something big enough - this depends on the emulator but there are
tricks, at least with qemu.

On Fri, Jan 20, 2023 at 6:53 PM Johnny Nunez 
wrote:

>
>
>
>
>
>
> Hi Colin,
>
>
>
> I am still struggling with the gui here , I can’t see what you reply back,
> can you please try again , thank you
> ___
> Genode users mailing list
> users@lists.genode.org
> https://lists.genode.org/listinfo/users
>
___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


Re: scroll down the screen

2023-01-20 Thread Johnny Nunez



Hi Colin,

I am still struggling with the gui here , I can’t see what you reply back, can 
you please try again , thank you
___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


Re: memcpy_cpu on 64bit arm

2023-01-20 Thread Michael Grunditz
> There is no particular reason why the implementation is (i.e. "was")
> empty. You can find a recent commit on the staging branch that applies a
> few obvious optimisations to all architectures, though:
> https://github.com/genodelabs/genode/commit/4d06661d7c3f7b798ec8228f04983bd4ae7cddcf
>
Is there any content in the commit?

> For 32bit arm, I optimised the memcpy_cpu implementation a while ago
> (see Issue #4456). Interestingly, I could not see any improvements when
> using neon, at least on arm v7. I got the impression that the
> instruction density is not an issue when using the multi-word
> load/store (ldm/stm).

Ok. I think that it makes more sense now. But yes for v7 it might not
help.The only
way , from my experience, neon could be used effectively is a
test/copy routine for
all sizes. Most arm/arm64 libc do that.

I would like to try this. But I have no Idea where to put the .s file
in order to build it.
I don't want to have it inline since it is quite big..

Thanks,

Michael

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


Re: memcpy_cpu on 64bit arm

2023-01-20 Thread Johannes Schlatow
Hi Michael,

On Fri, 20 Jan 2023 16:40:10 +0100
Michael Grunditz  wrote:

> Hello,
> 
> Is there any particular reason why it is empty?
> My rect copy to fb in riscos uses neon. It is
> a speed gain of about 40% compared to word/long word
> copy from c. But I don't know how much it affects Genode.
> 
> It seems like it ends up in /* eight bytes chunks */ but isn't that a
> byte copy?
> 

There is no particular reason why the implementation is (i.e. "was")
empty. You can find a recent commit on the staging branch that applies a
few obvious optimisations to all architectures, though:
https://github.com/genodelabs/genode/commit/4d06661d7c3f7b798ec8228f04983bd4ae7cddcf

For 32bit arm, I optimised the memcpy_cpu implementation a while ago
(see Issue #4456). Interestingly, I could not see any improvements when
using neon, at least on arm v7. I got the impression that the
instruction density is not an issue when using the multi-word
load/store (ldm/stm).

Johannes

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


memcpy_cpu on 64bit arm

2023-01-20 Thread Michael Grunditz
Hello,

Is there any particular reason why it is empty?
My rect copy to fb in riscos uses neon. It is
a speed gain of about 40% compared to word/long word
copy from c. But I don't know how much it affects Genode.

It seems like it ends up in /* eight bytes chunks */ but isn't that a byte copy?

I have the feeling that in my case, with blit,mem copy without crop
is faster than
doing it with crop every time. Ram, accesses are proved to be very fast
on this hardware. The extra cycles for cropping might be a bottleneck.
Combined with a neon run through , testing and copying without leaving
routine could probably make a big performance gain.

But.

I am happy, as always,  to be proved wrong!

Michael

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


Re: video and usb driver (rk3588)

2023-01-20 Thread Michael Grunditz
OK so stupid me.. Invalidation should be after Blit. I don't know
where my brain is :-)
Thanks for reading!

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


Re: video and usb driver (rk3588)

2023-01-20 Thread Michael Grunditz
>
> I have tested with full screen invalidate. It doesn't look pretty when
> moving a window.. but mouse pointer
> is ok. I have tried the below. Result: No traces if moving up , left
> or right. Down , traces. So the start address
>  is wrong, probably.
>
> cache_clean_invalidate_data(xxx+invalid,(size.count()*sizeof(Pixel))-invalid);

The imx8 doesn't use cached dma-buffer?  Is there soeḿething (apart from  imx53)
 that does use cached framebuffer?

/Michael

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users


Re: video and usb driver (rk3588)

2023-01-20 Thread Michael Grunditz
On Thu, 19 Jan 2023 at 17:04, Michael Grunditz
 wrote:
>
> >
> > It might be easier to (1) calculate both the start offset and the end
> > offset, then (2) truncate the start offset to the cache-line size, (3)
> > round the end offset to the cache-line size, (4) calculate the size
> > argument by subtracting the start from the end offset.
> >
> > Regarding (2), when calculating the end offset via surface.w()*rect.y2()
> > + rect.x2(), it will refer to the pixel at the lower-right corner of the
> > dirty rectangle. You have to add 1 to this offset value, so that the
> > subsequent subtraction yields the number of covered pixels, not the
> > difference. E.g., think of a rectangle of only one pixel where p1 == p2.
> > Here we want to flush the cache line around this pixel. The difference
> > between the start and end offsets would be zero. But the number of
> > covered pixels is one.
>
> I have tried with 16,32 and 64. Same result. Movement y wise makes
> traces with mouse and bigger artifacts for windows.
> These sorts of things are really my weak spot.
>
> int a=0;
> int r=0;
> a=64;
> Genode::addr_t invalid =
> (rect.x1()+(rect.y1()*(size.w(*sizeof(Pixel);
> log("unaligned invalid: ",invalid);
>
> invalid = invalid&~63;
>
> Genode::addr_t endoffset  =
> (1+(size.w()*rect.y2())+ rect.x2())*sizeof(Pixel);
> log("endoffset: ",endoffset);
>
> r = endoffset%a;
> endoffset = r? endoffset + (a - r) : endoffset;
> log("invalid: ",invalid);
> log("invalidz: ",endoffset);
>
> Genode::addr_t xxx = (Genode::addr_t)surface.addr();
>
> cache_clean_invalidate_data(xxx+invalid,endoffset-invalid);

I have tested with full screen invalidate. It doesn't look pretty when
moving a window.. but mouse pointer
is ok. I have tried the below. Result: No traces if moving up , left
or right. Down , traces. So the start address
 is wrong, probably.

cache_clean_invalidate_data(xxx+invalid,(size.count()*sizeof(Pixel))-invalid);

___
Genode users mailing list
users@lists.genode.org
https://lists.genode.org/listinfo/users