mesa.git
8 years agoradeonsi: move scissor and viewport states into gallium/radeon
Marek Olšák [Sun, 10 Apr 2016 02:26:50 +0000 (04:26 +0200)]
radeonsi: move scissor and viewport states into gallium/radeon

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: use guard band clipping
Marek Olšák [Sun, 10 Apr 2016 01:38:09 +0000 (03:38 +0200)]
radeonsi: use guard band clipping

Guard band clipping speeds up rasterization for primitives that are
partially off-screen.  This change in particular results in small
framerate improvements in a wide range of games.

Started by Grigori Goronzy <greg@chown.ath.cx>.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: compute scissor from viewport in set_viewport_states
Marek Olšák [Sun, 10 Apr 2016 01:29:57 +0000 (03:29 +0200)]
radeonsi: compute scissor from viewport in set_viewport_states

and clamp it right before emitting. This is a prerequisite for computing
the guard band.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: set GTT WC on tiled textures
Marek Olšák [Mon, 11 Apr 2016 18:24:34 +0000 (20:24 +0200)]
gallium/radeon: set GTT WC on tiled textures

Just for consistency. This should have no effect, because OpenGL textures
always go to VRAM.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
8 years agogallium/radeon: relax requirements on VRAM placements on APUs
Marek Olšák [Mon, 11 Apr 2016 17:56:07 +0000 (19:56 +0200)]
gallium/radeon: relax requirements on VRAM placements on APUs

This makes Tonga with vramlimit=128 2x faster in Heaven.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
8 years agowinsys/amdgpu: remove hack for low VRAM configuration
Marek Olšák [Mon, 11 Apr 2016 17:26:03 +0000 (19:26 +0200)]
winsys/amdgpu: remove hack for low VRAM configuration

A better solution will be used.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
8 years agor600g: disable aniso filtering for non-mipmap textures on EG
Marek Olšák [Thu, 7 Apr 2016 19:18:14 +0000 (21:18 +0200)]
r600g: disable aniso filtering for non-mipmap textures on EG

this is the default behavior of the closed driver when running on VI

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agor600g: clean up aniso state translation
Marek Olšák [Fri, 8 Apr 2016 00:09:59 +0000 (02:09 +0200)]
r600g: clean up aniso state translation

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: disable aniso filtering for non-mipmap textures on SI-CI
Marek Olšák [Thu, 7 Apr 2016 19:37:43 +0000 (21:37 +0200)]
radeonsi: disable aniso filtering for non-mipmap textures on SI-CI

The closed driver does this, but it looks at base_level and last_level
and uses a conditional assignment, which LLVM can't generate on SGPRs.

That led me to invent this solution that abuses the image descriptor.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: clean up aniso state translation
Marek Olšák [Fri, 8 Apr 2016 00:08:23 +0000 (02:08 +0200)]
radeonsi: clean up aniso state translation

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: enable some sampler fields to match the closed driver
Marek Olšák [Thu, 7 Apr 2016 15:02:51 +0000 (17:02 +0200)]
radeonsi: enable some sampler fields to match the closed driver

copied from the Vulkan driver

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: fix maximum texture anisotropy setup
Marek Olšák [Thu, 7 Apr 2016 13:34:45 +0000 (15:34 +0200)]
gallium/radeon: fix maximum texture anisotropy setup

We were overdoing it for non-power-of-two values.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: never choose a linear tiling for DB surfaces
Marek Olšák [Sun, 10 Apr 2016 20:48:48 +0000 (22:48 +0200)]
gallium/radeon: never choose a linear tiling for DB surfaces

Just for consistency. This is actually not a problem, because both addrlib
and radeon check and fix this.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: removing dead code for sharing stencil buffers
Marek Olšák [Sun, 10 Apr 2016 20:39:54 +0000 (22:39 +0200)]
gallium/radeon: removing dead code for sharing stencil buffers

