mesa.git
2 years agovulkan/overlay: add a margin to the size of the window
Lionel Landwerlin [Sat, 2 Mar 2019 17:29:12 +0000 (17:29 +0000)]
vulkan/overlay: add a margin to the size of the window

Looks a bit better.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2 years agovulkan/overlay: add no display option
Lionel Landwerlin [Sat, 2 Mar 2019 17:25:22 +0000 (17:25 +0000)]
vulkan/overlay: add no display option

In case you're just interested in data being record to the output
file.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2 years agovulkan/overlay: add pipeline statistic & timestamps support
Lionel Landwerlin [Mon, 25 Feb 2019 16:59:11 +0000 (16:59 +0000)]
vulkan/overlay: add pipeline statistic & timestamps support

v2: switch to VkBase{In,Out}Structure

v3: Add timestamps at begin/end of primary command buffers to estimate
    gpu time spent per submission (Lionel)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Eric Engestrom <eric.engestrom@intel.com> (v2)
2 years agovulkan/overlay: record stats in command buffers and accumulate on exec/submit
Lionel Landwerlin [Sat, 2 Mar 2019 17:15:41 +0000 (17:15 +0000)]
vulkan/overlay: record stats in command buffers and accumulate on exec/submit

This significantly reworks how numbers displayed are computed. We
accumulate operations written into command buffers and add those to
the device when submitted to a queue. These collected values are then
used to compute per frame overlay data.

We also accumulate the data over the sampling fps period to produce
numbers for that period of time.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2 years agovulkan/overlay: update help printout
Lionel Landwerlin [Thu, 28 Feb 2019 16:47:56 +0000 (16:47 +0000)]
vulkan/overlay: update help printout

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agovulkan/util: generate a helper function to return pNext struct sizes
Lionel Landwerlin [Mon, 25 Feb 2019 16:43:15 +0000 (16:43 +0000)]
vulkan/util: generate a helper function to return pNext struct sizes

This will be used to copy chains of structures so that we can alterate
some of them.

v2: Drop vk_util.h include (Eric)
    Use VkBaseInStructure directly (Eric)

v3: Drop --platforms= param to generator script, instead produce a
    file with #ifdef based what platforms are compiled.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agopanfrost/midgard: Skip liveness analysis for instructions without dest
Tomeu Vizoso [Mon, 22 Apr 2019 15:06:24 +0000 (17:06 +0200)]
panfrost/midgard: Skip liveness analysis for instructions without dest

[Alyssa: Add comment explanation]

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2 years agopanfrost/midgard: Skip register allocation if there's no work to do
Tomeu Vizoso [Mon, 22 Apr 2019 15:03:26 +0000 (17:03 +0200)]
panfrost/midgard: Skip register allocation if there's no work to do

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2 years agogitlab-ci: add scons windows build using mingw
Eric Engestrom [Fri, 8 Mar 2019 12:47:23 +0000 (12:47 +0000)]
gitlab-ci: add scons windows build using mingw

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agoegl: hard-code destroy function instead of passing it around as a pointer
Eric Engestrom [Fri, 12 Apr 2019 16:47:59 +0000 (17:47 +0100)]
egl: hard-code destroy function instead of passing it around as a pointer

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2 years agonir/search: Add debugging code to dump the pattern matched
Connor Abbott [Mon, 18 Feb 2019 16:28:32 +0000 (17:28 +0100)]
nir/search: Add debugging code to dump the pattern matched

This was useful while debugging the previous commit.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2 years agonir/search: Add automaton-based pre-searching
Connor Abbott [Mon, 18 Feb 2019 13:20:34 +0000 (14:20 +0100)]
nir/search: Add automaton-based pre-searching

nir_opt_algebraic is currently one of the most expensive NIR passes,
because of the many different patterns we've added over the years. Even
though patterns are already sorted by opcode, there are still way too
many patterns for common opcodes like bcsel and fadd, which means that
many patterns are tried but only a few actually match. One way to fix
this is to add a pre-pass over the code that scans it using an automaton
constructed beforehand, similar to the automatons produced by lex and
yacc for parsing source code. This automaton has to walk the SSA graph
and recognize possible pattern matches.

