mesa.git
9 years agoi965/vec4: Detect and delete useless MOVs.
Matt Turner [Mon, 21 Sep 2015 20:58:19 +0000 (13:58 -0700)]
i965/vec4: Detect and delete useless MOVs.

With NIR:

instructions in affected programs:     111508 -> 109193 (-2.08%)
helped:                                507

Without NIR:

instructions in affected programs:     28763 -> 28474 (-1.00%)
helped:                                186

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoprog_to_nir: Use nir_op_dph
Jason Ekstrand [Tue, 22 Sep 2015 23:57:03 +0000 (16:57 -0700)]
prog_to_nir: Use nir_op_dph

Shader-db results on HSW:

   instructions in affected programs:     72 -> 56 (-22.22%)

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/lower_alu_to_scalar: Add support for nir_op_fdph
Jason Ekstrand [Wed, 23 Sep 2015 00:29:49 +0000 (17:29 -0700)]
nir/lower_alu_to_scalar: Add support for nir_op_fdph

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965/vec4: Add support for fdph_replicated
Jason Ekstrand [Tue, 22 Sep 2015 23:55:42 +0000 (16:55 -0700)]
i965/vec4: Add support for fdph_replicated

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir: Add fdph and fdph_replicated opcodes
Jason Ekstrand [Tue, 22 Sep 2015 23:54:27 +0000 (16:54 -0700)]
nir: Add fdph and fdph_replicated opcodes

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/lower_alu_to_scalar: Return after lower_reduction
Jason Ekstrand [Wed, 23 Sep 2015 00:16:59 +0000 (17:16 -0700)]
nir/lower_alu_to_scalar: Return after lower_reduction

We don't use any of the code after the switch anyway.  Since we check for
num_components == 1 and early-return, it doesn't get executed so
everything's ok.  However, it makes it much clearer what's going on if we
simply do an early return.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/lower_alu_to_scalar: Use the builder
Jason Ekstrand [Wed, 23 Sep 2015 00:14:45 +0000 (17:14 -0700)]
nir/lower_alu_to_scalar: Use the builder

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Add defines for tessellation stages
Chris Forbes [Tue, 9 Sep 2014 09:15:09 +0000 (21:15 +1200)]
i965: Add defines for tessellation stages

v2 (Ken):
- Squash together commits for HS, DS, and TE, as well as fixes.
- Add INTEL_MASK variants so we can use SET_FIELD if we want.
- Rename GEN7_HS_INSTANCE_CONTROL to GEN7_HS_INSTANCE_COUNT to match
  the documentation.
- Add some more fields from the PRMs.
- Add Broadwell variants.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agor600g: update num_dw in scissor_enable workaround
Grazvydas Ignotas [Tue, 22 Sep 2015 22:50:31 +0000 (01:50 +0300)]
r600g: update num_dw in scissor_enable workaround

"r600g: apply disable workaround on all scissors" forgot to update
num_dw, fix it.

Fixes: fbb423b433 "r600g: apply disable workaround on all scissors"
Reported-and-tested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agoi965/vec4: refactor brw_vec4_copy_propagation.
Alejandro Piñeiro [Wed, 16 Sep 2015 15:19:50 +0000 (17:19 +0200)]
i965/vec4: refactor brw_vec4_copy_propagation.

Now it is more similar to brw_fs_copy_propagation, with three
clear stages:

1) Build up the value we are propagating as if it were the source of a
single MOV:
2) Check that we can propagate that value
3) Build the final value

Previously everything was somewhat messed up, making the
implementation on some specific cases, like knowing if you can
propagate from a previous instruction even with type mismatches, even
messier (for example, with the need of maintaining more of one
has_source_modifiers). The refactoring clears stuff, and gives
support to this mentioned use case without doing anything extra
(for example, only one has_source_modifiers is used).

Shader-db results for vec4 programs on Haswell:
total instructions in shared programs: 1683842 -> 1669037 (-0.88%)
instructions in affected programs:     739837 -> 725032 (-2.00%)
helped:                                6237
HURT:                                  0

v2: using 'arg' index to get the from inst was wrong
v3: rebased against last change on the previous patch of the series
v4: don't need to track instructions on struct copy_entry, as we
    only set the source on a direct copy
v5: change the approach for a refactoring
v6: tweaked comments

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agost/mesa: remove st_bind_framebuffer()
Brian Paul [Mon, 21 Sep 2015 15:03:45 +0000 (09:03 -0600)]
st/mesa: remove st_bind_framebuffer()

The function was a no-op and if the ctx->Driver.BindFramebuffer pointer
is null, Mesa won't try to use it.

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agomesa: const-qualify _mesa_is_legal_tex_storage_format ctx param
Brian Paul [Thu, 17 Sep 2015 15:49:07 +0000 (09:49 -0600)]
mesa: const-qualify _mesa_is_legal_tex_storage_format ctx param

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agomesa: const-qualify _mesa_base_tex_format() ctx param
Brian Paul [Thu, 17 Sep 2015 15:47:36 +0000 (09:47 -0600)]
mesa: const-qualify _mesa_base_tex_format() ctx param

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agomesa: const-qualify buffer_object_subdata_range_good() bufObj parameter
Brian Paul [Thu, 17 Sep 2015 15:45:42 +0000 (09:45 -0600)]
mesa: const-qualify buffer_object_subdata_range_good() bufObj parameter

Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agomesa: whitespace, comment fixes in texstorage.c
Brian Paul [Thu, 17 Sep 2015 15:45:20 +0000 (09:45 -0600)]
mesa: whitespace, comment fixes in texstorage.c