This is a remnant of the times when the DDX was allocating depth-stencil
buffers for windows. Now, st/dri allocates them and doesn't share them.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: allow clearing buffers >= 4 GB
Marek Olšák [Sun, 10 Apr 2016 15:21:19 +0000 (17:21 +0200)]
radeonsi: allow clearing buffers >= 4 GB

Only CMASK and DCC clears can use this, because only textures can be so
large.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: allow allocating textures >= 4 GB
Marek Olšák [Sun, 10 Apr 2016 15:14:49 +0000 (17:14 +0200)]
gallium/radeon: allow allocating textures >= 4 GB

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agowinsys/radeon: fix printing allocation failures
Marek Olšák [Sun, 10 Apr 2016 14:50:17 +0000 (16:50 +0200)]
winsys/radeon: fix printing allocation failures

print as unsigned instead of signed

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agowinsys/amdgpu: add support for 64-bit buffer sizes
Marek Olšák [Sun, 10 Apr 2016 14:48:55 +0000 (16:48 +0200)]
winsys/amdgpu: add support for 64-bit buffer sizes

v2: fail in radeon_winsys_bo_create if size > 32 bits

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agopb_buffer: switch pb_buffer::size to 64 bits
Marek Olšák [Sun, 10 Apr 2016 14:37:33 +0000 (16:37 +0200)]
pb_buffer: switch pb_buffer::size to 64 bits

being able to allocate more than 4 GB may be useful

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: remove R600_QUERY_HW_FLAG_TIMER
Marek Olšák [Fri, 8 Apr 2016 19:26:23 +0000 (21:26 +0200)]
gallium/radeon: remove R600_QUERY_HW_FLAG_TIMER

not used anymore

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: merge timer and non-timer query lists
Marek Olšák [Fri, 8 Apr 2016 19:24:19 +0000 (21:24 +0200)]
gallium/radeon: merge timer and non-timer query lists

All of them are paused only between IBs.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agor600g: don't manually stop queries for blitter
Marek Olšák [Fri, 8 Apr 2016 19:12:13 +0000 (21:12 +0200)]
r600g: don't manually stop queries for blitter

r600_set_active_query_state does it better.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agor600g: add pausing pipeline & streamout queries into set_active_query_state
Marek Olšák [Fri, 8 Apr 2016 19:10:58 +0000 (21:10 +0200)]
r600g: add pausing pipeline & streamout queries into set_active_query_state

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agor600g: implement set_active_query_state for pausing occlusion queries
Marek Olšák [Fri, 8 Apr 2016 18:41:52 +0000 (20:41 +0200)]
r600g: implement set_active_query_state for pausing occlusion queries

Use ZPASS_INCREMENT_DISABLE everywhere.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agor600g: simplify r600_set_occlusion_query_state
Marek Olšák [Fri, 8 Apr 2016 18:23:51 +0000 (20:23 +0200)]
r600g: simplify r600_set_occlusion_query_state

The caller does the same checking.

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium/radeon: move pipeline stat context flags to common code
Marek Olšák [Fri, 8 Apr 2016 18:29:08 +0000 (20:29 +0200)]
gallium/radeon: move pipeline stat context flags to common code

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agor600g: fix typo in r600 register definitions
Marek Olšák [Fri, 8 Apr 2016 18:37:06 +0000 (20:37 +0200)]
r600g: fix typo in r600 register definitions