It turns out that the theory to do this is quite mature already, having
been developed for instruction selection as well as other non-compiler
things. I followed the presentation in the dissertation cited in the
code, "Tree algorithms: Two Taxonomies and a Toolkit," trying to keep
the naming similar. To create the automaton, we have to perform
something like the classical NFA to DFA subset construction used by lex,
but it turns out that actually computing the transition table for all
possible states would be way too expensive, with the dissertation
reporting times of almost half an hour for an example of size similar to
nir_opt_algebraic. Instead, we adopt one of the "filter" approaches
explained in the dissertation, which trade much faster table generation
and table size for a few more table lookups per instruction at runtime.
I chose the filter which resulted the fastest table generation time,
with medium table size. Right now, the table generation takes around .5
seconds, despite being implemented in pure Python, which I think is good
enough. Based on the numbers in the dissertation, the other choice might
make table compilation time 25x slower to get 4x smaller table size, but
I don't think that's worth it. As of now, we get the following binary
size before and after this patch:

    text   data     bss      dec    hex filename
11979455 464720  730864 13175039 c908ff before i965_dri.so
   text    data     bss     dec            hex filename
12037835 616244  791792 13445871 cd2aef after i965_dri.so

There are a number of places where I've simplified the automaton by
getting rid of details in the LHS patterns rather than complicate things
to deal with them. For example, right now the automaton doesn't
distinguish between constants with different values. This means that it
isn't as precise as it could be, but the decrease in compile time is
still worth it -- these are the compilation time numbers for a shader-db
run with my (admittedly old) database on Intel skylake:

Difference at 95.0% confidence
-42.3485 +/- 1.375
-7.20383% +/- 0.229926%
(Student's t, pooled s = 1.69843)

We can always experiment with making it more precise later.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2 years agoradv: set WD_SWITCH_ON_EOP=1 when drawing primitives from a stream output buffer
Samuel Pitoiset [Thu, 2 May 2019 12:56:46 +0000 (14:56 +0200)]
radv: set WD_SWITCH_ON_EOP=1 when drawing primitives from a stream output buffer

According to RadeonSI, this seems to be required by the hardware
to avoid GPU hangs. I think I just forgot to set that bit when I
implemented VK_EXT_transform_feedback.

This fixes a GPU hang with Space Engineers and DXVK.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110291
Fixes: b4eb029062a ("radv: implement VK_EXT_transform_feedback")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2 years agoglsl: fix typo in #warning message
Brian Paul [Thu, 2 May 2019 12:32:56 +0000 (06:32 -0600)]
glsl: fix typo in #warning message

Trivial.  Spotted by Eric Engestrom.

2 years agosvga: add SVGA_NO_LOGGING env var (v2)
Brian Paul [Wed, 1 May 2019 21:49:44 +0000 (15:49 -0600)]
svga: add SVGA_NO_LOGGING env var (v2)

valgrind crashes when we try to initialize host logging.  This
env var can be used to disable logging.

v2: rebase onto "svga: move host logging to winsys".

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Neha Bhende <bhenden@vmware.com>
2 years agosvga: move host logging to winsys
Charmaine Lee [Wed, 1 May 2019 21:35:54 +0000 (15:35 -0600)]
svga: move host logging to winsys

This patch adds a host_log interface to svga_winsys and
moves the host logging code to the winsys layer.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
2 years agowsi/wayland: document lack of vkAcquireNextImageKHR timeout support
Eric Engestrom [Fri, 5 Apr 2019 15:18:18 +0000 (16:18 +0100)]
wsi/wayland: document lack of vkAcquireNextImageKHR timeout support

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agovulkan/wsi/wayland: Respect non-blocking AcquireNextImage
Daniel Stone [Tue, 30 Oct 2018 12:56:53 +0000 (12:56 +0000)]
vulkan/wsi/wayland: Respect non-blocking AcquireNextImage

If the client has requested that AcquireNextImage not block at all, with
a timeout of 0, then don't make any non-blocking calls.

This will still potentially block infinitely given a non-infinte
timeout, but the fix for that is much more involved.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Cc: mesa-stable@lists.freedesktop.org
Cc: Chad Versace <chadversary@chromium.org>
Cc: Jason Ekstrand <jason@jlekstrand.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108540
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Chad Versace <chadversary@chromium.org>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: reorder heading and notice
Erik Faye-Lund [Thu, 18 Apr 2019 11:52:15 +0000 (13:52 +0200)]
docs: reorder heading and notice

All other pages has the heading as ghe first thing in the article. Let's
clean this up for consistency.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: drop centered heading for faq
Erik Faye-Lund [Thu, 18 Apr 2019 11:45:53 +0000 (13:45 +0200)]
docs: drop centered heading for faq

The FAQ is the only article we have that uses a centered heading, which
makes it look odd compared to the other articles. Let's drop the
centering for consistency.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: turn faq-index into an ordered list
Erik Faye-Lund [Thu, 18 Apr 2019 11:44:10 +0000 (13:44 +0200)]
docs: turn faq-index into an ordered list

HTML already have a way of doing automatically ordered lists, so let's
use that instead of open-coding one.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: replace empty list with a none-paragraph
Erik Faye-Lund [Thu, 18 Apr 2019 14:41:08 +0000 (16:41 +0200)]
docs: replace empty list with a none-paragraph

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: fix closing of list-items
Erik Faye-Lund [Thu, 18 Apr 2019 14:39:25 +0000 (16:39 +0200)]
docs: fix closing of list-items

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: fixup list-item tags
Erik Faye-Lund [Thu, 18 Apr 2019 14:36:52 +0000 (16:36 +0200)]
docs: fixup list-item tags

The list items needs to contain everything part of the item, not just
the first paragraph.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: fix closing of paragraphs
Erik Faye-Lund [Thu, 18 Apr 2019 14:32:07 +0000 (16:32 +0200)]
docs: fix closing of paragraphs

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: add missing lists
Erik Faye-Lund [Thu, 18 Apr 2019 14:31:26 +0000 (16:31 +0200)]
docs: add missing lists

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: fixup bad paragraphing
Erik Faye-Lund [Thu, 18 Apr 2019 14:27:26 +0000 (16:27 +0200)]
docs: fixup bad paragraphing

This markup seems to assume paragraphs survive across block-elements,
which isn't the case. Let's rectify that.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: remove stray list-start
Erik Faye-Lund [Thu, 18 Apr 2019 14:27:10 +0000 (16:27 +0200)]
docs: remove stray list-start

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: don't pointlessly close and re-start definition lists
Erik Faye-Lund [Thu, 18 Apr 2019 14:25:39 +0000 (16:25 +0200)]
docs: don't pointlessly close and re-start definition lists

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: fix incorrectly closed paragraph
Erik Faye-Lund [Thu, 18 Apr 2019 14:16:06 +0000 (16:16 +0200)]
docs: fix incorrectly closed paragraph

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: drop paragraph around preformatted text
Erik Faye-Lund [Thu, 18 Apr 2019 14:14:40 +0000 (16:14 +0200)]
docs: drop paragraph around preformatted text

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: start paragraph before closing it
Erik Faye-Lund [Thu, 18 Apr 2019 14:13:44 +0000 (16:13 +0200)]
docs: start paragraph before closing it

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: close paragraphs before preformatted text
Erik Faye-Lund [Thu, 18 Apr 2019 14:12:08 +0000 (16:12 +0200)]
docs: close paragraphs before preformatted text

It's illegal to nest block-level elements such as <pre> inside <p> in
HTML. This means that when the paragraphs gets closed after a <pre>-tag,
we end up closing a non-existent tag, so the browser inserts a dummy
<p>-tag. This is entirely pointless, so let's just close these tags
before the <pre>-tag instead.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: remove stray paragraph-close
Erik Faye-Lund [Thu, 18 Apr 2019 14:05:54 +0000 (16:05 +0200)]
docs: remove stray paragraph-close

This isn't matching any paragraph-open tags, so let's get rid of it.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: close lists
Erik Faye-Lund [Thu, 18 Apr 2019 13:39:35 +0000 (15:39 +0200)]
docs: close lists

These lists never got closed. Let's fix that to avoid issues with bad
parsers.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: close paragraphs before lists
Erik Faye-Lund [Thu, 18 Apr 2019 13:38:01 +0000 (15:38 +0200)]
docs: close paragraphs before lists

paragraphs can't contain lists, and attempting to close them after
the list just cause an extra, empty paragraph to be created. We don't
want that, so let's close the paragraphs before the list intead.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: open list-item before closing it
Erik Faye-Lund [Thu, 18 Apr 2019 13:23:07 +0000 (15:23 +0200)]
docs: open list-item before closing it

A list-item must be openened before it can be closed. So let's replace
this closing tag with an opening tag.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: use dl/dd instead of blockquote for freedesktop link
Erik Faye-Lund [Thu, 18 Apr 2019 13:13:36 +0000 (15:13 +0200)]
docs: use dl/dd instead of blockquote for freedesktop link

The blockquote happens to match the indentation of the other lists for
most browsers, but this isn't a guarantee. Let's instead use a
definition-list, which is more strongly connected to a list, so it's
more likely to have the same indention.

This also makes sure that we don't have similar padding on the
right-hand side, in case we change the text-size.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: use h2 instead of b-tag for headings
Erik Faye-Lund [Thu, 18 Apr 2019 13:11:43 +0000 (15:11 +0200)]
docs: use h2 instead of b-tag for headings

<b>-tags aren't allowed in the root of <body>, so let's replace these
with <h2>-tags with some CSS to make them appear as bold.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: remove stray paragraph-close
Erik Faye-Lund [Thu, 18 Apr 2019 12:06:50 +0000 (14:06 +0200)]
docs: remove stray paragraph-close

This tag tries to close a non-existent paragraph. Let's get rid of it!

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: properly escape ampersand
Erik Faye-Lund [Thu, 18 Apr 2019 13:42:14 +0000 (15:42 +0200)]
docs: properly escape ampersand

Even in preformatted blocks, ampersands should be escaped. Let's correct
this, in case of strict parsers.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: properly escape '>'
Erik Faye-Lund [Thu, 18 Apr 2019 11:57:03 +0000 (13:57 +0200)]
docs: properly escape '>'

The '>'-symbol should usually be escaped to avoid confusing strict
parsers. While it's very unlikely to cause issues as-is, let's quite it
for good measure.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agoradv: fix set_output_usage_mask() with composite and 64-bit types
Rhys Perry [Fri, 26 Apr 2019 14:39:51 +0000 (15:39 +0100)]
radv: fix set_output_usage_mask() with composite and 64-bit types

It previously used var->type instead of deref_instr->type and didn't
handle 64-bit outputs.

This fixes lots of transform feedback CTS tests involving transform
feedback and geometry shaders (mostly
dEQP-VK.transform_feedback.fuzz.random_geometry.*)

v2: fix writemask widening when comp != 0
v3: fix 64-bit variables when comp != 0, again

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Cc: 19.0 19.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2 years agodocs: do not hard-code header-height
Erik Faye-Lund [Wed, 17 Apr 2019 12:52:41 +0000 (14:52 +0200)]
docs: do not hard-code header-height

It's generally nicer to do this in terms of em units, as that scales
better with text-sizes, if we ever decide to change them.

The result is slightly larger than before, but only by a couple of
pixels.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: simplify css-centering
Erik Faye-Lund [Wed, 17 Apr 2019 12:46:00 +0000 (14:46 +0200)]
docs: simplify css-centering

With "display: flex;" we can make this a bit more automatic, not
requiring a bunch of values to be of specific values to get the right
centering.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: use multiple background-images for header
Erik Faye-Lund [Wed, 17 Apr 2019 12:20:13 +0000 (14:20 +0200)]
docs: use multiple background-images for header

This is a bit tidier than to set a background on the h1-text, requiring
it to be full height and all.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: remove spurious newline
Erik Faye-Lund [Thu, 18 Apr 2019 11:08:24 +0000 (13:08 +0200)]
docs: remove spurious newline

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: avoid repeating the color
Erik Faye-Lund [Thu, 18 Apr 2019 11:01:15 +0000 (13:01 +0200)]
docs: avoid repeating the color

The color attribute is inherited in CSS, so there's no point in repeating
this.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: avoid repeating the font
Erik Faye-Lund [Thu, 18 Apr 2019 10:55:07 +0000 (12:55 +0200)]
docs: avoid repeating the font

The font attribute is inherited in CSS, so there's no point in repeating
this.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: add missing semicolon
Erik Faye-Lund [Thu, 18 Apr 2019 11:09:25 +0000 (13:09 +0200)]
docs: add missing semicolon

While it's legal to omit the last semicolon in a CSS block, it's
generally not considered good style, as it makes it harder to add new
lines.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: remove long commented out css
Erik Faye-Lund [Thu, 18 Apr 2019 08:12:42 +0000 (10:12 +0200)]
docs: remove long commented out css

These attributes has been commented out since 2005; I don't think
there's a big chance of them making a return as-is.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: remove non-existent css attribute
Erik Faye-Lund [Thu, 18 Apr 2019 08:10:36 +0000 (10:10 +0200)]
docs: remove non-existent css attribute

There's no CSS-attribute named "link", so let's remove it.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agodocs: normaize css-indent style
Erik Faye-Lund [Thu, 18 Apr 2019 08:18:36 +0000 (10:18 +0200)]
docs: normaize css-indent style

Tabs has been around as the indention style of this file since it was
created. Some newer CSS has added double-spaces, but let's keep it
consistent.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
2 years agowinsys/svga: Don't abort on EBUSY errors from execbuffer
Thomas Hellstrom [Thu, 4 Apr 2019 10:20:54 +0000 (12:20 +0200)]
winsys/svga: Don't abort on EBUSY errors from execbuffer

This error code typically indicated that a buffer object that was referenced
by the command stream was being used for CPU access by another client.
The correct action here is to retry after a while. Use usleep() until we
have proper kernel support for this wait.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
2 years agowinsys/svga: Update the drm interface file
Thomas Hellstrom [Fri, 29 Mar 2019 07:12:12 +0000 (08:12 +0100)]
winsys/svga: Update the drm interface file

The file vmwgfx_drm.h was a bit outdated. Update to a recent version,
including defines supporting coherent memory.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
2 years agosvga: Avoid bouncing buffer data in malloced buffers
Thomas Hellstrom [Tue, 2 Apr 2019 10:36:34 +0000 (12:36 +0200)]
svga: Avoid bouncing buffer data in malloced buffers

Some constant- and texture upload buffer data may bounce in malloced
buffers before being transferred to hardware buffers. In the case of
texture upload buffers this seems to be an oversight. In the case of
constant buffers, code comments indicate that we want to avoid mapping
hardware buffers for reading when copying out of buffers that need
modification before being passed to hardware. In this case we avoid
data bouncing for upload manager buffers but make sure buffers that
we read out from stay in malloced memory.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
2 years agowinsys/svga: Enable the transfer_from_buffer GPU command for vgpu10
Thomas Hellstrom [Tue, 2 Apr 2019 10:44:11 +0000 (12:44 +0200)]
winsys/svga: Enable the transfer_from_buffer GPU command for vgpu10

We didn't have the path using this command enabled as
typically we take an alternate path using DMA uploads.
Emable it so that we can exercise that code-path by turning off
the DMA path.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
2 years agowinsys/svga: Add an environment variable to force host-backed operation
Thomas Hellstrom [Tue, 26 Mar 2019 20:36:04 +0000 (21:36 +0100)]
winsys/svga: Add an environment variable to force host-backed operation

The vmwgfx kernel module has a compatibility mode for user-space that is
not guest-backed resource aware. Add an environment variable to facilitate
testing of this mode on guest-backed aware kernels: if the environment
variable SVGA_FORCE_HOST_BACKED is defined, the driver will use host-backed
operation.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Deepak Rawat <drawat@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
2 years agoac: tidy up ac_build_llvm8_tbuffer_{load,store}
Samuel Pitoiset [Fri, 26 Apr 2019 10:49:15 +0000 (12:49 +0200)]
ac: tidy up ac_build_llvm8_tbuffer_{load,store}

For consistency with ac_build_llvm8_buffer_{load,store}_common
helpers and that will help a bit for removing the vec3 restriction.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2 years agoradv: implement a workaround for VK_EXT_conditional_rendering
Samuel Pitoiset [Tue, 30 Apr 2019 15:08:19 +0000 (17:08 +0200)]
radv: implement a workaround for VK_EXT_conditional_rendering

Per the Vulkan spec 1.1.107, the predicate is a 32-bit value. Though
the AMD hardware treats it as a 64-bit value which means it might
fail to discard.

I don't know why this extension has been drafted like that but this
definitely not fit with AMD. The hardware doesn't seem to support
a 32-bit value for the predicate, so we need to implement a workaround.

This fixes an issue when DXVK enables conditional rendering with RADV,
this also fixes the Sasha conditionalrender demo.

Fixes: e45ba51ea45 ("radv: add support for VK_EXT_conditional_rendering")
Reported-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2 years agoradv: fix color conversions for normalized uint/sint formats
Samuel Pitoiset [Tue, 5 Mar 2019 17:17:13 +0000 (18:17 +0100)]
radv: fix color conversions for normalized uint/sint formats

The hardware actually rounds before conversion. This now matches
what values are used when performing fast clears vs slow clears.

This fixes a rendering issue with Far Cry 3&4. This also fixes
a bunch of CTS tests that use a 8-bit UNORM format (only when
the 512*512 image size hint is manually disabled).

Cc: "19.0" "19.1" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2 years agoradv: do not need to force emit the TCS regs on Vega20
Samuel Pitoiset [Wed, 1 May 2019 14:10:44 +0000 (16:10 +0200)]
radv: do not need to force emit the TCS regs on Vega20

This chip doesn't need the fixup. This fixes a bunch of
dEQP-VK.tessellation tests and avoid random GPU hangs.

Cc: "19.0" "19.1" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
2 years agoutil/bitset: Return an actual bool from test macros
Jason Ekstrand [Wed, 1 May 2019 10:31:11 +0000 (05:31 -0500)]
util/bitset: Return an actual bool from test macros

I want to be able to do BITSET_TEST() != BITSET_TEST() and this isn't
currently possible because BITSET_TEST() returns a random bit.  Compare
to zero to get an actual Boolean.

Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2 years agoglsl: work around MinGW 7.x compiler bug
Brian Paul [Wed, 1 May 2019 20:22:57 +0000 (14:22 -0600)]
glsl: work around MinGW 7.x compiler bug

I'm not sure what triggered this, but building with
scons platform=windows toolchain=crossmingw machine=x86 build=profile
with MinGW g++ 7.3 or 7.4 causes an internal compiler error.

We can work around it by forcing -O1 optimization.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
2 years agollvmpipe: init some vars to NULL to silence MinGW compiler warnings
Brian Paul [Wed, 1 May 2019 16:47:15 +0000 (10:47 -0600)]
llvmpipe: init some vars to NULL to silence MinGW compiler warnings

Reviewed-by: Neha Bhende <bhenden@vmware.com>
2 years agoradeonsi: set sampler state and view functions for compute-only contexts
Marek Olšák [Fri, 12 Apr 2019 20:03:02 +0000 (16:03 -0400)]
radeonsi: set sampler state and view functions for compute-only contexts

2 years agoradeonsi: use new atomic LLVM helpers
Marek Olšák [Fri, 26 Apr 2019 20:16:58 +0000 (16:16 -0400)]
radeonsi: use new atomic LLVM helpers

This depends on "ac,ac/nir: use a better sync scope for shared atomics"

2 years agost/mesa: don't flush the front buffer if it's a pbuffer
Marek Olšák [Sat, 27 Apr 2019 02:51:33 +0000 (22:51 -0400)]
st/mesa: don't flush the front buffer if it's a pbuffer

This is the best guess I can make here.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2 years agomesa: fix pbuffers because internally they are front buffers
Marek Olšák [Sat, 27 Apr 2019 00:53:52 +0000 (20:53 -0400)]
mesa: fix pbuffers because internally they are front buffers

This fixes the egl_ext_device_base piglit test, which uses EGL pbuffers.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2 years agomesa: rework error handling in glDrawBuffers
Marek Olšák [Sat, 27 Apr 2019 02:06:20 +0000 (22:06 -0400)]
mesa: rework error handling in glDrawBuffers

It's needed by the next pbuffer fix, which changes the behavior of
draw_buffer_enum_to_bitmask, so it can't be used to help with error
checking.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2 years agoradv: Restrict YUVY formats to 1 layer.
Bas Nieuwenhuizen [Mon, 29 Apr 2019 20:35:34 +0000 (22:35 +0200)]
radv: Restrict YUVY formats to 1 layer.

Fixes: 8bb3cec7c9b "radv: Expose VK_EXT_ycbcr_image_arrays."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2 years agoradv: Set is_array in lowered ycbcr tex instructions.
Bas Nieuwenhuizen [Mon, 29 Apr 2019 20:26:36 +0000 (22:26 +0200)]
radv: Set is_array in lowered ycbcr tex instructions.

Fixes array tests.

Fixes: 91702374d5d "radv: Add ycbcr lowering pass."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2 years agoradv: Fix hang width YCBCR array textures.
Bas Nieuwenhuizen [Mon, 29 Apr 2019 19:34:28 +0000 (21:34 +0200)]
radv: Fix hang width YCBCR array textures.

Forgot to apply the width/height divisor for CB writes resulting in
the CB using larger than expected slice sizes.

Fixes: 42d159f2766 "radv: Add multiple planes to images."
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110530
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110526
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2 years agolima/gpir: add limit of max 512 instructions
Erico Nunes [Mon, 29 Apr 2019 22:10:02 +0000 (00:10 +0200)]
lima/gpir: add limit of max 512 instructions

It has been noted that the lima GP has a limit of 512 instructions,
after which the shaders don't work and fail silently.
This commit adds a check to make the shader compilation abort when the
shader exceeds this limit, so that we get a clear reason for why the
program will not work.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
2 years agopanfrost: Fix blend shader upload
Alyssa Rosenzweig [Wed, 1 May 2019 03:21:06 +0000 (03:21 +0000)]
panfrost: Fix blend shader upload

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2 years agopanfrost/decode: Hit MRT blend shader enable bits
Alyssa Rosenzweig [Tue, 30 Apr 2019 02:15:09 +0000 (02:15 +0000)]
panfrost/decode: Hit MRT blend shader enable bits

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2 years agopanfrost: Remove shader dump
Alyssa Rosenzweig [Tue, 30 Apr 2019 01:54:27 +0000 (01:54 +0000)]
panfrost: Remove shader dump

Redundant via the midgard shader dump.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2 years agovirgl: Re-use and extend queue transfers for intersecting buffer subdatas.
David Riley [Wed, 24 Apr 2019 23:12:48 +0000 (16:12 -0700)]
virgl: Re-use and extend queue transfers for intersecting buffer subdatas.

Small buffer subdatas which are essentially doing a memcpy were getting
bogged down by all the overhead of creating new transfers.

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
2 years agovirgl: Allow transfer queue entries to be found and extended.
David Riley [Wed, 24 Apr 2019 23:11:37 +0000 (16:11 -0700)]
virgl: Allow transfer queue entries to be found and extended.

Intersecting transfer queue entries allow for the possibility of
extending an existing transfer instead of creating a new one (and all
the associated mappign/unmapping).

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
2 years agovirgl: Store mapped hw resource with transfer object.
David Riley [Wed, 1 May 2019 00:33:59 +0000 (17:33 -0700)]
virgl: Store mapped hw resource with transfer object.

Signed-off-by: David Riley <davidriley@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
2 years agoiris: Fix imageBuffer and PBO download.
Kenneth Graunke [Wed, 1 May 2019 18:16:13 +0000 (11:16 -0700)]
iris: Fix imageBuffer and PBO download.

Recently we added checks to try and deny multisampled shader images.
Unfortunately, this messed up imageBuffers, which have sample_count = 0,
which are also used in PBO download, causing us hit CPU map fallbacks.

Fixes: b15f5cfd20c iris: Do not advertise multisampled image load/store.
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
2 years agor600: reset tex array override even when no view bound
Dave Airlie [Wed, 1 May 2019 04:30:10 +0000 (14:30 +1000)]
r600: reset tex array override even when no view bound

If no view is bound we still should reset the override to 0
and array mode.

This should fix misrendering in firefox WebRender since
the pbo sampler was removed.

Fixes: 1250383e36 (st/mesa: remove sampler associated with buffer texture in pbo logic)
2 years agonir: Saturating integer arithmetic is not associative
Ian Romanick [Tue, 30 Apr 2019 15:00:32 +0000 (08:00 -0700)]
nir: Saturating integer arithmetic is not associative

In 8-bits,

    iadd_sat(iadd_sat(0x7f, 0x7f), -1) =
    iadd_sat(0x7f, -1) =
    0x7e

but,

    iadd_sat(0x7f, iadd_sat(0x7f, -1)) =
    iadd_sat(0x7f, 0x7e) =
    0x7f

Fixes: 272e927d0e9 ("nir/spirv: initial handling of OpenCL.std extension opcodes")
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2 years agoutil: move #include out of #if linux
Eric Engestrom [Wed, 1 May 2019 15:25:44 +0000 (16:25 +0100)]
util: move #include out of #if linux

This #include is needed for `NULL`, which is used on all OSes, not just Linux.

Reported-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Fixes: 316964709e21286c2af5 "util: add os_read_file() helper"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
2 years agoswr/rast: Add general SWTag statistics
Alok Hota [Mon, 17 Sep 2018 19:50:47 +0000 (14:50 -0500)]
swr/rast: Add general SWTag statistics

Update Archrast parser to use stats, used with an internal tool

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
2 years agoswr/rast: Add string handling to AR event framework
Alok Hota [Fri, 7 Sep 2018 20:17:53 +0000 (15:17 -0500)]
swr/rast: Add string handling to AR event framework

For use by an internal tool

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
2 years agoswr/rast: Add initial SWTag proto definitions
Alok Hota [Tue, 4 Sep 2018 18:41:39 +0000 (13:41 -0500)]
swr/rast: Add initial SWTag proto definitions

Update gen_archrast.py to properly generate event IDs

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
2 years agoswr/rast: Cleanup and generalize gen_archrast
Alok Hota [Fri, 31 Aug 2018 17:13:56 +0000 (12:13 -0500)]
swr/rast: Cleanup and generalize gen_archrast

- Update meson.build
  - Includes current_build_dir() fix
    meson/swr: replace hard-coded path with current_build_dir()

Fixes: 93cd9905c8fbb98985ae "swr/rast: Cleanup and generalize gen_archrast"
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Alok Hota <alok.hota@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
  - Clean up meson.build (remove foreach loop, replace with single call)
- Update SConscript
  - use `$SOURCES` to call `CodeGenerate` with multiple source files

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
2 years agogitlab-ci: build vulkan drivers in clang build
Eric Engestrom [Wed, 1 May 2019 11:09:26 +0000 (12:09 +0100)]
gitlab-ci: build vulkan drivers in clang build

Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2 years agosoftpipe: setup pixel_offset for all primitive types
Erik Faye-Lund [Tue, 30 Apr 2019 11:41:39 +0000 (13:41 +0200)]
softpipe: setup pixel_offset for all primitive types

If we don't update this for all primitive-types, we end up rendering
slightly offset points and lines up until the point where the first
triangle gets drawn. This is obviously not correct, and violates
OpenGL's repeatability rule.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Fixes: ca9c413647b ("softpipe: Respect gl_rasterization_rules in
       primitive setup.")
Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
2 years agonir: improve convert_yuv_to_rgb
Jonathan Marek [Fri, 30 Nov 2018 02:43:12 +0000 (21:43 -0500)]
nir: improve convert_yuv_to_rgb

Use a different arrangement of constants to allow more ffma.

A vec4 backend will now use 3 fma for yuv_to_rgb. On freedreno/ir3, it is
down from 10 to 7 alu (4 fma, 3 mul, 3 add to 7 fma). Other backends
shouldn't be hurt.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Ian Romanick <ian.d.romanick@intel.com>
2 years agodoc: Update feature matrix
Gert Wollny [Wed, 24 Apr 2019 08:31:45 +0000 (10:31 +0200)]
doc: Update feature matrix

Since softpipe doesn't truely support multisample, I've not added softpipe
to the "Enhanced per-sample shading" even though with the advertised GLSL
level ARB_gpu_shader5 is advertised.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: Increase the GLSL feature level
Gert Wollny [Wed, 24 Apr 2019 08:29:13 +0000 (10:29 +0200)]
softpipe: Increase the GLSL feature level

This will enable calls to the interpolateAt* functions, but also a bunch
of other features.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: Add support for TGSI_OPCODE_INTERP_CENTROID
Gert Wollny [Wed, 24 Apr 2019 07:58:32 +0000 (09:58 +0200)]
softpipe: Add support for TGSI_OPCODE_INTERP_CENTROID

Like with interpolatAtSample this is also not really implementing the
according sampling and will only work correctly for pixels that are fully
covered, but since softpipe only supports one sample this is good enough
for now.

v2: Correct spelling (Roland Scheidegger)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: Add support for TGSI_OPCODE_INTERP_OFFSET
Gert Wollny [Wed, 24 Apr 2019 07:53:56 +0000 (09:53 +0200)]
softpipe: Add support for TGSI_OPCODE_INTERP_OFFSET

Since for this opcode the offsets are given manually the function
should actually also work for non-zero offsets, but the related piglits
only ever test with offset 0. Accordingly the patch satisfies
"fs-interpolateatoffset-*".

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: Add (fake) support for TGSI_OPCODE_INTERP_SAMPLE
Gert Wollny [Wed, 24 Apr 2019 07:50:01 +0000 (09:50 +0200)]
softpipe: Add (fake) support for TGSI_OPCODE_INTERP_SAMPLE

Softpipe doesn't support more than one sample, so this function
implements the interpolation at sample 0 and adds a stub to make it
possible to interpolate at other samples.

As it is this makes the piglits "fs-interpolateatsample-*" pass, but
they only ever test sample 0 anyway.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: Add an per-input array for interpolator correctors to machine
Gert Wollny [Wed, 24 Apr 2019 07:35:31 +0000 (09:35 +0200)]
softpipe: Add an per-input array for interpolator correctors to machine

This adds entry points for correcting the interpolation values if the
interpolation is done by using one of the interpolateAt* functions.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: Factor out evaluation of the source indices
Gert Wollny [Wed, 24 Apr 2019 07:28:46 +0000 (09:28 +0200)]
softpipe: Factor out evaluation of the source indices

We will need these for per sample interpolation as well

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: evaluate cube the faces on a per sample bases
Gert Wollny [Fri, 19 Apr 2019 07:26:49 +0000 (09:26 +0200)]
softpipe: evaluate cube the faces on a per sample bases

Now that the LOD is evaluated up front the cube faces can also be
evauate on a per sample basis instead of using the quad.

This fixes a large number of deqp gles 3 and 31 cube texture tests.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
2 years agosoftpipe: keep input lod for explicite derivatives
Gert Wollny [Fri, 19 Apr 2019 08:41:51 +0000 (10:41 +0200)]
softpipe: keep input lod for explicite derivatives

This only affects anisotropic interpolation.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>