9 years agomesa/es3.1: Enable GL_ARB_vertex_attrib_binding functionality for GLES 3.1
Marta Lofstedt [Wed, 19 Aug 2015 18:25:24 +0000 (20:25 +0200)]
mesa/es3.1: Enable GL_ARB_vertex_attrib_binding functionality for GLES 3.1

Signed-off-by: Marta Lofstedt <marta.lofstedt@intel.com>
9 years agomesa/es3.1: Allow query of Vertex bindings for GLES 3.1
Marta Lofstedt [Wed, 19 Aug 2015 18:25:23 +0000 (20:25 +0200)]
mesa/es3.1: Allow query of Vertex bindings for GLES 3.1

Signed-off-by: Marta Lofstedt <marta.lofstedt@intel.com>
9 years agomesa/es3.1 : Align OpenGL ES 3.1 glBindVertexBuffer error handling with OpenGL Core
Marta Lofstedt [Wed, 19 Aug 2015 18:25:22 +0000 (20:25 +0200)]
mesa/es3.1 : Align OpenGL ES 3.1 glBindVertexBuffer error handling with OpenGL Core

According to OpenGL ES 3.1 specification 10.3.1:
"An INVALID_OPERATION error is generated if buffer is not zero
or a name returned from a previous call to GenBuffers,
or if such a name has since been deleted with DeleteBuffers."
This error check was previously limited to OpenGL Core.

Signed-off-by: Marta Lofstedt <marta.lofstedt@intel.com>
9 years agoi965: fix textureGrad for cubemaps
Tapani Pälli [Mon, 7 Sep 2015 12:08:13 +0000 (15:08 +0300)]
i965: fix textureGrad for cubemaps

Fixes bugs exposed by commit
2b1cdb0eddb73f62e4848d4b64840067f1f70865 in:
   ES3-CTS.gtf.GL3Tests.shadow.shadow_execution_frag

No regressions observed in deqp, CTS or Piglit.

v2: address review feedback from Iago Toral:
   - move rho calculation to else branch
   - optimize dx and dy calculation
   - fix documentation inconsistensies

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Signed-off-by: Kevin Rogovin <kevin.rogovin@intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91114
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
9 years agonir: Report progress from nir_normalize_cubemap_coords().
Kenneth Graunke [Thu, 17 Sep 2015 20:18:41 +0000 (13:18 -0700)]
nir: Report progress from nir_normalize_cubemap_coords().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Add braces around multi-line loop.
Kenneth Graunke [Thu, 17 Sep 2015 20:08:03 +0000 (13:08 -0700)]
nir: Add braces around multi-line loop.

This was correct but not our usual style.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Report progress from nir_lower_system_values().
Kenneth Graunke [Thu, 17 Sep 2015 20:00:58 +0000 (13:00 -0700)]
nir: Report progress from nir_lower_system_values().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Report progress from nir_split_var_copies().
Kenneth Graunke [Thu, 17 Sep 2015 19:33:36 +0000 (12:33 -0700)]
nir: Report progress from nir_split_var_copies().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Report progress from nir_lower_locals_to_regs().
Kenneth Graunke [Thu, 17 Sep 2015 19:29:49 +0000 (12:29 -0700)]
nir: Report progress from nir_lower_locals_to_regs().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Report progress from nir_remove_dead_variables().
Kenneth Graunke [Thu, 17 Sep 2015 17:57:14 +0000 (10:57 -0700)]
nir: Report progress from nir_remove_dead_variables().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Report progress from lower_vec_to_movs().
Jason Ekstrand [Thu, 10 Sep 2015 00:50:09 +0000 (17:50 -0700)]
nir: Report progress from lower_vec_to_movs().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agonir: Report progress from nir_lower_globals_vars_to_local().
Kenneth Graunke [Thu, 17 Sep 2015 15:38:10 +0000 (08:38 -0700)]
nir: Report progress from nir_lower_globals_vars_to_local().

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoi965: Clean up GLSL compiler option setup
Jason Ekstrand [Mon, 21 Sep 2015 18:18:23 +0000 (11:18 -0700)]
i965: Clean up GLSL compiler option setup

The only functional change here is that we now set EmitNoIndirectOutput and
EmitNoIndirectTemp for compute shaders.  Compute shaders don't have outputs
per-se and we should have been setting EmitNoIndirectTemp all along.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
9 years agoconfigure.ac: Add support to enable read-only text segment on x86.
Jeremy Huddleston [Sat, 29 Aug 2015 21:51:45 +0000 (14:51 -0700)]
configure.ac: Add support to enable read-only text segment on x86.

Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.gentoo.org/240956
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
9 years agoi965/skl: Use larger URB size where available.
Ben Widawsky [Thu, 10 Sep 2015 23:59:12 +0000 (16:59 -0700)]
i965/skl: Use larger URB size where available.

All SKL SKUs except the lowest one which has half the L3 size actually have 384K
of URB per slice.

For once, I can explain how this mistake was made and how it was missed in
review...  Historically when we enable a platform and put the production sizes,
you can simply look at the "smallest" SKU and see what its URB size is (and we
assumed it was the 1 slice variant). Since on newer platforms the URB sizes are
scaled automatically by HW, this was sufficient. On SKL, this is a bit different
as the lowest SKU actually has half of the L3 fused off. GT2 is the 1 slice (not
GT1) variant and it has 384K.