Acked-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
8 years agogallium/radeon: unify checking streamout enable state
Marek Olšák [Thu, 7 Apr 2016 01:24:06 +0000 (03:24 +0200)]
gallium/radeon: unify checking streamout enable state

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: fix mask checking when emitting scissors and viewports
Marek Olšák [Thu, 7 Apr 2016 19:41:34 +0000 (21:41 +0200)]
radeonsi: fix mask checking when emitting scissors and viewports

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
8 years agoradeonsi: implement and rely on set_active_query_state
Marek Olšák [Thu, 7 Apr 2016 00:59:09 +0000 (02:59 +0200)]
radeonsi: implement and rely on set_active_query_state

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium: pause queries for all meta ops
Marek Olšák [Thu, 7 Apr 2016 23:43:00 +0000 (01:43 +0200)]
gallium: pause queries for all meta ops

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agogallium: add pipe_context::set_active_query_state for pausing queries
Marek Olšák [Thu, 7 Apr 2016 23:42:00 +0000 (01:42 +0200)]
gallium: add pipe_context::set_active_query_state for pausing queries

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: Synchronize a streamout write after read hazard.
Bas Nieuwenhuizen [Mon, 11 Apr 2016 13:53:43 +0000 (15:53 +0200)]
radeonsi: Synchronize a streamout write after read hazard.

Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agonv30: Add missing PIPE_SHADER_CAP_INTEGERS to get_shader_param()
Hans de Goede [Mon, 11 Apr 2016 12:07:20 +0000 (14:07 +0200)]
nv30: Add missing PIPE_SHADER_CAP_INTEGERS to get_shader_param()

Add missing PIPE_SHADER_CAP_INTEGERS for frag shaders to
nv30_screen_get_shader_param().

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
8 years agodri/i965: extend GLES3 sRGB workaround to cover all formats
Haixia Shi [Thu, 7 Apr 2016 18:05:08 +0000 (11:05 -0700)]
dri/i965: extend GLES3 sRGB workaround to cover all formats

It is incorrect to assume BGRA byte order for the GLES3 sRGB workaround.

v2: use _mesa_get_srgb_format_linear to handle all formats

Signed-off-by: Haixia Shi <hshi@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoi965: Add autogenerated 'brw_nir_trig_workarounds.c' to gitignore
Eduardo Lima Mitev [Tue, 12 Apr 2016 08:11:35 +0000 (10:11 +0200)]
i965: Add autogenerated 'brw_nir_trig_workarounds.c' to gitignore

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoglsl: Update hash table comments in constant propagation
Rhys Kidd [Mon, 11 Apr 2016 00:43:25 +0000 (20:43 -0400)]
glsl: Update hash table comments in constant propagation

Signed-off-by: Rhys Kidd <rhyskidd@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agosoftpipe: add SSBO/shader atomics support.
Dave Airlie [Mon, 11 Apr 2016 03:02:20 +0000 (13:02 +1000)]
softpipe: add SSBO/shader atomics support.

This adds support for the features requires for ARB_shader_storage_buffer_object
and ARB_shader_atomic_counters, ARB_shader_atomic_counter_ops.

[airlied: some cleanups applied]
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agodraw: add support for passing buffers to vs/gs shaders.
Dave Airlie [Mon, 11 Apr 2016 02:59:25 +0000 (12:59 +1000)]
draw: add support for passing buffers to vs/gs shaders.

Like the image code, but for shader buffers this time.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agotgsi: add support for buffer/atomic operations to tgsi_exec.
Dave Airlie [Mon, 11 Apr 2016 02:54:59 +0000 (12:54 +1000)]
tgsi: add support for buffer/atomic operations to tgsi_exec.

This adds support for doing load/store/atomic operations on
buffer objects.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agotgsi: set nonhelpermask for vertex shaders
Dave Airlie [Mon, 11 Apr 2016 02:20:38 +0000 (12:20 +1000)]
tgsi: set nonhelpermask for vertex shaders

For atomic operations we really need to avoid executing unnecessary shaders, so for some
tests that just draw a single point we only want one vertex to get processed not 4,

this fixes a number of the atomic counters tests.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agonir: Fix typo in comment
Ian Romanick [Tue, 12 Apr 2016 01:40:02 +0000 (18:40 -0700)]
nir: Fix typo in comment

Trivial.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agonir: Merge redudant integer clamping.
Markus Wick [Sat, 9 Apr 2016 01:31:16 +0000 (03:31 +0200)]
nir: Merge redudant integer clamping.

