From: Rob Clark <rob(a)ti.com>
To allow the potential use of overlays to display video content, a few
extra parameters are required:
+ source buffer in different format (for example, various YUV formats)
and size as compared to destination drawable
+ multi-planar formats where discontiguous buffers are used for
different planes. For example, luma and chroma split across
multiple memory banks or with different tiled formats.
+ flipping between multiple back buffers, perhaps not in order (to
handle video formats with B-frames)
+ cropping during swap.. in case of video, perhaps the required hw
buffers are larger than the visible picture to account for codec
borders (for example, reference frames where a block/macroblock
moves past the edge of the visible picture, but back again in
subsequent frames).
Current solutions use the GPU to do a scaled/colorconvert into a DRI2
buffer from the client context. The goal of this protocol change is
to push the decision to use overlay or GPU blit to the xorg driver.
---
Eventually this should replace Xv. With a few additions, like attributes,
it could perhaps be possible to implement the client side Xv API on top
of dri2.
Note: video is not exactly the same as 3d, there are a number of other
things to consider (scaling, colorconvert, multi-planar formats). But
on the other hand the principle is similar (direct rendering from hw
video codecs). And a lot infrastructure of connection, authentication,
is same. So there are two options, either extend DRI2 or add a new
protocol which duplicates some parts. I'd like to consider extending
DRI2 first, but if people think the requirements for video are too
much different from 3d, then I could split this into a new protocol.
In either case, I will implement the xserver side infrastructure, but
I wanted to get some feel for what is the preferred approach (extend
dri2 or new videoproto) first.
dri2proto.txt | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 59 insertions(+), 1 deletions(-)
diff --git a/dri2proto.txt b/dri2proto.txt
index df763c7..aa83b1a 100644
--- a/dri2proto.txt
+++ b/dri2proto.txt
@@ -163,7 +163,8 @@ and DRI2InvalidateBuffers.
6. Protocol Types
DRI2DRIVER { DRI2DriverDRI
- DRI2DriverVDPAU }
+ DRI2DriverVDPAU,
+ DRI2DriverXV }
These values describe the type of driver the client will want
to load. The server sends back the name of the driver to use
@@ -184,6 +185,10 @@ DRI2ATTACHMENT { DRI2BufferFrontLeft
These values describe various attachment points for DRI2
buffers.
+ In the case of video driver (DRI2DriverXV) the attachment,
+ other than DRI2BufferFrontLeft, just indicates buffer
+ number and has no other special significance.
+
DRI2BUFFER { attachment: CARD32
name: CARD32
pitch: CARD32
@@ -203,6 +208,16 @@ DRI2ATTACH_FORMAT { attachment: CARD32
format. 'attachment' describes the attachment point for the buffer,
'format' describes an opaque, device-dependent format for the buffer.
+
+DRI2ATTACH_VIDEO { attachment: CARD32
+ format: CARD32,
+ width, height: CARD32 }
+
+ The DRI2ATTACH_VIDEO describes an attachment and the associated
+ format for video buffers. 'attachment' describes the attachment
+ point for the buffer, 'format' describes a fourcc value for the
+ buffer.
+
⚙ ⚙ ⚙ ⚙ ⚙ ⚙
@@ -367,6 +382,15 @@ The name of this extension is "DRI2".
later.
┌───
+ DRI2GetVideoBuffers
+ drawable: DRAWABLE
+ attachments: LISTofDRI2ATTACH_VIDEO
+ ▶
+ width, height: CARD32
+ buffers: LISTofDRI2BUFFER
+└───
+
+┌───
DRI2GetMSC
drawable: DRAWABLE
▶
@@ -585,11 +609,21 @@ A.1 Common Types
4 CARD32 pitch
4 CARD32 cpp
4 CARD32 flags
+ 4 n extra names length
+ 4n LISTof extra names
└───
A DRI2 buffer specifies the attachment, the kernel memory
manager name, the pitch and chars per pixel for a buffer
attached to a given drawable.
+ In case of multi-planar video formats, 'extra names' will give the
+ list of additional buffer names if there is one buffer per plane.
+ For example, I420 has one Y plane in with a 8bit luma value per
+ pixel, followed by one U plane subsampled 2x2 (with one 8bit U value
+ per 2x2 pixel block), followed by one V plane subsampled 2x2. This
+ could either be represented as a single buffer name, or three
+ separate buffer names, one each for Y, U, and V.
+
┌───
DRI2ATTACH_FORMAT
4 CARD32 attachment
@@ -599,6 +633,17 @@ A.1 Common Types
This data type is only available with protocol version 1.1 or
later.
+┌───
+ DRI2ATTACH_VIDEO
+ 4 CARD32 attachment
+ 4 CARD32 format
+ 4 CARD32 width
+ 4 CARD32 height
+└───
+ Used to describe the attachment and format requested from the server.
+ This data type is only available with protocol version 1.? or
+ later.
+
A.2 Protocol Requests
┌───
@@ -745,6 +790,11 @@ A.2 Protocol Requests
4 CARD32 divisor_lo
4 CARD32 remainder_hi
4 CARD32 remainder_lo
+ 4 DRI2ATTACHMENT source
+ 4 CARD32 x1
+ 4 CARD32 y1
+ 4 CARD32 x2
+ 4 CARD32 y2
▶
1 1 Reply
1 unused
@@ -754,6 +804,14 @@ A.2 Protocol Requests
4 CARD32 swap_lo
5n LISTofDRI2BUFFER buffers
└───
+ The 'source', if not zero (DRI2BufferFrontLeft) indicates the
+ attachment point of the buffer to swap w/ DRI2BufferFrontLeft.
+ If zero is specified, DRI2BufferBackLeft is swapped with the
+ DRI2BufferFrontLeft buffer, for compatibility.
+
+ If 'source' is not zero, (x1,y1), (x2,y2) specify the bounding
+ box in coordinates of the source buffer which should be scaled
+ to (0,0), (width,height) of the destination drawable.
┌───
DRI2GetMSC
--
1.7.5.4
Being able to accurately and consistently measure the elapsed CPU time
is important for toolchain benchmarking. I ran a few experiments today
and wrote up the results at:
https://wiki.linaro.org/WorkingGroups/ToolChain/Benchmarks/TimerAccuracy
The original is available at:
http://bazaar.launchpad.net/~michaelh1/linaro-toolchain-benchmarks/trunk/vi…
Short story:
* Use clock_gettime(CLOCK_PROCESS_CPUTIME_ID, ...)
* The mean is unaffected by CPU load
* I/O load has a significant effect
* Use nice -n -20 to reduce the variance
For a CPU bound, non-VFP, L1 bound, 5 s long program:
* The variation coefficient is < 0.01 % so we can reliably measure
0.1 % changes
* The accuracy is around 50 us
I've changed eembc-linaro and will change denbench-linaro next. I
recommend anyone else measuring time on core based benchmarks to do
the same.
-- Michael
The Linaro Power Management Working Group has created a Launchpad project to
develop functional test suite for the power management blocks on arm:
* cpuidle
* cpufreq
* cpu hotplug
* sched_mc
This test suite would allow to quickly spot configuration errors and
regressions in existing
functionality on automated daily builds. It will be continually enhanced
to incorporate new frameworks, stress-test existing ones and eventually add
energy measurements.
The project can be found at: https://launchpad.net/linaro-pm-qa
Best regards,
Mounir
--
Mounir Bsaibes
Project Manager
Follow Linaro.org:
facebook.com/pages/Linaro/155974581091106http://twitter.com/#!/linaroorghttp://www.linaro.org/linaro-blog <http://www.linaro.org/linaro-blog>
Hello,
Some time passed since last update on Gerrit deployment, that's
because work on complete AOSP mirroring to out tree took longer than
expected. All in all, following was done:
Revamped branching in our toolchain/* components, freed room for
upstream branches, mirrored them.
Mirrored AOSP kernel components. That was something I was putting
off until latest, knowing that it would bring enough burden, like
increasing storage space, increasing sync time, etc. Until last I wasn't
sure if they should mirrored, but something which turned scale is
recent talk about possibility to provide image for consumer phones from
Google (for which we may want to hack kernels as provided by AOSP).
Other point was just having complete AOSP mirror, and writing that
question off forever, freeing space for other work. So, I proceeded
with doing it, which soon led to OutOfMemory in Gerrit, so it's
probably good that it got uncovered during deployment, than later.
Thanks to IS, memory and Gerrit size were increased, and kernel imports
finished successfully.
That means that we have complete mirror of upstream AOSP tree, and out
tree is a proper superset of AOSP. The only workitem left is setting up
automated upstream syncing via cron (so far I've been doing this
manually), and we have nice tree set up with upstream at our fingertips
(without having availability issues during builds, etc.), and at the
same time, have all freedom to do any stuff on top of it (branching,
tagging, etc.)
I also updated Linaro Gerrit howto:
https://wiki.linaro.org/Platform/Android/Gerrit , which now should have
all info to have one started quickly with Gerrit, and cover all aspects
of Gerrit setup (like upstream mirroring and permission settings). I'd
appreciate review of that and letting me know if something is missing
there.
Finally few points we can continue with to elaborate our usage of
Gerrit:
1. Set up branch policy (naming, etc.) and enforce it on Gerrit level.
This may require revamping branching in other toolchain/* components
(upstreamed not from AOSP), but in the end we'll get really robust
development setup.
2. Turn off review bypass option which was available during transition
process. I guess Android team if comfortable by now with new process
(there're more than 80 patches passed thru review by now!), so once
11.08 release is out, it would be good time to do that.
--
Best Regards,
Paul
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linarohttp://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
From: Linus Walleij <linus.walleij(a)linaro.org>
This is the sixth iteration of the controller subsystem, most
changes are described in the first patch, copied here for reference:
ChangeLog v5->v6:
- Create an abstract pin group concept that can sort pins into
named and enumerated groups no matter what the use of these
groups may be, one possible usecase is a group of pins being
muxed in or so. The intention is however to also use these
groups for other pin control activities.
- Make it compulsory for pinmux functions to associate with
at least one group, so the abstract pin group concept is used
to define the groups of pins affected by a pinmux function.
The pinmux driver interface has been altered so as to enforce
a function to list applicable groups per function.
- Provide an optional .group entry in the pinmux machine map
so the map can select beteween different available groups
to be used with a certain function.
- Consequent changes all over the place so that e.g. debugfs
present reasonable information about the world.
- Drop the per-pin mux (*config) function in the pinmux_ops
struct - I was afraid that this would start to be used for
things totally unrelated to muxing, we can introduce that to
the generic struct pinctrl_ops if needed. I want to keep
muxing orthogonal to other pin control subjects and not mix
these things up.
Linus Walleij (4):
drivers: create a pin control subsystem v6
pinmux: add a driver for the U300 pinmux
amba: request muxing for PrimeCell devices
mach-u300: activate pinmux driver, delete old padmux driver
Documentation/ABI/testing/sysfs-class-pinmux | 11 +
Documentation/pinctrl.txt | 876 ++++++++++++++++++++++++
MAINTAINERS | 5 +
arch/arm/mach-u300/Kconfig | 2 +
arch/arm/mach-u300/Makefile | 2 +-
arch/arm/mach-u300/core.c | 38 +-
arch/arm/mach-u300/include/mach/syscon.h | 136 ----
arch/arm/mach-u300/mmc.c | 16 -
arch/arm/mach-u300/padmux.c | 367 ----------
arch/arm/mach-u300/padmux.h | 39 --
arch/arm/mach-u300/regulator.c | 16 +
arch/arm/mach-u300/spi.c | 20 -
drivers/Kconfig | 4 +
drivers/Makefile | 2 +
drivers/amba/bus.c | 49 ++-
drivers/pinctrl/Kconfig | 36 +
drivers/pinctrl/Makefile | 7 +
drivers/pinctrl/core.c | 599 +++++++++++++++++
drivers/pinctrl/core.h | 24 +
drivers/pinctrl/pinmux-u300.c | 931 ++++++++++++++++++++++++++
drivers/pinctrl/pinmux-u300.h | 141 ++++
drivers/pinctrl/pinmux.c | 822 +++++++++++++++++++++++
drivers/pinctrl/pinmux.h | 4 +
include/linux/amba/bus.h | 2 +
include/linux/pinctrl/machine.h | 73 ++
include/linux/pinctrl/pinctrl.h | 172 +++++
include/linux/pinctrl/pinmux.h | 124 ++++
27 files changed, 3935 insertions(+), 583 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-class-pinmux
create mode 100644 Documentation/pinctrl.txt
delete mode 100644 arch/arm/mach-u300/padmux.c
delete mode 100644 arch/arm/mach-u300/padmux.h
create mode 100644 drivers/pinctrl/Kconfig
create mode 100644 drivers/pinctrl/Makefile
create mode 100644 drivers/pinctrl/core.c
create mode 100644 drivers/pinctrl/core.h
create mode 100644 drivers/pinctrl/pinmux-u300.c
create mode 100644 drivers/pinctrl/pinmux-u300.h
create mode 100644 drivers/pinctrl/pinmux.c
create mode 100644 drivers/pinctrl/pinmux.h
create mode 100644 include/linux/pinctrl/machine.h
create mode 100644 include/linux/pinctrl/pinctrl.h
create mode 100644 include/linux/pinctrl/pinmux.h
--
1.7.3.2
What we want to do for the next linaro release 11.09 is have working
USB wifi support out of the box on beagle/beagle xm with the developer
image.
Tho you won't have to twist my arm hard at all to include BT in that
goal as well Tony :-)
We like to keep the developer image as small as possible so the fun
part is keeping this to the minimal number of packages to make it
work.
For wifi I BELIEVE we just need to add wireless-tools.
So here's what I'd like you to do.
Grab the developer rootfs -
http://snapshots.linaro.org/11.05-daily/linaro-developer/20110831/0/images/…
grab the omap3 hwpack -
http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/omap3/20110831/0/ima…
Install to sd with linaro-media-create.
If you can apt-get install wireless-tools and see if that's enough to
get your wifi working. If not what else did you need?
For bluetooth, same Q if you want to have that as a goal as well. It's optional.
Either way I don't have a wifi USB device or BT so your help is essential!
Thanks!
Tom
On Wed, Aug 31, 2011 at 12:26 PM, Tony Mansson <tony.mansson(a)linaro.org> wrote:
> Tom,
>
> sure, I have an XM and a USB Bluetooth. I guess I can get a USB WiFi
> if I have to. But I agree that drivers can be an obstacle. What I
> don't have is a lot of spare time :-)
>
> But keep me in the loop.
>
> /Tony
>
> On 31 August 2011 17:52, Tom Gall <tom.gall(a)linaro.org> wrote:
>> On Wed, Aug 31, 2011 at 10:51 AM, Robert Nelson <robertcnelson(a)gmail.com> wrote:
>>> On Wed, Aug 31, 2011 at 10:47 AM, Tom Gall <tom.gall(a)linaro.org> wrote:
>>>> As the subject says. Looking for someone with either a beagle or
>>>> beagle xm board and has a USB Wifi. We'd like to knock off a bug. Your
>>>> help would be greatly appreciated. Please reply to me directly.
>>>> Thanks!
>>>
>>> Hi Tom,
>>>
>>> Is there a specific USB WiFi chipset your targeting, or just working
>>> WiFi in general?
>>
>> WiFi in general. In short we'd like to extend WiFi support into our
>> developer image.
>>
>>> Regards,
>>>
>>> --
>>> Robert Nelson
>>> http://www.rcn-ee.com/
>>>
>>
>>
>>
>> --
>> Regards,
>> Tom
>>
>> "We want great men who, when fortune frowns will not be discouraged."
>> - Colonel Henry Knox
>> Linaro.org │ Open source software for ARM SoCs
>> w) tom.gall att linaro.org
>> w) tom_gall att vnet.ibm.com
>> h) tom_gall att mac.com
>>
>> _______________________________________________
>> linaro-dev mailing list
>> linaro-dev(a)lists.linaro.org
>> http://lists.linaro.org/mailman/listinfo/linaro-dev
>>
>
--
Regards,
Tom
"We want great men who, when fortune frowns will not be discouraged."
- Colonel Henry Knox
Linaro.org │ Open source software for ARM SoCs
w) tom.gall att linaro.org
w) tom_gall att vnet.ibm.com
h) tom_gall att mac.com