There are no Jenkins tests fixed (or regressions) and we don't expect any fixes
here because you can always run with less URB size.

Thanks to Sarah for bringing this to my attention.

Cc: Sarah Sharp <sarah.a.sharp@intel.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
9 years agonir/builder: Don't use designated initializers
Jason Ekstrand [Mon, 21 Sep 2015 15:22:12 +0000 (08:22 -0700)]
nir/builder: Don't use designated initializers

Designated initializers are not allowed in C++ (not even C++11).  Since
nir_lower_samplers is now using nir_builder, and nir_lower_samplers is in
C++, this breaks the build on some compilers.  Aparently, GCC 5 allows it
in some limited extent because mesa still builds on my system without this
patch.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92052
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir: Move system value -> intrinsic mapping into nir.c
Jason Ekstrand [Thu, 10 Sep 2015 23:53:08 +0000 (16:53 -0700)]
nir: Move system value -> intrinsic mapping into nir.c

This way they're right next to the map going the other direction.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir: rename nir_lower_samplers.c{pp,}
Emil Velikov [Thu, 17 Sep 2015 15:12:17 +0000 (16:12 +0100)]
nir: rename nir_lower_samplers.c{pp,}

With the only C++ function having its own wrapper we can 'demote' this
file to a normal C one. This allows us to get rid of extern C { #include
<foo.h> } 'hacks'. Plus some of the headers may use C99 initializers,
which are not supported by the ISO standard.

This may cause build issue on incremental builds. If so run the
following:

sed -i -e 's|samplers\.cpp|samplers.c|' src/glsl/nir/.deps/nir_lower_samplers.Plo

Fixes: ef8eebc6ad5(nir: support indirect indexing samplers in struct arrays)
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reported-by: Gottfried Haider <gottfried.haider@gmail.com>
Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agonir: add C wrapper around glsl_type::record_location_offset
Emil Velikov [Thu, 17 Sep 2015 14:57:26 +0000 (15:57 +0100)]
nir: add C wrapper around glsl_type::record_location_offset

This will allow us to convert nir_lower_sampler.cpp to C.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agonir: move stdio.h inclusion before extern C
Emil Velikov [Thu, 17 Sep 2015 15:03:48 +0000 (16:03 +0100)]
nir: move stdio.h inclusion before extern C

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agoi965: Fix MRF register number assertions for compr4.
Kenneth Graunke [Mon, 21 Sep 2015 14:42:27 +0000 (07:42 -0700)]
i965: Fix MRF register number assertions for compr4.

compr4 is represented by setting the high bit on the MRF number.
We need to mask it out before sanity checking the register number.

Fixes ~8000 assert fails on Ironlake and G45.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92066
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoradeonsi: implement TXQS support
Ilia Mirkin [Fri, 18 Sep 2015 23:08:35 +0000 (19:08 -0400)]
radeonsi: implement TXQS support

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Tested-by: Fredrik Bruhn <f@unibap.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
9 years agoradeonsi: load fmask ptr relative to the resources array
Ilia Mirkin [Sat, 19 Sep 2015 20:19:26 +0000 (16:19 -0400)]
radeonsi: load fmask ptr relative to the resources array

res_ptr already contains the resource values. fmask_ptr needs to be
looked up relative to the start of the resource params.

Note that this only affects indirect loads of MS sampler arrays.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
9 years agoi965/vec4: Use MRF registers 21-23 for spilling in gen6
Iago Toral Quiroga [Thu, 17 Sep 2015 11:43:52 +0000 (13:43 +0200)]
i965/vec4: Use MRF registers 21-23 for spilling in gen6

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965/fs: Use MRF registers 21-23 for spilling in gen6
Iago Toral Quiroga [Tue, 15 Sep 2015 14:33:48 +0000 (16:33 +0200)]
i965/fs: Use MRF registers 21-23 for spilling in gen6

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Turn BRW_MAX_MRF into a macro that accepts a hardware generation
Iago Toral Quiroga [Tue, 15 Sep 2015 14:00:26 +0000 (16:00 +0200)]
i965: Turn BRW_MAX_MRF into a macro that accepts a hardware generation

There are some bug reports about shaders failing to compile in gen6
because MRF 14 is used when we need to spill. For example:
https://bugs.freedesktop.org/show_bug.cgi?id=86469
https://bugs.freedesktop.org/show_bug.cgi?id=90631

Discussion in bugzilla pointed to the fact that gen6 might actually have
24 MRF registers available instead of 16, so we could use other MRF
registers and avoid these conflicts (we still need to investigate why
some shaders need up to MRF 14 anyway, since this is not expected).

Notice that the hardware docs are not clear about this fact:

SNB PRM Vol4 Part2's "Table 5-4. MRF Registers Available in Device
Hardware" says "Number per Thread" - "24 registers"

However, SNB PRM Vol4 Part1, 1.6.1 Message Register File (MRF) says:

"Normal threads should construct their messages in m1..m15. (...)
Regardless of actual hardware implementation, the thread should
not assume th at MRF addresses above m15 wrap to legal MRF registers."

Therefore experimentation was necessary to evaluate if we had these extra
MRF registers available or not. This was tested in gen6 using MRF
registers 21..23 for spilling and doing a full piglit run (all.py) forcing
spilling of everything on the FS backend. It was also tested by doing
spilling of everything on both the FS and the VS backends with a piglit run
of shader.py. In both cases no regressions were observed. In fact, many of
these tests where helped in the cases where we forced spilling, since that
triggered the same underlying problem described in the bug reports. Here are
some results using INTEL_DEBUG=spill_fs,spill_vec4 for a shader.py run on
gen6 hardware:

Using MRFs 13..15 for spilling:
crash: 2, fail: 113, pass: 6621, skip: 5461

Using MRFs 21..23 for spilling:
crash: 2, fail: 12, pass: 6722, skip: 5461

This patch sets the ground for later patches to implement spilling
using MRF registers 21..23 in gen6.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Move MRF register asserts out of brw_reg.h
Iago Toral Quiroga [Wed, 16 Sep 2015 07:08:19 +0000 (09:08 +0200)]
i965: Move MRF register asserts out of brw_reg.h

In a later patch we will make BRW_MAX_MRF return a different value depending
on the hardware generation, but it is inconvenient to add a gen parameter
to the brw_reg functions only for the assertions, so move these to places where
we have the hardware generation available.

Ken suggested to add the asserts to brw_set_src0 and brw_set_dest since that
would make sure that we catch all uses of MRF registers, even those coming
from modules that generate native code directly, like blorp. Unfortunately,
this is very late in the process which can make things harder to debug, so add
asserts to the generator as well.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965: Maximum allowed size of SEND messages is 15 (4 bits)
Iago Toral Quiroga [Fri, 18 Sep 2015 06:15:52 +0000 (08:15 +0200)]
i965: Maximum allowed size of SEND messages is 15 (4 bits)

Until now we only used MRFs 1..15 for regular SEND messages, so the
message length could not possibly exceed the maximum size. Soon we'll
allow to use MRF registers 1..23 in gen6, so we need to be careful
not to build messages that can go beyond the limit. That could occur,
specifically, when building URB write messages, which we may need to
split in chunks due to their size. Previously we would simply go and
create a new message when we reached MRF 13 (since 13..15 were
reserved for spilling), now we also want to check the size of the
message explicitly.

Besides adding that condition to split URB write messages properly,
this patch also adds asserts in the generator. Notice that
brw_inst_set_mlen already asserts for this, but asserting in the
generators is easy and can make debugging easier in some cases.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/print: fix coverity error
Rob Clark [Sun, 20 Sep 2015 18:02:29 +0000 (14:02 -0400)]
nir/print: fix coverity error

Not something actually hit in real life (now state is never non-null,
but only case state->syms is null is if nir_print_instr() path).  But it
was something I overlooked the first time, so might as well fix it.

    *** CID 1324642:  Null pointer dereferences  (REVERSE_INULL)
    /src/glsl/nir/nir_print.c: 299 in print_var_decl()
    293
    294           fprintf(fp, " (%s, %u)", loc, var->data.driver_location);
    295        }
    296
    297        fprintf(fp, "\n");
    298
    >>>     CID 1324642:  Null pointer dereferences  (REVERSE_INULL)
    >>>     Null-checking "state" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
    299        if (state) {
    300           _mesa_set_add(state->syms, name);
    301           _mesa_hash_table_insert(state->ht, var, name);
    302        }
    303     }
    304

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agoi965/vec4/nir: Remove all "this->" snippets
Eduardo Lima Mitev [Fri, 18 Sep 2015 08:30:12 +0000 (10:30 +0200)]
i965/vec4/nir: Remove all "this->" snippets

For consistency, either we have all class members dereferenced, or none.
In this case, very few are so lets get rid of them all.

Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agodri/common: fix gbm-symbols-check regression
Marcin Ślusarz [Sun, 20 Sep 2015 11:40:10 +0000 (13:40 +0200)]
dri/common: fix gbm-symbols-check regression

Broken by commit c228514c72cb2fd5fb9e510808e29204fc9e7ae1
"dri/common: use sysconfdir when looking for drirc".

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92054
Signed-off-by: Marcin Ślusarz <marcin.slusarz@gmail.com>
9 years agodocs: add news item and link release notes for 10.6.8
Emil Velikov [Sun, 20 Sep 2015 10:59:24 +0000 (11:59 +0100)]
docs: add news item and link release notes for 10.6.8

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agodocs: add sha256 checksums for 10.6.8
Emil Velikov [Sun, 20 Sep 2015 10:55:41 +0000 (11:55 +0100)]
docs: add sha256 checksums for 10.6.8

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 02387926addc62198c9b684f4f51f7cbe06b3e25)

9 years agodocs: add release notes for 10.6.8
Emil Velikov [Sun, 20 Sep 2015 10:05:07 +0000 (11:05 +0100)]
docs: add release notes for 10.6.8

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 91c6302734574e91424a7ccb52b6368b712366cc)

9 years agomesa/teximage: reuse compressed format utility functions for base_format
Nanley Chery [Thu, 27 Aug 2015 23:29:06 +0000 (16:29 -0700)]
mesa/teximage: reuse compressed format utility functions for base_format

Reuse utility functions instead of reimplementing the same logic.

* _mesa_is_compressed_format() performs the required checking to
  determine format support in the current context.
* _mesa_gl_compressed_format_base_format() returns the base format.

As a side effect, we now check that we're in a desktop context when
determining support for the FXT1 and RGTC formats. This is in agreement
with our extension table and the glext headers.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
9 years agomesa/texcompress: add compressed formats to base format utility function
Nanley Chery [Thu, 27 Aug 2015 23:25:48 +0000 (16:25 -0700)]
mesa/texcompress: add compressed formats to base format utility function