Dolphin uses them a lot. Range tracking would be better in the long term,
but this two lines works fine for now.

Signed-off-by: Markus Wick <markus@selfnet.de>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoi965: Port INTEL_PRECISE_TRIG=1 to NIR.
Kenneth Graunke [Thu, 7 Apr 2016 22:04:35 +0000 (15:04 -0700)]
i965: Port INTEL_PRECISE_TRIG=1 to NIR.

This makes the extra multiply visible to NIR's algebraic optimizations
(for constant reassociation) as well as constant folding.  This means
that when the result of sin/cos are multiplied by an constant, we can
eliminate the extra multiply altogether, reducing the cost of the
workaround.

It also means we only have to implement it one place, rather than in
both backends.

This makes INTEL_PRECISE_TRIG=1 cost nothing on GPUTest/Volplosion,
which has a ton of sin() calls, but always multiplies them by an
immediate constant.  The extra multiply gets folded away.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
8 years agoi965: Pass brw_compiler into brw_preprocess_nir() instead of is_scalar.
Kenneth Graunke [Thu, 7 Apr 2016 22:09:56 +0000 (15:09 -0700)]
i965: Pass brw_compiler into brw_preprocess_nir() instead of is_scalar.

I want to be able to read other fields.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
8 years agonir: Silence unused "options" warning in algebraic passes.
Kenneth Graunke [Thu, 7 Apr 2016 22:03:39 +0000 (15:03 -0700)]
nir: Silence unused "options" warning in algebraic passes.

Some passes may not refer to options->..., at which point the compiler
will warn about an unused variable.  Just cast to void unconditionally
to shut it up.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
8 years agonir: Do basic constant reassociation.
Kenneth Graunke [Thu, 7 Apr 2016 05:34:39 +0000 (22:34 -0700)]
nir: Do basic constant reassociation.

Many shaders contain expression trees of the form:

    const_1 * (value * const_2)

Reorganizing these to

    (const_1 * const_2) * value

will allow constant folding to combine the constants.  Sometimes, these
constants are 2 and 0.5, so we can remove a multiply altogether.  Other
times, it can create more immediate constants, which can actually hurt.

Finding a good balance here is tricky.  While much more could be done,
this simple patch seems to have a lot of positive benefit while having
a low downside.

shader-db results on Broadwell:

total instructions in shared programs: 8963768 -> 8961369 (-0.03%)
instructions in affected programs: 438318 -> 435919 (-0.55%)
helped: 1502
HURT: 245

total cycles in shared programs: 71527354 -> 71421516 (-0.15%)
cycles in affected programs: 11541788 -> 11435950 (-0.92%)
helped: 3445
HURT: 1224

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
8 years agoradeon/uvd: alignment fix for decode message buffer
Boyuan Zhang [Fri, 8 Apr 2016 15:31:15 +0000 (11:31 -0400)]
radeon/uvd: alignment fix for decode message buffer

Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
8 years agost/mesa: replace _mesa_sysval_to_semantic table with function
Brian Paul [Mon, 11 Apr 2016 22:29:02 +0000 (16:29 -0600)]
st/mesa: replace _mesa_sysval_to_semantic table with function

Instead of using an array indexed by SYSTEM_VALUE_x, just use a
switch statement.  This fixes a regression caused by inserting new
SYSTEM_VALUE_ enums but not updating the mapping to TGSI semantics.

v2: fix a few switch statement mistakes for compute-related enums

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonir/lower_system_values: Add support for several computed values
Jason Ekstrand [Fri, 25 Mar 2016 17:54:27 +0000 (10:54 -0700)]
nir/lower_system_values: Add support for several computed values

Reviewed-by: Rob Clark <robdclark@gmail.com>
8 years agoglsl/shader_enums: Add the other two compute builtins
Jason Ekstrand [Fri, 25 Mar 2016 17:51:23 +0000 (10:51 -0700)]
glsl/shader_enums: Add the other two compute builtins

