mesa.git
9 years agoi965: Add brw_barrier to emit a Gateway Barrier SEND
Jordan Justen [Wed, 5 Nov 2014 02:11:37 +0000 (18:11 -0800)]
i965: Add brw_barrier to emit a Gateway Barrier SEND

This will be used to implement the Gateway Barrier SEND needed to implement
the barrier function.

v2:
 * notify => gateway_notify (Ken)
 * combine short lines of brw_barrier proto/decl (mattst88)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
9 years agoi965: Add brw_WAIT to emit wait instruction
Jordan Justen [Wed, 5 Nov 2014 02:05:04 +0000 (18:05 -0800)]
i965: Add brw_WAIT to emit wait instruction

This will be used to implement the barrier function.

v2:
 * Rename to brw_WAIT (mattst88)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965: Add notification register
Jordan Justen [Wed, 5 Nov 2014 01:52:42 +0000 (17:52 -0800)]
i965: Add notification register

This will be used by the wait instruction when implementing the barrier()
function.

v2:
 * Changes suggested by mattst88

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965: Disassemble Gateway SEND messages
Jordan Justen [Wed, 5 Nov 2014 01:51:19 +0000 (17:51 -0800)]
i965: Disassemble Gateway SEND messages

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
9 years agoi965/inst: Add gateway_notify and gateway_subfuncid fields
Jordan Justen [Wed, 5 Nov 2014 02:07:52 +0000 (18:07 -0800)]
i965/inst: Add gateway_notify and gateway_subfuncid fields

These fields will be used when emitting a send for the barrier function.

Reference: IVB PRM Volume 4, Part 2, Section 1.1.1 Message Descriptor

v2:
 * notify => gateway_notify (Ken)
 * define bits for gen4-gen6 (bwidawsk, Ken)

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Add GATEWAY_SFID definitions
Jordan Justen [Wed, 5 Nov 2014 01:48:44 +0000 (17:48 -0800)]
i965: Add GATEWAY_SFID definitions

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
9 years agonir: Add barrier intrinsic function
Jordan Justen [Fri, 13 Mar 2015 19:03:15 +0000 (12:03 -0700)]
nir: Add barrier intrinsic function

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
9 years agoglsl: Add builtin barrier() function
Chris Forbes [Sun, 7 Sep 2014 07:29:50 +0000 (19:29 +1200)]
glsl: Add builtin barrier() function

[jordan.l.justen@intel.com: Add CS support]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoglsl: Add ir node for barrier
Chris Forbes [Sun, 7 Sep 2014 07:24:15 +0000 (19:24 +1200)]
glsl: Add ir node for barrier

v2:
 * Changes suggested by mattst88

[jordan.l.justen@intel.com: Add nir support]
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
9 years agoi965/cs: Use exec all for CS terminate
Jordan Justen [Thu, 11 Jun 2015 16:44:54 +0000 (09:44 -0700)]
i965/cs: Use exec all for CS terminate

This prevents an assertion from being hit with SIMD16:

Assertion `inst->exec_size == dispatch_width() || force_writemask_all' failed.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
9 years agoi965/fs: Fix unused variable warning
Chad Versace [Wed, 10 Jun 2015 16:50:47 +0000 (09:50 -0700)]
i965/fs: Fix unused variable warning

Annotate offset_components with attribute 'unused'.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agovc4: automake: enable subdir-objects
Emil Velikov [Wed, 10 Jun 2015 22:50:21 +0000 (23:50 +0100)]
vc4: automake: enable subdir-objects

Silence the warnings about the future incompatibility with automake 2.0

Cc: Eric Anholt <eric@anholt.net>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agomesa: build xmlconfig to a separate static library
Erik Faye-Lund [Wed, 10 Jun 2015 22:35:04 +0000 (23:35 +0100)]
mesa: build xmlconfig to a separate static library

As we use the file from both the dri modules and loader, we end up with
multiple definition of the symbols provided in our gallium dri  modules.
Additionally we compile the file twice.

Resolve both issues, effectively enabling the build on toolchains which
don't support -Wl,--allow-multiple-definition.

v2: [Emil Velikov]
 - Fix the Scons/Android build.
 - Resolve libgbm build issues (bring back the missing -lm)

Cc: Julien Isorce <j.isorce@samsung.com>
Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90310
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90905
Acked-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agotargets/nine: link against libnir/libglsl_util
Emil Velikov [Wed, 15 Apr 2015 13:34:00 +0000 (14:34 +0100)]
targets/nine: link against libnir/libglsl_util

Based on commit 101142c4010(xa: support for drivers which use NIR)

Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90466
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agopipe-loader: add libnir and libglsl_util to the link
Emil Velikov [Wed, 15 Apr 2015 11:46:30 +0000 (12:46 +0100)]
pipe-loader: add libnir and libglsl_util to the link

Based on commit 101142c4010(xa: support for drivers which use NIR)

Cc: Rob Clark <robclark@freedesktop.org>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90466
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agomesa; add a dummy _mesa_error_no_memory() symbol to libglsl_util
Emil Velikov [Wed, 15 Apr 2015 12:40:55 +0000 (13:40 +0100)]
mesa; add a dummy _mesa_error_no_memory() symbol  to libglsl_util

Rather than forcing everyone to provide their own definition of the symbol
provide a common (dummy) one.

This helps us resolve the build of the standalone pipe-drivers (amongst
others), which are missing the symbol.

Cc: Rob Clark <robclark@freedesktop.org>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agogallium: use $(top_builddir) when referencing static archives
Emil Velikov [Wed, 15 Apr 2015 10:42:55 +0000 (11:42 +0100)]
gallium: use $(top_builddir) when referencing static archives

Just like every other place in gallium.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agofreedreno: use CXX linker rather than explicit link against libstdc++
Emil Velikov [Wed, 15 Apr 2015 10:28:38 +0000 (11:28 +0100)]
freedreno: use CXX linker rather than explicit link against libstdc++

Cc: Rob Clark <robclark@freedesktop.org>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: coding style fixes
Emil Velikov [Thu, 11 Jun 2015 12:08:00 +0000 (13:08 +0100)]
egl/haiku: coding style fixes

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: plug some obvious memory leaks
Emil Velikov [Thu, 11 Jun 2015 12:07:08 +0000 (13:07 +0100)]
egl/haiku: plug some obvious memory leaks

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: minor surface management cleanups
Emil Velikov [Thu, 11 Jun 2015 11:33:55 +0000 (12:33 +0100)]
egl/haiku: minor surface management cleanups

Drop the stub/unused function haiku_create_surface() and add some basic implementation for destroy_surface()

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: kill off haiku_log()
Emil Velikov [Thu, 11 Jun 2015 11:22:28 +0000 (12:22 +0100)]
egl/haiku: kill off haiku_log()

It's an incomplete copy of the default _eglLog() implementation. Just
use the default logger.

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: we don't use src/loader, drop all the references to it
Emil Velikov [Thu, 11 Jun 2015 11:20:34 +0000 (12:20 +0100)]
egl/haiku: we don't use src/loader, drop all the references to it

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: remove unused variables in struct haiku_egl_driver
Emil Velikov [Thu, 11 Jun 2015 11:18:35 +0000 (12:18 +0100)]
egl/haiku: remove unused variables in struct haiku_egl_driver

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: handle memory allocation failure
Emil Velikov [Thu, 11 Jun 2015 11:17:23 +0000 (12:17 +0100)]
egl/haiku: handle memory allocation failure

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: use CALL/TRACE/ERROR over _eglLog() for haiku specifics
Emil Velikov [Thu, 11 Jun 2015 11:02:45 +0000 (12:02 +0100)]
egl/haiku: use CALL/TRACE/ERROR over _eglLog() for haiku specifics

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: remove commented out code
Emil Velikov [Thu, 11 Jun 2015 10:31:40 +0000 (11:31 +0100)]
egl/haiku: remove commented out code

It serves little to no purpose. As the driver gets updated, one can
look at the existing implementation (dri2) for reference rather than
letting the commented functions bitrot.

Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agoegl/haiku: use correct version variable
Emil Velikov [Thu, 11 Jun 2015 10:24:17 +0000 (11:24 +0100)]
egl/haiku: use correct version variable

Earlier commit folded the two separate variables into one, but forgot to
update the haiku driver.

Fixes: 0e4b564ef28(egl: combine VersionMajor and VersionMinor into one
variable)
Cc: Marek Olšák <marek.olsak@amd.com>>
Cc: Alexander von Gluck IV <kallisti5@unixzen.com>
Acked-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agotrace: Add missing p_compiler.h include.
Jose Fonseca [Fri, 12 Jun 2015 11:13:41 +0000 (12:13 +0100)]
trace: Add missing p_compiler.h include.

For boolean.

Trivial.

9 years agoi965/fs: Remove one more fixed brw_null_reg() from the visitor.
Francisco Jerez [Wed, 10 Jun 2015 11:40:33 +0000 (14:40 +0300)]
i965/fs: Remove one more fixed brw_null_reg() from the visitor.

Instead use fs_builder::null_reg_f() which has the correct register
width.  Avoids the assertion failure in fs_builder::emit() hit by the
"ES3-CTS.shaders.loops.for_dynamic_iterations.unconditional_break_fragment"
GLES3 conformance test introduced by 4af4cfba9ee1014baa4a777660fc9d53d57e4c82.

Reported-and-reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoRevert "i965: Advertise a line width of 40.0 on Cherryview and Skylake."
Kenneth Graunke [Tue, 9 Jun 2015 16:20:58 +0000 (09:20 -0700)]
Revert "i965: Advertise a line width of 40.0 on Cherryview and Skylake."

This reverts commit f3b709c0ac073cd0ec90a3a0d91d1ee94668e043.

The "dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.
interpolation.lines_wide" test appears to be broken on Cherryview when
we expose line widths greater than 12.0.  I'm not sure why.

For now, just go back to the limits we used on older platforms.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90902
Acked-by: Matt Turner <mattst88@gmail.com>
9 years agoi965: Re-index SSA definitions before printing NIR code.
Kenneth Graunke [Wed, 10 Jun 2015 08:46:13 +0000 (01:46 -0700)]
i965: Re-index SSA definitions before printing NIR code.

This makes the SSA definitions use sequential numbers (0, 1, 2, ...)
instead of seemingly random ones.  There's not much point normally,
but it makes debug output much easier to read.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
9 years agogallium: remove explicit values from PIPE_CAP_ enums
Brian Paul [Wed, 10 Jun 2015 16:59:37 +0000 (10:59 -0600)]
gallium: remove explicit values from PIPE_CAP_ enums

The other PIPE_CAPF_ and PIPE_SHADER_CAP_ enums don't have explicit values.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
9 years agomesa/main: Don't use ONCE_FLAG_INIT as a r-value.
Jose Fonseca [Thu, 11 Jun 2015 12:32:21 +0000 (13:32 +0100)]
mesa/main: Don't use ONCE_FLAG_INIT as a r-value.

It should only be used as an initializer expression.

Trivial, and fixes Windows builds.

Nevertheless, overwriting an once_flag like this seems dangerous and
should be revised.

9 years agoi965/gen8: Fix antialiased line rendering with width < 1.5
Iago Toral Quiroga [Thu, 11 Jun 2015 06:49:46 +0000 (08:49 +0200)]
i965/gen8: Fix antialiased line rendering with width < 1.5

The same fix Marius implemented for gen6 (commit a9b04d8a) and
gen7 (commit 24ecf37a).

Also, we need the same code to handle special cases of line width
in gen6, gen7 and now gen8, so put that in the helper function
we use to compute the line width.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoglsl: fix constructing a vector from a matrix
Martin Peres [Tue, 26 May 2015 12:32:21 +0000 (15:32 +0300)]
glsl: fix constructing a vector from a matrix

Without this patch, the following constructs (not an extensive list)
would crash mesa:

- mat2 foo = mat2(1); vec4 bar = vec4(foo);
- mat3 foo = mat3(1); vec4 bar = vec4(foo);
- mat3 foo = mat3(1); ivec4 bar = ivec4(foo);

The first case is explicitely allowed by the GLSL spec, as seen on
page 101 of the GLSL 4.40 spec:

"vec4(mat2) // the vec4 is column 0 followed by column 1"

The other cases are implicitely allowed also.

The actual changes are quite minimal. We first split each column of
the matrix to a list of vectors and then use them to initialize the
vector. An additional check to make sure that we are not trying to
copy 0 elements of a vector fix the (i)vec4(mat3) case as the last
vector (3rd column) is not needed at all.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
9 years agomesa/es3.1: enable DRAW_INDIRECT_BUFFER_BINDING for gles3.1
Tapani Pälli [Wed, 6 May 2015 10:43:54 +0000 (13:43 +0300)]
mesa/es3.1: enable DRAW_INDIRECT_BUFFER_BINDING for gles3.1

(increases ES31-CTS.draw_indirect.basic.* passing tests)

v2: only expose DRAW_INDIRECT_BUFFER_BINDING for GL core + ES3.1

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agomesa/main: avoid null access in format_array_table_init()
Juha-Pekka Heikkila [Fri, 20 Mar 2015 13:40:26 +0000 (15:40 +0200)]
mesa/main: avoid null access in format_array_table_init()

If _mesa_hash_table_create failed we'd get null pointer. Report
error and go away.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
9 years agomesa/main: Remove _mesa_HashClone()
Juha-Pekka Heikkila [Fri, 20 Mar 2015 13:13:14 +0000 (15:13 +0200)]
mesa/main: Remove _mesa_HashClone()

I didn't find this being used anywhere.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
9 years agoi965: do_blit_drawpixels: decode array formats
Alexander Monakov [Tue, 9 Jun 2015 17:58:22 +0000 (20:58 +0300)]
i965: do_blit_drawpixels: decode array formats

Correct a regression introduced by commit 922c0c9fd526 by converting "array
format", if received from _mesa_format_from_format_and_type, to mesa_format.

References: https://bugs.freedesktop.org/show_bug.cgi?id=90839
Signed-off-by: Alexander Monakov <amonakov@gmail.com>
Tested-by: AnAkkk <anakin.cs@gmail.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: mesa-stable@lists.freedesktop.org
9 years agoi965: do not round line width when multisampling or antialiaing are enabled
Iago Toral Quiroga [Wed, 10 Jun 2015 07:07:32 +0000 (09:07 +0200)]
i965: do not round line width when multisampling or antialiaing are enabled

In commit fe74fee8fa721a we rounded the line width to the nearest integer to
match the GLES3 spec requirements stated in section 13.4.2.1, but that seems
to break a dEQP test that renders wide lines in some multisampling scenarios.

Ian noted that the Open 4.4 spec has the following similar text:

    "The actual width of non-antialiased lines is determined by rounding the
    supplied width to the nearest integer, then clamping it to the
    implementation-dependent maximum non-antialiased line width."

and suggested that when ES removed antialiased lines, they removed
"non-antialised" from that paragraph but probably should not have.

Going by that note, this patch restricts the quantization implemented in
fe74fee8fa721a only to regular aliased lines. This seems to keep the
tests fixed with that commit passing while fixing the broken test.

v2:
  - Drop one of the clamps (Ken, Marius)
  - Add a rule to prevent advertising line widths that when rounded go beyond
    the limits allowed by the hardware (Ken)
  - Update comments in the code accordingly (Ian)
  - Put the code in a utility function (Ian)

Fixes:
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90749

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: "10.6" <mesa-stable@lists.freedesktop.org>
9 years agoi965: Momentarily pretend to support ARB_texture_stencil8 for blits.
Kenneth Graunke [Tue, 9 Jun 2015 21:33:47 +0000 (14:33 -0700)]
i965: Momentarily pretend to support ARB_texture_stencil8 for blits.

Broadwell's stencil blitting code attempts to bind a renderbuffer as a
texture, using dd->BindRenderbufferTexImage().

This calls _mesa_init_teximage_fields(), which then attempts to set
img->_BaseFormat = _mesa_base_tex_format(ctx, internalFormat), which
assert fails if internalFormat is GL_STENCIL_INDEX8 but
ARB_texture_stencil8 is unsupported.

To work around this, just pretend to support the extension momentarily,
during the blit.  Meta has already munged a variety of other things in
the context (including the API!), so it's not that much worse than what
we're already doing.

Fixes regressions since commit f7aad9da20b13c98f77d6a690b327716f39c0a47
(mesa/teximage: use correct extension for accept stencil texture.).

v2: Add an XXX comment explaining the situation (requested by Jason
    Ekstrand and Martin Peres), and an assert that we don't support
    the extension so we remember to remove this hack (requested by
    Neil Roberts).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agollvmpipe: simplify lp_resource_copy()
Brian Paul [Wed, 10 Jun 2015 13:28:40 +0000 (07:28 -0600)]
llvmpipe: simplify lp_resource_copy()

Just implement it in terms of util_resource_copy_region().  Both the
original code and util_resource_copy_region() boil down to mapping,
calling util_copy_box() and unmapping.

No piglit regressions.  This will also help to implement GL_ARB_copy_image.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
9 years agomesa: add GL_RED, GL_RG support for floating point textures
Tapani Pälli [Tue, 9 Jun 2015 09:26:48 +0000 (12:26 +0300)]
mesa: add GL_RED, GL_RG support for floating point textures

Mesa supports EXT_texture_rg and OES_texture_float. This patch adds
support for using unsized enums GL_RED and GL_RG for floating point
targets and writes proper checks for internalformat when format is
GL_RED or GL_RG and type is of GL_FLOAT or GL_HALF_FLOAT.

Later, internalformat will get adjusted by adjust_for_oes_float_texture
after these checks.

v2: simplify to check vs supported enums
v3: follow the style and break out if internalFormat ok (Kenneth)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90748
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agomesa: allow unsized formats GL_RG, GL_RED for GLES 3.0 with half float
Tapani Pälli [Mon, 8 Jun 2015 11:53:26 +0000 (14:53 +0300)]
mesa: allow unsized formats GL_RG, GL_RED for GLES 3.0 with half float

v2: && -> ||, we enable on gles3 or if ARB_texture_rg is enabled

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90748
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoglsl: remove restriction on unsized arrays in GLSL ES 3.10
Timothy Arceri [Tue, 9 Jun 2015 06:53:55 +0000 (16:53 +1000)]
glsl: remove restriction on unsized arrays in GLSL ES 3.10

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
9 years agost/dri: check pscreen is valid before querying param
Dave Airlie [Wed, 10 Jun 2015 03:51:59 +0000 (13:51 +1000)]
st/dri: check pscreen is valid before querying param

we don't check the validity of pscreen until dri_init_screen_helper

hit this trying to init glamor on a device with no driver (udl).

Acked-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agonouveau: set imported buffers to what the kernel gives us
Dave Airlie [Wed, 10 Jun 2015 03:26:56 +0000 (13:26 +1000)]
nouveau: set imported buffers to what the kernel gives us

When we import a dma-buf fd from another driver the kernel
gives us the right info, and this trashes it.

Convert the kernel bo flags into the domain flags.

This helps getting reverse prime and glamor working.

Cc: mesa-stable@lists.freedesktop.org
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agovc4: Drop qir include from vc4_screen.h
Eric Anholt [Sun, 7 Jun 2015 19:02:02 +0000 (12:02 -0700)]
vc4: Drop qir include from vc4_screen.h

We didn't need any of it except for the list header, and qir.h pulls in
nir.h, which is not really interesting to winsys.

9 years agovc4: Drop subdirectory in vc4 build.
Eric Anholt [Wed, 3 Jun 2015 17:18:04 +0000 (10:18 -0700)]
vc4: Drop subdirectory in vc4 build.

Just because we put the source in a subdir, doesn't mean we need helper
libraries in the build.  This will also simplify the Android build setup.

9 years agovc4: Update to current kernel validation code.
Eric Anholt [Mon, 1 Jun 2015 19:50:49 +0000 (12:50 -0700)]
vc4: Update to current kernel validation code.

After profiling on real hardware, I found a few ways to cut down the
kernel overhead.

9 years agoandroid: build with libcxx on android lollipop
Chih-Wei Huang [Wed, 20 May 2015 03:25:39 +0000 (11:25 +0800)]
android: build with libcxx on android lollipop

On Lollipop, apparently stlport is gone and libcxx must be used instead.
We still support stlport when building on earlier android releases.

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: enable the radeonsi driver
Chih-Wei Huang [Wed, 20 May 2015 03:25:34 +0000 (11:25 +0800)]
android: enable the radeonsi driver

Based on the nice work of Paulo Sergio Travaglia <pstglia@gmail.com>.

The main modifications are:

- Include paths for LLVM header files and shared/static libraries
- Set C++ flag "c++11" to avoid compiling errors on LLVM header files
- Set defines for LLVM
- Add GALLIVM source files
- Changes path of libelf library for lollipop

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Acked-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: generate files by $(call es-gen)
Chih-Wei Huang [Wed, 20 May 2015 03:25:33 +0000 (11:25 +0800)]
android: generate files by $(call es-gen)

Use the pre-defined macro es-gen to generate new added files
instead of writing new rules manually. The handmade rules
that may generate the files before the directory is created
result in such an error:

/bin/bash: out/target/product/x86/gen/STATIC_LIBRARIES/libmesa_st_mesa_intermediates/main/format_pack.c: No such file or directory
make: *** [out/target/product/x86/gen/STATIC_LIBRARIES/libmesa_st_mesa_intermediates/main/format_pack.c] Error 1

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: try to load gallium_dri.so directly
Chih-Wei Huang [Wed, 20 May 2015 03:25:30 +0000 (11:25 +0800)]
android: try to load gallium_dri.so directly

This avoids needing hardlinks between all of the DRI driver .so names,
since we're the only loader on the system.

v2: Add early exit on success (like previous block) and log message on
    failure.

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: Depend on gallium_dri from EGL, instead of linking in gallium.
Chih-Wei Huang [Wed, 20 May 2015 03:25:29 +0000 (11:25 +0800)]
android: Depend on gallium_dri from EGL, instead of linking in gallium.

The Android gallium build used to use gallium_egl, which was removed back
in March.  Instead, we will now use a normal Mesa libEGL loader with
dlopen()ing of a DRI module.

v2: add a clean step to rebuild all dri modules properly.
v3: Squish the 2 patches doing this together (change by anholt).

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: add rules to build a gallium_dri.so
Chih-Wei Huang [Wed, 20 May 2015 03:25:28 +0000 (11:25 +0800)]
android: add rules to build a gallium_dri.so

This single .so includes all of the enabled gallium drivers.

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: add rules to build gallium/state_trackers/dri
Chih-Wei Huang [Wed, 20 May 2015 03:25:27 +0000 (11:25 +0800)]
android: add rules to build gallium/state_trackers/dri

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: export more dirs from libmesa_dri_common
Chih-Wei Huang [Wed, 20 May 2015 03:25:26 +0000 (11:25 +0800)]
android: export more dirs from libmesa_dri_common

The include paths of libmesa_dri_common are also used by modules
that need libmesa_dri_common.

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoandroid: loader: export the path to be included
Chih-Wei Huang [Wed, 20 May 2015 03:25:25 +0000 (11:25 +0800)]
android: loader: export the path to be included

Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoi965/gen9: Use raw PS invocation count for queries
Ben Widawsky [Mon, 8 Jun 2015 21:52:07 +0000 (14:52 -0700)]
i965/gen9: Use raw PS invocation count for queries

Previously the number needed to be divided by 4 to get the proper results. Now
the hardware does the right thing. Through experimentation it seems Braswell
(CHV) does also need the division by 4.

Fixes piglit test:
arb_pipeline_statistics_query-frag

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
9 years agoglsl: fix comment typo: s/accpet/accept/
Brian Paul [Tue, 9 Jun 2015 15:14:17 +0000 (09:14 -0600)]
glsl: fix comment typo: s/accpet/accept/

9 years agomesa: remove some MAX_NV_FRAGMENT_PROGRAM_* macros
Brian Paul [Fri, 5 Jun 2015 14:00:09 +0000 (08:00 -0600)]
mesa: remove some MAX_NV_FRAGMENT_PROGRAM_* macros

GL_NV_fragment_program support was removed a while ago.  This is just
some clean-up.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agofs/reg_allocate: Remove the MRF hack helpers from fs_visitor
Jason Ekstrand [Sat, 6 Jun 2015 19:08:00 +0000 (12:08 -0700)]
fs/reg_allocate: Remove the MRF hack helpers from fs_visitor

These are helpers that only exist in this one file.  No reason to put them
in the visitor.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
9 years agoi965/fs: Don't let the EOT send message interfere with the MRF hack
Jason Ekstrand [Sat, 6 Jun 2015 19:15:30 +0000 (12:15 -0700)]
i965/fs: Don't let the EOT send message interfere with the MRF hack

Previously, we just put the message for the EOT send as high in the file as
it would go.  This is because the register pre-filling hardware will stop
all over the early registers in the file in preparation for the next thread
while you're still sending the last message.  However, if something happens
to spill, then the MRF hack interferes with the EOT send message and, if
things aren't scheduled nicely, will stomp on it.

Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90520
Reviewed-by: Neil Roberts <neil@linux.intel.com>
9 years agortasm: Generalize executable memory allocator to all Unices.
Jose Fonseca [Tue, 9 Jun 2015 13:43:21 +0000 (14:43 +0100)]
rtasm: Generalize executable memory allocator to all Unices.

We're only using fairly portable standard Unix calls here, so might as
well save ourselves future trouble by enabling on all Unices by default.

https://bugs.freedesktop.org/show_bug.cgi?id=90904

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
9 years agoi965/fs: Drop fs_inst::force_uncompressed.
Francisco Jerez [Wed, 3 Jun 2015 15:17:50 +0000 (18:17 +0300)]
i965/fs: Drop fs_inst::force_uncompressed.

This is now unused.  Saves a whole bit of memory per instruction.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Remove dead IR construction code from the visitor.
Francisco Jerez [Mon, 8 Jun 2015 16:32:18 +0000 (19:32 +0300)]
i965/fs: Remove dead IR construction code from the visitor.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate test_fs_cmod_propagation to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 15:16:30 +0000 (18:16 +0300)]
i965/fs: Migrate test_fs_cmod_propagation to the IR builder.

v2: Use set_predicate/condmod.  Use fs_builder::OPCODE instead of
    ::emit.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate test_fs_saturate_propagation to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 15:15:22 +0000 (18:15 +0300)]
i965/fs: Migrate test_fs_saturate_propagation to the IR builder.

v2: Use set_saturate.  Use fs_builder::OPCODE instead of ::emit.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate translation of NIR texturing instructions to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:02:57 +0000 (21:02 +0300)]
i965/fs: Migrate translation of NIR texturing instructions to the IR builder.

v2: Don't remove assignments of base_ir just yet.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate translation of NIR intrinsics to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:01:32 +0000 (21:01 +0300)]
i965/fs: Migrate translation of NIR intrinsics to the IR builder.

v2: Use fs_builder::SEL instead of ::emit.  Use set_condmod().

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate translation of NIR ALU instructions to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:59:26 +0000 (20:59 +0300)]
i965/fs: Migrate translation of NIR ALU instructions to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate translation of NIR control flow to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:57:12 +0000 (20:57 +0300)]
i965/fs: Migrate translation of NIR control flow to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate NIR variable handling to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:17:36 +0000 (21:17 +0300)]
i965/fs: Migrate NIR variable handling to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate NIR emit_percomp() to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:12:49 +0000 (21:12 +0300)]
i965/fs: Migrate NIR emit_percomp() to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate CS terminate message to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:08:43 +0000 (21:08 +0300)]
i965/fs: Migrate CS terminate message to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate VS output writes to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 19:43:00 +0000 (22:43 +0300)]
i965/fs: Migrate VS output writes to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate FS framebuffer writes to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:07:52 +0000 (21:07 +0300)]
i965/fs: Migrate FS framebuffer writes to the IR builder.

The explicit call to fs_builder::group() in emit_single_fb_write() is
required by the builder (otherwise the assertion in fs_builder::emit()
would fail) because the subsequent LOAD_PAYLOAD and FB_WRITE
instructions are in some cases emitted with a non-native execution
width.  The previous code would always use the channel enables for the
first quarter, which is dubious but probably worked in practice
because FB writes are never emitted inside non-uniform control flow
and we don't pass the kill-pixel mask via predication in the cases
where we have to fall-back to SIMD8 writes.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate FS alpha test to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:07:34 +0000 (21:07 +0300)]
i965/fs: Migrate FS alpha test to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate FS discard handling to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:45:54 +0000 (20:45 +0300)]
i965/fs: Migrate FS discard handling to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate FS gl_SamplePosition/ID computation code to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:56:20 +0000 (21:56 +0300)]
i965/fs: Migrate FS gl_SamplePosition/ID computation code to the IR builder.

v2: Use fs_builder::AND/SHR/MOV instead of ::emit.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate FS interpolation code to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:54:54 +0000 (21:54 +0300)]
i965/fs: Migrate FS interpolation code to the IR builder.

v2: Fix some preexisting trivial codestyle issues.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate shader time to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:43:09 +0000 (20:43 +0300)]
i965/fs: Migrate shader time to the IR builder.

v2: Change null register destination type to UD so it can be compacted.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate untyped surface read and atomic to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:06:13 +0000 (21:06 +0300)]
i965/fs: Migrate untyped surface read and atomic to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate texturing implementation to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:05:28 +0000 (21:05 +0300)]
i965/fs: Migrate texturing implementation to the IR builder.

v2: Remove tabs from modified lines.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate pull constant loads to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 19:22:39 +0000 (22:22 +0300)]
i965/fs: Migrate pull constant loads to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate Gen4 send dependency workarounds to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 19:22:10 +0000 (22:22 +0300)]
i965/fs: Migrate Gen4 send dependency workarounds to the IR builder.

v2: Change brw_null_reg() to bld.null_reg_f().

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate lower_integer_multiplication to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:49:32 +0000 (20:49 +0300)]
i965/fs: Migrate lower_integer_multiplication to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate lower_load_payload to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:36:47 +0000 (20:36 +0300)]
i965/fs: Migrate lower_load_payload to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate register spills and fills to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 16:05:54 +0000 (19:05 +0300)]
i965/fs: Migrate register spills and fills to the IR builder.

Yes, it's incorrect to use the 0-th channel enable group
unconditionally without considering the execution and regioning
controls of the instruction that uses the spilled value, but it
matches the previous behaviour exactly, the builder just makes the
preexisting problem more obvious because emitting an instruction of
non-native SIMD width without having called .group() or .exec_all()
explicitly would have led to an assertion failure.

I'll fix the problem in a follow-up series, as the solution is going
to be non-trivial.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate try_replace_with_sel to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 18:05:45 +0000 (21:05 +0300)]
i965/fs: Migrate try_replace_with_sel to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate opt_sampler_eot to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 17:46:31 +0000 (20:46 +0300)]
i965/fs: Migrate opt_sampler_eot to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate opt_peephole_sel to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 16:51:47 +0000 (19:51 +0300)]
i965/fs: Migrate opt_peephole_sel to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Create and emit instructions in one step in opt_peephole_sel.
Francisco Jerez [Wed, 3 Jun 2015 16:33:44 +0000 (19:33 +0300)]
i965/fs: Create and emit instructions in one step in opt_peephole_sel.

This simplifies opt_peephole_sel() slightly by emitting the SEL
instructions immediately after they are created, what makes the
sel_inst and mov_imm_inst arrays unnecessary and will make it possible
to get rid of the explicit inserts when the pass is migrated to the IR
builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate opt_cse to the IR builder.
Francisco Jerez [Thu, 4 Jun 2015 13:13:35 +0000 (16:13 +0300)]
i965/fs: Migrate opt_cse to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Don't drop force_writemask_all and _sechalf when copying a CSE temporary.
Francisco Jerez [Thu, 4 Jun 2015 13:09:47 +0000 (16:09 +0300)]
i965/fs: Don't drop force_writemask_all and _sechalf when copying a CSE temporary.

LOAD_PAYLOAD instructions need the same treatment as any other
generator instructions, at least FB writes and typed surface messages
will need a payload built with non-zero execution controls.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/vec4: Take into account all instruction fields in CSE instructions_match().
Francisco Jerez [Thu, 4 Jun 2015 13:05:33 +0000 (16:05 +0300)]
i965/vec4: Take into account all instruction fields in CSE instructions_match().

Most of these fields affect the behaviour of the instruction, but
apparently we currently don't CSE the kind of instructions for which
these fields could make a difference in the VEC4 back-end.  That's
likely to change soon though when we start using send-from-GRF for
texture sampling and surface access messages.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Take into account all instruction fields in CSE instructions_match().
Francisco Jerez [Thu, 4 Jun 2015 12:09:10 +0000 (15:09 +0300)]
i965/fs: Take into account all instruction fields in CSE instructions_match().

Most of these fields affect the behaviour of the instruction so it
could actually break the program if we CSE a pair of otherwise
matching instructions with different values of these fields.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoi965/fs: Migrate opt_peephole_predicated_break to the IR builder.
Francisco Jerez [Wed, 3 Jun 2015 15:22:17 +0000 (18:22 +0300)]
i965/fs: Migrate opt_peephole_predicated_break to the IR builder.

Reviewed-by: Matt Turner <mattst88@gmail.com>