Add S3TC and PALETTE formats.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
9 years agomesa/glformats: refactor compressed format support function
Nanley Chery [Wed, 26 Aug 2015 23:36:11 +0000 (16:36 -0700)]
mesa/glformats: refactor compressed format support function

Instead of case statements, use _mesa_get_format_layout() to
determine if a GL format is part of a family of compressed formats.

v2. restrict LATC formats to API_OPENGL_COMPAT (Ilia).
    rename the variable mFormat to m_format.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
9 years agomesa/formats: add MESA_LAYOUT_LATC
Nanley Chery [Wed, 26 Aug 2015 23:25:44 +0000 (16:25 -0700)]
mesa/formats: add MESA_LAYOUT_LATC

This enables us to predicate statments on a compressed format being
a type of LATC format. Also, remove the comment that lists the enum
(it was getting a tad long).

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
9 years agodri/common: use sysconfdir when looking for drirc
Marcin Ślusarz [Sat, 19 Sep 2015 17:17:34 +0000 (19:17 +0200)]
dri/common: use sysconfdir when looking for drirc

Useful when locally installed mesa has more quirks than the system one.

Signed-off-by: Marcin Ślusarz <marcin.slusarz@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
9 years agofreedreno/ir3: use nir two-sided-color lowering
Rob Clark [Thu, 17 Sep 2015 17:35:33 +0000 (13:35 -0400)]
freedreno/ir3: use nir two-sided-color lowering

With this, we completely switch over to nir lowering passes instead of
tgsi_lowering.  So one step closer to supporting direct glsl or spirv to
nir support for freedreno a3xx/a4xx.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agonir: add two-sided-color lowering pass
Rob Clark [Thu, 17 Sep 2015 17:17:08 +0000 (13:17 -0400)]
nir: add two-sided-color lowering pass

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agonir/build: add nir_vec() helper
Rob Clark [Fri, 18 Sep 2015 17:23:36 +0000 (13:23 -0400)]
nir/build: add nir_vec() helper

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
9 years agofreedreno/ir3: lower txp/clamp in NIR
Rob Clark [Wed, 16 Sep 2015 17:42:21 +0000 (13:42 -0400)]
freedreno/ir3: lower txp/clamp in NIR

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agonir/lower_tex: add support to clamp texture coords
Rob Clark [Fri, 18 Sep 2015 14:44:27 +0000 (10:44 -0400)]
nir/lower_tex: add support to clamp texture coords

Some hardware needs to clamp texture coordinates to [0.0, 1.0] in the
shader to emulate GL_CLAMP.  This is added to lower_tex_proj since, in
the case of projected coords, the clamping needs to happen *after*
projection.

v2: comments/suggestions from Ilia and Eric, use txs to get texture size
and clamp RECT textures to their dimensions rather than [0.0, 1.0] to
avoid having to lower RECT textures to 2D.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/lower_tex: support for lowering RECT textures
Rob Clark [Wed, 16 Sep 2015 20:49:14 +0000 (16:49 -0400)]
nir/lower_tex: support for lowering RECT textures

v2: comments/suggestions from Ilia and Eric, split out get_texture_size()
helper so we can use it in the next commit for clamping RECT textures.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/lower_tex: support projector lowering per sampler type
Rob Clark [Wed, 16 Sep 2015 16:56:58 +0000 (12:56 -0400)]
nir/lower_tex: support projector lowering per sampler type

Some hardware, such as adreno a3xx, supports txp on some but not all
sampler types.  In this case we want more fine grained control over
which texture projectors get lowered.

v2: split out nir_lower_tex_options struct to make it easier to
add the additional parameters coming in the following patches

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir/lower_tex: split out project_src() helper
Rob Clark [Wed, 16 Sep 2015 16:53:12 +0000 (12:53 -0400)]
nir/lower_tex: split out project_src() helper

Split this out to reduce noise in later patches.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir: rename nir_lower_tex_projector
Rob Clark [Thu, 17 Sep 2015 11:54:35 +0000 (07:54 -0400)]
nir: rename nir_lower_tex_projector

Since the following patches will add additional tex-lowering related
functionality, which doesn't make sense to split out into a separate
pass (as they would require duplication of the projector lowering
logic), let's give this pass a more generic name.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agoi965/vec4: Change types as needed to propagate source modifiers using current instruction
Alejandro Piñeiro [Wed, 16 Sep 2015 08:26:55 +0000 (10:26 +0200)]
i965/vec4: Change types as needed to propagate source modifiers using current instruction

SEL and MOV instructions, as long as they don't have source modifiers, are
just copying bits around.  So those kind of instruction could be propagated
even if there are type mismatches. This is needed because NIR generates
integer SEL and MOV instructions whenever it doesn't know what else to
generate.

This commit adds support for copy propagation using current instruction
as reference.

Equivalent to commit 472ef9 but for vec4.

v2: include check for saturate, as Jason Ekstrand suggested
v3: check that the dst.type and the src type are the same, in order to
    solve (among others) the following deqp regression with v2:
    dEQP-GLES3.functional.shaders.operator.unary_operator.minus.lowp_uint_vertex

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoi965/fs: Fix comparison between signed and unsigned integer expressions
Iago Toral Quiroga [Fri, 18 Sep 2015 09:02:34 +0000 (11:02 +0200)]
i965/fs: Fix comparison between signed and unsigned integer expressions

brw_fs_visitor.cpp: In member function 'void fs_visitor::emit_urb_writes()':
brw_fs_visitor.cpp:977:58: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
9 years agomesa: fix errors when reading depth with glReadPixels
Tapani Pälli [Tue, 15 Sep 2015 06:17:20 +0000 (09:17 +0300)]
mesa: fix errors when reading depth with glReadPixels