These weren't added before because they are actually calculated values that
are computed from other inputs.  However, in order to handle them in
nir_lower_system_values, it's nice for them to have a cannonical locaiton.

Reviewed-by: Rob Clark <robdclark@gmail.com>
8 years agoglsl/shader_enums: Add an enum for Vulkan InstanceIndex
Jason Ekstrand [Fri, 25 Mar 2016 17:50:11 +0000 (10:50 -0700)]
glsl/shader_enums: Add an enum for Vulkan InstanceIndex

In Vulkan, you have InstanceIndex which begins at the base instance value
rather than the zero-based InstanceID of GL.

Reviewed-by: Rob Clark <robdclark@gmail.com>
8 years agomesa: add missing header to the tarball
Emil Velikov [Wed, 6 Apr 2016 12:07:04 +0000 (13:07 +0100)]
mesa: add missing header to the tarball

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agodrivers/softpipe: add missing header to the tarball
Emil Velikov [Wed, 6 Apr 2016 12:06:26 +0000 (13:06 +0100)]
drivers/softpipe: add missing header to the tarball

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agomesa: automake: update and reuse X86_SSE41_FILES list
Emil Velikov [Tue, 5 Apr 2016 14:50:28 +0000 (15:50 +0100)]
mesa: automake: update and reuse X86_SSE41_FILES list

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agocompiler: android: flesh out nir into separate makefile
Emil Velikov [Tue, 5 Apr 2016 13:48:20 +0000 (14:48 +0100)]
compiler: android: flesh out nir into separate makefile

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agocompiler: automake: flesh out NIR into separate makefile.
Emil Velikov [Tue, 5 Apr 2016 13:42:50 +0000 (14:42 +0100)]
compiler: automake: flesh out NIR into separate makefile.

Analogous to previous commit - improved readability at the expense of
an extra file.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agocompiler: automake: split out glsl into separate makefile
Emil Velikov [Tue, 5 Apr 2016 13:40:42 +0000 (14:40 +0100)]
compiler: automake: split out glsl into separate makefile

Preserve the functionality while keeping the files smaller and
more readable.

v2: Do not include Makefile.sources from the GLSL makefile (silences
automake warnings)

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net> (v1)
8 years agocompiler: remove {glsl,nir}/Makefile.sources
Emil Velikov [Mon, 11 Apr 2016 12:23:17 +0000 (13:23 +0100)]
compiler: remove {glsl,nir}/Makefile.sources

No longer used as of last commit.

v2: Rebase.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net> (v1)
8 years agoconfigure.ac: update the path of the generated files
Emil Velikov [Tue, 5 Apr 2016 13:29:41 +0000 (14:29 +0100)]
configure.ac: update the path of the generated files

... in order to determine if we need bison/flex. Failing to locate the
files will lead to mandating bison/flex even when building from a
release tarball.

CC: "11.2" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
8 years agoglsl: move the android build scripts a level up
Emil Velikov [Tue, 5 Apr 2016 13:25:19 +0000 (14:25 +0100)]
glsl: move the android build scripts a level up

Analogous to previous commit.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoglsl: move the scons build script a level up
Emil Velikov [Tue, 5 Apr 2016 13:05:19 +0000 (14:05 +0100)]
glsl: move the scons build script a level up

It will allow us to remove the duplicate glsl/Makefile.sources.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoPart revert "gallium/auxiliary: don't build NIR sources with MSVC2008 flags"
Emil Velikov [Tue, 5 Apr 2016 12:00:52 +0000 (13:00 +0100)]
Part revert "gallium/auxiliary: don't build NIR sources with MSVC2008 flags"

This reverts commit 41c7912d04111a7e3b75a438c5cbbd7edc0fee25 but leaves
out the pragma [that inspired the original commit].