OpenGL ES 3.0 spec 3.7.2 "Transfer of Pixel Rectangles" specifies
DEPTH_COMPONENT, UNSIGNED_INT as a valid couple, validation for
internal format is checked by is_float_depth().

Fix regression caused by 81d2fd91a90e5b2fd9fd74792a7a7c329f0e4d29 in:
   ES3-CTS.gtf.GL3Tests.packed_pixels.packed_pixels

Test uses GL_DEPTH_COMPONENT, UNSIGNED_INT only when GL_NV_read_depth
extension is present.

v2: change check in _mesa_error_check_format_and_type to be explicit
    for ES 2.0+, desktop OpenGL does not allow this behaviour + uses
    this function for both glReadPixels and glDrawPixels validation.
    (No Piglit regressions seen with v2.)

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> [v1]
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92009
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
9 years agonir/builder: fix c++11 compiler warning
Rob Clark [Fri, 18 Sep 2015 01:07:41 +0000 (21:07 -0400)]
nir/builder: fix c++11 compiler warning

Fixes:

   In file included from nir/nir_lower_samplers.cpp:27:0:
   nir/nir_builder.h: In function 'nir_ssa_def* nir_channel(nir_builder*, nir_ssa_def*, int)':
   nir/nir_builder.h:222:37: warning: narrowing conversion of 'c' from 'int' to 'unsigned int' inside { } is ill-formed in C++11 [-Wnarrowing]
       unsigned swizzle[4] = {c, c, c, c};

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agonir: really actually fix comment this time
Rob Clark [Fri, 18 Sep 2015 01:06:11 +0000 (21:06 -0400)]
nir: really actually fix comment this time

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agonir/print: print variable names
Rob Clark [Thu, 17 Sep 2015 22:18:45 +0000 (18:18 -0400)]
nir/print: print variable names

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agonir: some comment fixups
Rob Clark [Thu, 17 Sep 2015 22:18:19 +0000 (18:18 -0400)]
nir: some comment fixups

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
9 years agofreedreno/ir3: add --gpu arg to cmdline compiler
Rob Clark [Wed, 16 Sep 2015 17:57:26 +0000 (13:57 -0400)]
freedreno/ir3: add --gpu arg to cmdline compiler

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/a4xx: wire up ucp support
Rob Clark [Sat, 12 Sep 2015 15:15:32 +0000 (11:15 -0400)]
freedreno/a4xx: wire up ucp support

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/ir3: add support for ucp
Rob Clark [Thu, 10 Sep 2015 20:09:13 +0000 (16:09 -0400)]
freedreno/ir3: add support for ucp

Use nir_lower_clip pass for adding the VS/FS instructions to handle
user-clip-planes and CLIPDIST.  Wire up support for load_user_clip_plane
intrinsic to fetch ucp[plane] values as driver-params (passed as const's
to the shader).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agonir: add lowering stage for user-clip-planes / clipdist
Rob Clark [Wed, 9 Sep 2015 18:57:15 +0000 (14:57 -0400)]
nir: add lowering stage for user-clip-planes / clipdist

The vertex shader lowering adds calculation for CLIPDIST, if needed
(ie. user-clip-planes), and the frag shader lowering adds conditional
kills based on CLIPDIST value (which should be treated as a normal
interpolated varying by the driver).

Note that this won't quite do the right thing in the face of MSAA plus
user-clip-planes, since all the samples would be killed or not (rather
than potentially only a portion of them).  But it's better than no UCP
support at all for drivers that don't have this in hw.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agonir: add sysval for user-clip-planes
Rob Clark [Thu, 27 Aug 2015 21:42:40 +0000 (17:42 -0400)]
nir: add sysval for user-clip-planes

For lowering user-clip-planes, we need a way to pass the enabled/used
user-clip-planes in to shader.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agofreedreno/ir3: convert from tgsi semantic/index to varying-slot
Rob Clark [Fri, 11 Sep 2015 21:20:48 +0000 (17:20 -0400)]
freedreno/ir3: convert from tgsi semantic/index to varying-slot

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agoglsl: add SYSTEM_VALUE_VERTEX_CNT
Rob Clark [Fri, 11 Sep 2015 21:01:23 +0000 (17:01 -0400)]
glsl: add SYSTEM_VALUE_VERTEX_CNT

Used internally in freedreno/ir3 to calc stream-out position.  Seems
like a generic enough way to implement stream-out (using str instrs),
plus it avoids compiler warnings by sneaking in a non-enum value in
switch statements.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agofreedreno/ir3: switch to shader_enums.h interp constants
Rob Clark [Thu, 10 Sep 2015 21:25:18 +0000 (17:25 -0400)]
freedreno/ir3: switch to shader_enums.h interp constants

A small step towards un-TGSI'ifying ir3.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
9 years agonv50,nvc0: flush texture cache in presence of coherent bufs
Ilia Mirkin [Thu, 17 Sep 2015 02:17:18 +0000 (22:17 -0400)]
nv50,nvc0: flush texture cache in presence of coherent bufs

This fixes the newly-added arb_texture_buffer_object-bufferstorage
piglit test.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
9 years agonv50,nvc0: detect underlying resource changes and update tic
Ilia Mirkin [Tue, 15 Sep 2015 05:32:40 +0000 (01:32 -0400)]
nv50,nvc0: detect underlying resource changes and update tic