Building mesa requires MSVC2013 or later, thus we no longer need this.

v2: Use correct include path (src/glsl/nir -> src/compiler/nir)

Conflicts:
src/gallium/auxiliary/Makefile.am

Acked-by: Jason Ekstrand <jason@jlekstrand.net> (v1)
8 years agoGL3: ARB_shader_image_load_store/size is done for radeonsi also in GLES
Nicolai Hähnle [Mon, 11 Apr 2016 17:48:10 +0000 (12:48 -0500)]
GL3: ARB_shader_image_load_store/size is done for radeonsi also in GLES

Trivial.

8 years agodocs: fix Coverity URL
Brian Paul [Mon, 11 Apr 2016 15:10:29 +0000 (09:10 -0600)]
docs: fix Coverity URL

8 years agotgsi/doc: fix spelling error
Oded Gabbay [Sun, 20 Mar 2016 08:41:40 +0000 (10:41 +0200)]
tgsi/doc: fix spelling error

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
8 years agonir: add a pass for lowering (un)pack_double_2x32
Connor Abbott [Thu, 12 Nov 2015 10:40:34 +0000 (11:40 +0100)]
nir: add a pass for lowering (un)pack_double_2x32

v2: Undo unintended change to the signature of
    nir_normalize_cubemap_coords (Iago).

v3: Move to compiler/nir (Iago)

v4: Remove Authors from copyright header (Michael Schellenberger)

v5 (Sam):
- Use nir_channel() and nir_ssa_for_alu_src() helpers (Jason)
- Inline lower_double_pack_instr() code into lower_double_pack_block()
  (Jason).
- Initialize nir_builder at lower_double_pack_impl() (Jason).

Signed-off-by: Iago Toral Quiroga <itoral@igalia.com>
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add split versions of (un)pack_double_2x32
Connor Abbott [Fri, 7 Aug 2015 15:37:38 +0000 (08:37 -0700)]
nir: add split versions of (un)pack_double_2x32

v2 (Sam):
- Use uint64 instead of float64 for sources and destinations. (Connor)

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: don't try to scalarize unpack_double_2x32
Connor Abbott [Fri, 31 Jul 2015 17:52:25 +0000 (10:52 -0700)]
nir: don't try to scalarize unpack_double_2x32

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add support for (un)pack_double_2x32
Connor Abbott [Fri, 14 Aug 2015 19:20:37 +0000 (12:20 -0700)]
nir: add support for (un)pack_double_2x32

v2 (Sam):
- Use uint64 instead of float64 for sources and destinations. (Connor)

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add i2d and u2d opcodes
Iago Toral Quiroga [Tue, 12 Jan 2016 13:03:08 +0000 (14:03 +0100)]
nir: add i2d and u2d opcodes

v2:
- Assert supports_int and don't fallback to nir_fmov (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add d2i, d2u, d2b opcodes
Iago Toral Quiroga [Tue, 12 Jan 2016 11:39:58 +0000 (12:39 +0100)]
nir: add d2i, d2u, d2b opcodes

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add support for d2f and f2d
Connor Abbott [Thu, 30 Jul 2015 06:46:20 +0000 (23:46 -0700)]
nir: add support for d2f and f2d

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/glsl_to_nir: set bit_size on ssbo_load result
Iago Toral Quiroga [Thu, 21 Jan 2016 12:23:55 +0000 (13:23 +0100)]
nir/glsl_to_nir: set bit_size on ssbo_load result

v2 (Sam):
- Add missing bit_size assignment when ssbo_load destination is a boolean.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/glsl_to_nir: add bit-size info to add_instr()
Samuel Iglesias Gonsálvez [Mon, 4 Apr 2016 08:16:11 +0000 (10:16 +0200)]
nir/glsl_to_nir: add bit-size info to add_instr()

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/split_var_copies: handle doubles
Connor Abbott [Tue, 4 Aug 2015 21:04:54 +0000 (14:04 -0700)]
nir/split_var_copies: handle doubles

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/instr_set: handle 64-bit bit-sizes
Connor Abbott [Mon, 3 Aug 2015 22:05:38 +0000 (15:05 -0700)]
nir/instr_set: handle 64-bit bit-sizes