When updating texture buffers, we might end up replacing the whole
buffer. Check that the tic address matches the resource address, and if
not, update the tic and reupload it.

This fixes:
  arb_direct_state_access-texture-buffer
  arb_texture_buffer_object-data-sync

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
9 years agovc4: Try to pair up instructions when only one of them has PM bit
Boyan Ding [Sun, 30 Aug 2015 07:07:33 +0000 (15:07 +0800)]
vc4: Try to pair up instructions when only one of them has PM bit

Instructions with difference in PM field can actually be paired up if
the one without PM doesn't do packing/unpacking and non-NOP
packing/unpacking operations from PM instruction aren't added to the
other without PM.

total instructions in shared programs: 48209 -> 47460 (-1.55%)
instructions in affected programs:     11688 -> 10939 (-6.41%)

Signed-off-by: Boyan Ding <boyan.j.ding@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
9 years agoi965/vec4: Use nir_move_vec_src_uses_to_dest
Jason Ekstrand [Tue, 8 Sep 2015 23:45:57 +0000 (16:45 -0700)]
i965/vec4: Use nir_move_vec_src_uses_to_dest

The idea here is not that it gives register coalescing a little bit of a
helping hand.  It doesn't actually fix the coalescing problems, but it
seems to help a good bit.

Shader-db results for vec4 programs on Haswell:

   total instructions in shared programs: 1746280 -> 1683959 (-3.57%)
   instructions in affected programs:     1259166 -> 1196845 (-4.95%)
   helped:                                11363
   HURT:                                  148

v2 (Jason Ekstrand):
 - Run nir_move_vec_src_uses_to_dest after going out of SSA
 - New shader-db numbers

Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
9 years agonir: Add a pass to rewrite uses of vecN sources to the vecN destination
Jason Ekstrand [Tue, 8 Sep 2015 22:18:01 +0000 (15:18 -0700)]
nir: Add a pass to rewrite uses of vecN sources to the vecN destination

v2 (Jason Ekstrand):
 - Handle non-SSA sources and destinations

Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
9 years agonir: Add comments to nir_index_instrs and nir_index_ssa_defs
Jason Ekstrand [Mon, 14 Sep 2015 19:25:28 +0000 (12:25 -0700)]
nir: Add comments to nir_index_instrs and nir_index_ssa_defs

The provided indices have the very nice property that if A dominates B then
A->index <= B->index.  We should document that somewhere.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agonir: Add a generic instruction index
Jason Ekstrand [Tue, 8 Sep 2015 23:43:51 +0000 (16:43 -0700)]
nir: Add a generic instruction index

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
9 years agomesa: Fix texture compression on big-endian systems
Ulrich Weigand [Tue, 15 Sep 2015 13:23:26 +0000 (15:23 +0200)]
mesa: Fix texture compression on big-endian systems

Various pieces of code to create compressed textures will first
generate an uncompressed RGBA texture into a temporary buffer,
and then read from that buffer while creating the final compressed
texture in the requested format.

The code reading from the temporary buffer assumes the buffer is
formatted as an array of bytes in RGBA order.  However, the buffer
is filled using a _mesa_texstore call with MESA_FORMAT_R8G8B8A8_UNORM
format -- this is defined as an array of *integers* holding the
RGBA values in packed format (least-significant to most-significant).
This means incorrect bytes are accessed on big-endian systems.

This patch fixes this by using the MESA_FORMAT_A8B8G8R8_UNORM format
instead on big-endian systems when filling the buffer.  This fixes
about 100 piglit test case failures on s390x for me.

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Tested-by: Oded Gabbay <oded.gabbay@gmail.com>
Cc: "10.6" "11.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@gmail.com>
9 years agost/xa: Use PIPE_FORMAT_R8_UNORM when available
Thomas Hellstrom [Wed, 16 Sep 2015 12:53:13 +0000 (05:53 -0700)]
st/xa: Use PIPE_FORMAT_R8_UNORM when available

XA has been using L8_UNORM for a8 and yuv component surfaces.
This commit instead makes XA prefer R8_UNORM since it's assumed to have a
higher availability.

Also neither of these formats are suitable as destination formats using
destination alpha blending, so reject those operations.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
9 years agomesa: return initial value for VALIDATE_STATUS if pipe not bound
Tapani Pälli [Tue, 1 Sep 2015 10:53:44 +0000 (13:53 +0300)]
mesa: return initial value for VALIDATE_STATUS if pipe not bound

From OpenGL 4.5 Core spec (7.13):

    "If pipeline is a name that has been generated (without subsequent
    deletion) by GenProgramPipelines, but refers to a program pipeline
    object that has not been previously bound, the GL first creates a
    new state vector in the same manner as when BindProgramPipeline
    creates a new program pipeline object."

I interpret this as "If GetProgramPipelineiv gets called without a
bound (but valid) pipeline object, the state should reflect initial
state of a new pipeline object." This is also expected behaviour by
ES31-CTS.sepshaderobjs.PipelineApi conformance test.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
9 years agomesa: return initial value for PROGRAM_SEPARABLE when not linked
Tapani Pälli [Tue, 1 Sep 2015 10:53:43 +0000 (13:53 +0300)]
mesa: return initial value for PROGRAM_SEPARABLE when not linked