v2: Revert spurious change in nir_opt_cse.c (Iago)

Signed-off-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: handle doubles in nir_deref_get_const_initializer_load()
Connor Abbott [Fri, 14 Aug 2015 17:40:03 +0000 (10:40 -0700)]
nir: handle doubles in nir_deref_get_const_initializer_load()

v2 (Sam):
- Use proper bitsize value when calling to nir_load_const_instr_create()
  (Jason).

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/print: add support for printing doubles and bitsize
Connor Abbott [Fri, 14 Aug 2015 17:37:18 +0000 (10:37 -0700)]
nir/print: add support for printing doubles and bitsize

v2:
- Squash the printing doubles related patches into one patch (Sam).

v3:
- Print using PRIx64 format: long is 32-bit on some 32-bit platforms but long
long is basically always 64-bit (Jason).

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/glsl_to_nir: support doubles
Connor Abbott [Thu, 12 Nov 2015 10:18:50 +0000 (11:18 +0100)]
nir/glsl_to_nir: support doubles

v2:
- Don't set sized types to the destination of texture related opcodes.
  (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/lower_load_const_to_scalar: support doubles and multiple bit sizes
Iago Toral Quiroga [Wed, 10 Feb 2016 15:05:11 +0000 (16:05 +0100)]
nir/lower_load_const_to_scalar: support doubles and multiple bit sizes

v2 (Sam):
- Add assert to detect bitsizes differents than 32 and 64 (Jason).

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/lower_to_source_mods: Handle different bit sizes
Iago Toral Quiroga [Fri, 6 Nov 2015 10:19:58 +0000 (11:19 +0100)]
nir/lower_to_source_mods: Handle different bit sizes

v2 (Sam):
- Use helper to get base type from nir_alu_type.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add bit_size info to nir_load_const_instr_create()
Samuel Iglesias Gonsálvez [Wed, 23 Mar 2016 07:04:18 +0000 (08:04 +0100)]
nir: add bit_size info to nir_load_const_instr_create()

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/lower_vec: adapt to different bit sizes
Connor Abbott [Mon, 2 Nov 2015 23:33:46 +0000 (18:33 -0500)]
nir/lower_vec: adapt to different bit sizes

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir: add bit_size info to nir_ssa_undef_instr_create()
Samuel Iglesias Gonsálvez [Wed, 23 Mar 2016 07:04:09 +0000 (08:04 +0100)]
nir: add bit_size info to nir_ssa_undef_instr_create()

v2:
- Make the users to give the right bit_sizes as arguments (Jason).

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/locals_to_regs: adapt to different bit sizes
Connor Abbott [Tue, 17 Nov 2015 14:50:00 +0000 (15:50 +0100)]
nir/locals_to_regs: adapt to different bit sizes

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agonir/from_ssa: adapt to different bit sizes
Connor Abbott [Tue, 17 Nov 2015 14:49:29 +0000 (15:49 +0100)]
nir/from_ssa: adapt to different bit sizes

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoi965: fix struct type in comment
Timothy Arceri [Sun, 10 Apr 2016 02:28:00 +0000 (12:28 +1000)]
i965: fix struct type in comment

Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
8 years agonir: Add a pass for gathering various bits of shader info
Jason Ekstrand [Fri, 25 Mar 2016 17:23:25 +0000 (10:23 -0700)]
nir: Add a pass for gathering various bits of shader info

Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoi965: enable OES_texture_buffer on gen7+
Ilia Mirkin [Tue, 29 Mar 2016 23:30:31 +0000 (19:30 -0400)]
i965: enable OES_texture_buffer on gen7+

It will only end up getting exposed on gen8+ since it requires GL ES
3.1, but it should be ready to go on gen7 when support for GL ES 3.1 is
completed there.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Tested-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agodocs: add some missing softpipe entries.
Dave Airlie [Mon, 11 Apr 2016 03:10:36 +0000 (13:10 +1000)]
docs: add some missing softpipe entries.

I just forgot these when I added this stuff.

Signed-off-by: Dave Airlie <airlied@redhat.com>
8 years agoglsl: Don't remove XFB-only varyings.
Kenneth Graunke [Sun, 3 Apr 2016 07:48:03 +0000 (00:48 -0700)]
glsl: Don't remove XFB-only varyings.

Consider the case of linking a program with both a vertex and fragment
shader.  The VS may compute output varyings that are intended for
transform feedback, and not read by the fragment shader.

In this case, var->data.is_unmatched_generic_inout will be true,
but we still cannot eliminate the varyings.  We need to also check
!var->data.is_xfb_only.

Fixes failures in ES31-CTS.gpu_shader5.fma_precision_*, which happen
to use transform feedback in a way we apparently hadn't seen before.

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
8 years agoi965/disasm: Decode per-slot offsets.
Kenneth Graunke [Fri, 8 Apr 2016 20:52:30 +0000 (13:52 -0700)]
i965/disasm: Decode per-slot offsets.

We just never bothered to decode this.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
8 years agoi965/disasm: Decode "channel mask present" bit correctly.
Kenneth Graunke [Fri, 8 Apr 2016 20:48:46 +0000 (13:48 -0700)]
i965/disasm: Decode "channel mask present" bit correctly.

Bit 15 means "interleave" for most messages, but for SIMD8 messages it
means "use channel masks".

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
8 years agoi965/disasm: Simplify the URB opcode printing with ?:.
Kenneth Graunke [Fri, 8 Apr 2016 20:38:54 +0000 (13:38 -0700)]
i965/disasm: Simplify the URB opcode printing with ?:.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
8 years agoglsl: allow usage of the keyword buffer before GLSL 430 / ESSL 310
Ilia Mirkin [Sat, 9 Apr 2016 17:11:42 +0000 (13:11 -0400)]
glsl: allow usage of the keyword buffer before GLSL 430 / ESSL 310

The GLSL 4.20 and ESSL 3.00 specs don't list 'buffer' as a reserved
keyword. Make the parser ignore it unless GLSL 4.30 / ESSL 3.10 are
used, or ARB_shader_storage_buffer_objects is enabled.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Cc: mesa-stable@lists.freedesktop.org
8 years agonvc0: handle the case where there are no framebuffer attachments
Ilia Mirkin [Sat, 23 Jan 2016 13:37:03 +0000 (08:37 -0500)]
nvc0: handle the case where there are no framebuffer attachments

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonv50,nvc0: support sending string markers down into the command stream
Ilia Mirkin [Sun, 3 Apr 2016 20:02:59 +0000 (16:02 -0400)]
nv50,nvc0: support sending string markers down into the command stream

This should hopefully make it a little easier to debug with GL
applications like glretrace and looking at command streams.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonv50,nvc0: add invalidate_resource support for buffer resources
Ilia Mirkin [Sun, 3 Apr 2016 19:11:39 +0000 (15:11 -0400)]
nv50,nvc0: add invalidate_resource support for buffer resources

Provide a callback to reallocate the underlying storage of a resource so
that it is not bound to any existing fences.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agovc4: Move FRAG_X/Y/REV_FLAG to a QFILE like VPM or TLB color writes.
Eric Anholt [Mon, 21 Mar 2016 21:11:10 +0000 (14:11 -0700)]
vc4: Move FRAG_X/Y/REV_FLAG to a QFILE like VPM or TLB color writes.

This gives us one less set of special instruction generation cases, and
instead just the case for returning the correct register to read.