From OpenGL ES 3.1 spec (7.12):

    "Most properties set within program objects are specified not to
    take effect until the next call to LinkProgram or ProgramBinary.
    Some properties further require a successful call to either of
    these commands before taking effect. GetProgramiv returns the
    properties currently in effect for program, which may differ from
    the properties set within program since the most recent call to
    LinkProgram or ProgramBinary, which have not yet taken effect. If
    there has been no such call putting changes to pname into effect,
    initial values are returned."

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
9 years agomesa: enable query of PROGRAM_PIPELINE_BINDING for ES 3.1
Tapani Pälli [Mon, 14 Sep 2015 07:46:01 +0000 (10:46 +0300)]
mesa: enable query of PROGRAM_PIPELINE_BINDING for ES 3.1

Specified in OpenGL ES 3.1 spec, Table 23.32: Program Object State.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
9 years agonir: support indirect indexing samplers in struct arrays
Timothy Arceri [Wed, 26 Aug 2015 12:18:36 +0000 (22:18 +1000)]
nir: support indirect indexing samplers in struct arrays

As a bonus we get indirect support for arrays of arrays for free.

V5: couple of small clean-ups suggested by Jason.

V4: fix struct member location caclulation, use nir_ssa_def rather than
nir_src for the indirect as suggested by Jason

V3: Use nir_instr_rewrite_src() with empty src rather then clearing
the use_link list directly for the old indirects as suggested by Jason

V2: Fixed validation error in debug build

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoglsl: add helper for calculating offsets for struct members
Timothy [Fri, 11 Sep 2015 21:33:27 +0000 (07:33 +1000)]
glsl: add helper for calculating offsets for struct members

V2: update comments

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoglsl: make variables private
Timothy Arceri [Tue, 1 Sep 2015 05:52:10 +0000 (15:52 +1000)]
glsl: make variables private

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoglsl: store uniform slot id in var location field
Timothy Arceri [Sun, 30 Aug 2015 02:50:34 +0000 (12:50 +1000)]
glsl: store uniform slot id in var location field

This will allow us to access the uniform later on without resorting to
building a name string and looking it up in UniformHash.

V3: remove line wrap change from this patch

V2: store slot number for all non-UBO uniforms to make code more
consitent, renamed explicit_binding to explicit_location and added
comment about what it does. Store the location at every shader stage.
Updated data.location comments in ir/nir.h.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoglsl: assign hidden uniforms their slot id earlier
Timothy Arceri [Wed, 2 Sep 2015 01:29:11 +0000 (11:29 +1000)]
glsl: assign hidden uniforms their slot id earlier

This is required so that the next patch can safely assign the slot id
to the var.

The ids are now assigned in the order we want before allocating storage
so there is no need to sort the storage array and move things around.

V2: rename variable to make code easier to follow as suggested by Jason

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoglsl: order indices for samplers inside a struct array
Timothy Arceri [Sun, 30 Aug 2015 02:49:46 +0000 (12:49 +1000)]
glsl: order indices for samplers inside a struct array

This allows the correct offset to be easily calculated for indirect
indexing when a struct array contains multiple samplers, or any crazy
nesting.

The indices for the folling struct will now look like this:
Sampler index: 0 Name: s[0].tex
Sampler index: 1 Name: s[1].tex
Sampler index: 2 Name: s[0].si.tex
Sampler index: 3 Name: s[1].si.tex
Sampler index: 4 Name: s[0].si.tex2
Sampler index: 5 Name: s[1].si.tex2

Before this change it looked like this:
Sampler index: 0 Name: s[0].tex
Sampler index: 3 Name: s[1].tex
Sampler index: 1 Name: s[0].si.tex
Sampler index: 4 Name: s[1].si.tex
Sampler index: 2 Name: s[0].si.tex2
Sampler index: 5 Name: s[1].si.tex2

struct S_inner {
   sampler2D tex;
   sampler2D tex2;
};

struct S {
   sampler2D tex;
   S_inner si;
};

uniform S s[2];

V3: Update comments with suggestions from Jason

V2: rename struct array counter to have better name

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
9 years agoRevert "mesa/extensions: restrict GL_OES_EGL_image to GLES"
Dave Airlie [Wed, 16 Sep 2015 20:55:31 +0000 (06:55 +1000)]
Revert "mesa/extensions: restrict GL_OES_EGL_image to GLES"

This reverts commit 48961fa3ba37999a6f8fd812458b735e39604a95.

glamor/Xwayland use this, the spec saying something when it
was written, and the fact that the comment says Mesa relies on it
hasn't changed.

I also don't have a copy of this patch in my mail archive, which
seems wierd, did it get posted to mesa-dev?

Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agovc4: Only build in simulator mode if we find pkg-config for it.
Eric Anholt [Wed, 16 Sep 2015 19:51:00 +0000 (15:51 -0400)]
vc4: Only build in simulator mode if we find pkg-config for it.

This will let other developers build it x86 for build-testing purposes.

9 years agofreedreno/a3xx: use NUM_USER_CLIP_PLANES helper instead of magic number
Ilia Mirkin [Wed, 16 Sep 2015 18:19:21 +0000 (14:19 -0400)]
freedreno/a3xx: use NUM_USER_CLIP_PLANES helper instead of magic number

Use the helper from the newly-updated generated header file.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
9 years agofreedreno/a3xx: fix blending of L8 format
Ilia Mirkin [Mon, 14 Sep 2015 05:59:01 +0000 (01:59 -0400)]
freedreno/a3xx: fix blending of L8 format

Even though luminance formats don't have alpha, we still want the alpha
output to go to the blender. This fixes the luminance blending tests.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0" <mesa-stable@lists.freedesktop.org>