mesa.git
8 years agost/mesa: implement a simple cache for glDrawPixels
Brian Paul [Fri, 19 Feb 2016 15:51:51 +0000 (08:51 -0700)]
st/mesa: implement a simple cache for glDrawPixels

Instead of discarding the texture we created, keep it around in case
the next glDrawPixels draws the same image again.  This is intended
to help application which draw the same image several times in a row,
either within a frame or subsequent frames.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
8 years agollvmpipe: add a few const qualifiers
Brian Paul [Fri, 19 Feb 2016 15:51:51 +0000 (08:51 -0700)]
llvmpipe: add a few const qualifiers

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
8 years agotrace: assorted whitespace and formatting fixes
Brian Paul [Fri, 19 Feb 2016 00:30:03 +0000 (17:30 -0700)]
trace: assorted whitespace and formatting fixes

Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
8 years agotrace: remove unneeded inline qualifiers
Brian Paul [Fri, 19 Feb 2016 00:30:03 +0000 (17:30 -0700)]
trace: remove unneeded inline qualifiers

Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
8 years agoglsl: fix emit_inline_matrix_constructor for doubles
Iago Toral Quiroga [Fri, 19 Feb 2016 08:16:14 +0000 (09:16 +0100)]
glsl: fix emit_inline_matrix_constructor for doubles

Specifically, for the case where we initialize a dmat with a source
matrix that has fewer columns/rows.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoglsl: Mark float constants as such
Iago Toral Quiroga [Fri, 19 Feb 2016 08:18:41 +0000 (09:18 +0100)]
glsl: Mark float constants as such

So we don't generate double to float conversion code

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoglsl: fix indentation in emit_inline_matrix_constructor
Iago Toral Quiroga [Fri, 19 Feb 2016 08:14:19 +0000 (09:14 +0100)]
glsl: fix indentation in emit_inline_matrix_constructor

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoglsl: fix standalone compiler
Rob Clark [Wed, 17 Feb 2016 20:59:12 +0000 (15:59 -0500)]
glsl: fix standalone compiler

Need to set some non-zero limits for MaxCombinedUniformComponents,
otherwise we hit an "Too many <type> shader uniform components" error
in the linker.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
8 years agost/mesa: disable depth/stencil/alpha tests in PBO upload
Nicolai Hähnle [Thu, 18 Feb 2016 19:31:38 +0000 (14:31 -0500)]
st/mesa: disable depth/stencil/alpha tests in PBO upload

Noticed by Brian Paul.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agosvga: allow non-contiguous VS input declarations
Brian Paul [Thu, 18 Feb 2016 15:41:16 +0000 (08:41 -0700)]
svga: allow non-contiguous VS input declarations

This fixes a glDrawPixels regression since b63fe0552b5f.  The new
quad-drawing utility code uses 3 vertex attributes (xyz, rgba, st).
For glDrawPixels path we don't use the rgba attribute so there's a
gap in the TGSI VS input declarations (INPUT[0] = pos, INPUT[2] =
texcoord).  The TGSI->VGPU10 translations code did not handle this
correctly.  I missed this because my VM was configured for HWv11
while testing.

Another way to fix this would be to change the tgsi_scan.c code so
that the tgsi_shader_info::num_inputs (and num_outputs) included
the unused inputs/outputs.  These counts would then actually be
"max input register index + 1" rather than "number of used inputs".
But that change could impact all drivers so put it off for now.

No regressions found with piglit or typical GL apps.

v2: also update alloc_system_value_index() to use info.file_max[]

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
8 years agogallivm: Check whether to stop disassemble only for x86
Oded Gabbay [Thu, 18 Feb 2016 14:39:06 +0000 (16:39 +0200)]
gallivm: Check whether to stop disassemble only for x86

Because the if statement that checks whether we have a return
statement is valid only on x86, surround it with X86 or X86-64
arch defines

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
8 years agogallivm: use sstream for dissasembling
Oded Gabbay [Thu, 18 Feb 2016 13:53:23 +0000 (15:53 +0200)]
gallivm: use sstream for dissasembling

Currently, disassemble() directly prints to stdout. This has broke the
profiling support for llvmpipe JIT code.

This patch redirects the output to an sstream object, which is then
either gets printed to stdout (for assembly debugging) or gets written
to a file in /tmp/ (for profiling support).

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
8 years agotrace: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 18:01:03 +0000 (13:01 -0500)]
trace: fix new gcc6 warnings

src/gallium/drivers/trace/tr_context.c:1713:39: warning: ‘rbug_blocker_flags’ defined but not used [-Wunused-const-variable]
 static const struct debug_named_value rbug_blocker_flags[] = {
                                       ^~~~~~~~~~~~~~~~~~

Note that use of rbug_blocker_flags was removed in:

commit 5494332128da0b2826e85df5eeaa878bb5c30a4e
Author: Jakob Bornecrantz <jakob@vmware.com>
Date:   Wed May 12 19:26:19 2010 +0100

    trace: Remove rbug from trace

Signed-off-by: Rob Clark <robdclark@gmail.com>
8 years agogallium/auxiliary: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 17:54:03 +0000 (12:54 -0500)]
gallium/auxiliary: fix new gcc6 warnings

src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c: In function ‘mm_bufmgr_create_from_buffer’:
src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c:288:4:
warning: statement is indented as if it were guarded by... [-Wmisleading-indentation]
    if(mm->map)
    ^~
src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c:286:1: note:
...this ‘if’ clause, but it is not
 if(mm->heap)
 ^~

Signed-off-by: Rob Clark <robdclark@gmail.com>
8 years agogallium/hud: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 17:50:27 +0000 (12:50 -0500)]
gallium/hud: fix new gcc6 warnings

src/gallium/auxiliary/hud/font.c:234:22: warning: ‘Fixed8x13_Character_159’ defined but not used [-Wunused-const-variable]
 static const GLubyte Fixed8x13_Character_159[] = {  9,  0,  0,  0,  0, 0,  0,170,  0,  0,  0,130,  0,  0,  0,130,  0,  0,  0,130,  0,  0, 0,170,  0,  0,  0,  0,  0};
                      ^~~~~~~~~~~~~~~~~~~~~~~
.... many more..

These are simply unused, just #if 0 them out for now, in case someone
wants to use them in the future.

Signed-off-by: Rob Clark <robdclark@gmail.com>
8 years agomesa: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 18:42:41 +0000 (13:42 -0500)]
mesa: fix new gcc6 warnings

src/mesa/main/texstore.c:92:22: warning: ‘map_1032’ defined but not used [-Wunused-const-variable]
 static const GLubyte map_1032[6] = { 1, 0, 3, 2, ZERO, ONE };
                      ^~~~~~~~
src/mesa/main/texstore.c:91:22: warning: ‘map_3210’ defined but not used [-Wunused-const-variable]
 static const GLubyte map_3210[6] = { 3, 2, 1, 0, ZERO, ONE };
                      ^~~~~~~~
src/mesa/main/texstore.c:90:22: warning: ‘map_identity’ defined but not used [-Wunused-const-variable]
 static const GLubyte map_identity[6] = { 0, 1, 2, 3, ZERO, ONE };
                      ^~~~~~~~~~~~

These appear to be unused since:

commit 8ec6534b266549cdc2798e2523bf6753924f6cde
Author:     Iago Toral Quiroga <itoral@igalia.com>
AuthorDate: Wed Oct 15 13:42:11 2014 +0200

    mesa: Use _mesa_format_convert to implement texstore_rgba.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agoglsl: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 18:31:27 +0000 (13:31 -0500)]
glsl: fix new gcc6 warnings

src/compiler/glsl/lower_discard_flow.cpp:79:1: warning: ‘ir_visitor_status {anonymous}::lower_discard_flow_visitor::visit_enter(ir_loop_jump*)’ defined but not used [-Wunused-function]
 lower_discard_flow_visitor::visit_enter(ir_loop_jump *ir)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~

The base class method that was intended to be overridden was
'visit(ir_loop_jump *ir)', not visit_enter().

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agoglsl: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 18:35:58 +0000 (13:35 -0500)]
glsl: fix new gcc6 warnings

src/compiler/glsl/ast_to_hir.cpp: In function ‘unsigned int ast_process_struct_or_iface_block_members(exec_list*, _mesa_glsl_parse_state*, exec_list*, glsl_struct_field**, bool, glsl_matrix_layout, bool, ir_variable_mode, ast_type_qualifier*,
unsigned int, unsigned int)’:
src/compiler/glsl/ast_to_hir.cpp:6339:52: warning: ‘first_member_has_explicit_location’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             if (!layout->flags.q.explicit_location &&
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
                 ((first_member_has_explicit_location &&
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   !qual->flags.q.explicit_location) ||
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  (!first_member_has_explicit_location &&
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   qual->flags.q.explicit_location))) {
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agoi965: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 18:18:44 +0000 (13:18 -0500)]
i965: fix new gcc6 warnings

src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp:244:1: warning:
‘void {anonymous}::fs_copy_prop_dataflow::dump_block_data() const’ defined but not used [-Wunused-function]
 fs_copy_prop_dataflow::dump_block_data() const
 ^~~~~~~~~~~~~~~~~~~~~

From looking at git history, it looks like this is intended to be unused
(ie. just for adding on-demand debug prints)

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agoutil: fix new gcc6 warnings
Rob Clark [Tue, 16 Feb 2016 17:45:04 +0000 (12:45 -0500)]
util: fix new gcc6 warnings

src/util/hash_table.h:111:23: warning: ‘_mesa_fnv32_1a_offset_bias’ defined but not used [-Wunused-const-variable]
 static const uint32_t _mesa_fnv32_1a_offset_bias = 2166136261u;
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agoglcpp: Disallow "defined" as a macro name.
Kenneth Graunke [Thu, 18 Feb 2016 01:15:23 +0000 (17:15 -0800)]
glcpp: Disallow "defined" as a macro name.

Both GCC and Clang disallow this, and glslang has recently started
disallowing it as well.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94188
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
8 years agogallium/cso: only enable compute shaders when TGSI is supported
Samuel Pitoiset [Wed, 17 Feb 2016 23:18:29 +0000 (00:18 +0100)]
gallium/cso: only enable compute shaders when TGSI is supported

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94186
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoAndroid: disable unused-parameter warning
Rob Herring [Fri, 29 Jan 2016 18:52:27 +0000 (12:52 -0600)]
Android: disable unused-parameter warning

Android builds with -Wunused-parameter enabled which results in spewing
lots of warnings. Disable it so more meaningful warnings are more visible.

Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoAndroid: enable building on arm64
Rob Herring [Tue, 2 Feb 2016 20:45:09 +0000 (14:45 -0600)]
Android: enable building on arm64

Use the LOCAL_CFLAGS_{32/64} instead of arch specific variants to define
the DEFAULT_DRIVER_DIR. This enables building for arm64.

Cc: Chih-Wei Huang <cwhuang@android-x86.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoAndroid: Fix building secondary arch in mixed 32/64-bit builds
Rob Herring [Tue, 2 Feb 2016 20:45:08 +0000 (14:45 -0600)]
Android: Fix building secondary arch in mixed 32/64-bit builds

TARGET_CC is not defined for the secondary arch on combined 32/64-bit
builds. The build system uses 2ND_TARGET_CC instead and it is not meant
to be used in module makefiles. LOCAL_CC was used to provide C only
flags as -std=c99 is not valid for C++ files. Since Android 4.4,
LOCAL_CONLYFLAGS was added to set compiler flags on C files only, so it
can be used now instead of LOCAL_CC.

This will break on pre-4.4 versions of Android, but it unlikely anyone
is using current Mesa with such an old version of Android.

Cc: Chih-Wei Huang <cwhuang@android-x86.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl: android: clean-up config attribute setting
Rob Herring [Tue, 2 Feb 2016 20:23:10 +0000 (14:23 -0600)]
egl: android: clean-up config attribute setting

Pass the additional config attributes to dri2_add_config to set them
instead of open coding them. This is in preparation to add more attributes.

Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl: android: fix visuals declaration
Varad Gautam [Tue, 2 Feb 2016 20:23:09 +0000 (14:23 -0600)]
egl: android: fix visuals declaration

Signed-off-by: Varad Gautam <varadgautam@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoAndroid: fix build break in libmesa_program
Rob Herring [Mon, 15 Feb 2016 14:24:43 +0000 (08:24 -0600)]
Android: fix build break in libmesa_program

Commit 5fd848f6c9ee ("program: Use _mesa_geometric_samples to calculate
gl_NumSamples") broken Android builds. Add the missing include path "main"
to framebuffer.h like other includes in prog_statevars.c.

Cc: Neil Roberts <neil@linux.intel.com>
Cc: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Neil Roberts <neil@linux.intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agomesa: gl_NumSamples should always be at least one
Ilia Mirkin [Tue, 16 Feb 2016 06:18:30 +0000 (01:18 -0500)]
mesa: gl_NumSamples should always be at least one

From ARB_sample_shading:

    "gl_NumSamples is the total number of samples in the framebuffer,
     or one if rendering to a non-multisample framebuffer"

So make sure to always pass in at least 1.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Edward O`Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Neil Roberts <neil@linux.intel.com>
8 years agocompiler/glsl: Fix uniform location counting.
Plamena Manolova [Thu, 11 Feb 2016 13:00:02 +0000 (15:00 +0200)]
compiler/glsl: Fix uniform location counting.

This patch moves the calculation of current uniforms to
link_uniforms, which makes use of UniformRemapTable which
stores all the reserved uniform locations.

Location assignment for implicit uniforms now tries to use
any gaps left in the table after the location assignment
for explicit uniforms. This gives us more space to store more
uniforms.

Patch is based on earlier patch with following changes/additions:

   1: Move the counting of explicit locations to
      check_explicit_uniform_locations and then pass
      the number to link_assign_uniform_locations.
   2: Count the number of empty slots in UniformRemapTable
      and store them in a list_head.
   3: Try to find an empty slot for implicit locations from
      the list, if that fails resize UniformRemapTable.

Fixes following CTS tests:
   ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max
   ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max-array

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Signed-off-by: Plamena Manolova <plamena.manolova@intel.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93696

8 years agogallivm, tgsi: provide fake sample_i_ms implementations
Roland Scheidegger [Wed, 17 Feb 2016 19:42:11 +0000 (20:42 +0100)]
gallivm, tgsi: provide fake sample_i_ms implementations

Just like the rest of the msaa "implementation" it's just fake for now...

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: new st_DrawAtlasBitmaps() function for drawing bitmap text
Brian Paul [Wed, 3 Feb 2016 16:40:08 +0000 (09:40 -0700)]
st/mesa: new st_DrawAtlasBitmaps() function for drawing bitmap text

This basically saves the current pipeline state, sets up state for
rendering, constructs a set of textured quads, renders, then restores
the previous pipeline state.

It shouldn't be hard to implement a similar function for non-gallium
drives.  With some code refactoring, the vertex definition code could
probably be shared.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agomesa: implement a display list / glBitmap texture atlas
Brian Paul [Wed, 3 Feb 2016 16:35:42 +0000 (09:35 -0700)]
mesa: implement a display list / glBitmap texture atlas

This improves the performance of applications which use glXUseXFont()
or wglUseFontBitmaps() and glCallLists() to draw bitmap text.

Basically, we collect all the glBitmap images from the display lists
and put them into a texture atlas.  To render the bitmaps for a
glCallLists() command, we render a set of textured quads where each
quad is textured with one bitmap image.  Actually, the rendering part
has to be done by the Mesa driver or Mesa/gallium state tracker.

Note that GLUT demos that use glutBitmapCharacter() don't benefit
from this.

v2, per Nicolai Hähnle:
- check the max tex rect size is at least 1024.
- add comment in dd.h that texture_rectangle is required.
- in _mesa_DeleteLists(), try to delete the atlas before the list(s)

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agost/mesa: apply DepthMode swizzle to stencil texturing as well
Ilia Mirkin [Tue, 16 Feb 2016 23:58:42 +0000 (18:58 -0500)]
st/mesa: apply DepthMode swizzle to stencil texturing as well

Gallium doesn't present these as GL_RED-style. A swizzle is necessary to
present the proper data in the unused components.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
8 years agoi965/skl: Update Skylake renderer strings
Ben Widawsky [Tue, 16 Feb 2016 23:08:40 +0000 (15:08 -0800)]
i965/skl: Update Skylake renderer strings

Also adds some of the Iris/Pro parts which we previously didn't have named.

v2: 0x192d is gt3, not gt4
Adding some 'e' tags for eDRAM parts

Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
Acked-by: Michał Winiarski <michal.winiarski@intel.com>
8 years agoi965/skl: Add two missing device IDs
Ben Widawsky [Tue, 16 Feb 2016 23:10:24 +0000 (15:10 -0800)]
i965/skl: Add two missing device IDs

The Iris part is left unbranded because we did not have these with original SKL.

v2: 0x192d is gt3, not gt4

v3: Forgot to update the temporary brand string when I did v2.

Cc: "11.0 11.1" <mesa-stable@lists.freedesktop.org
Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
Acked-by: Michał Winiarski <michal.winiarski@intel.com>
8 years agomesa: allow multisampled format info to be returned on GLES 3.1
Ilia Mirkin [Thu, 11 Feb 2016 20:02:30 +0000 (15:02 -0500)]
mesa: allow multisampled format info to be returned on GLES 3.1

The restriction on multisampled integer texture formats only applies to
GLES 3.0, so don't apply it to GLES 3.1 contexts. This fixes a slew of

dEQP-GLES31.functional.state_query.internal_format.*

tests, which now all pass.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
8 years agoi965: Extract push constant state to a new file
Ben Widawsky [Thu, 30 Jul 2015 21:31:20 +0000 (14:31 -0700)]
i965: Extract push constant state to a new file

Every stage has a corresponding 3DSTATE_CONSTANT_XS packet, so having
the code to create and emit push constant buffers in genX_vs_state.c
is a little strange.  Moving it to a separate file seems more logical.

v2 [Ken]: Rebase on master, explain motivation in the commit message.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agoi965: Make emit_minmax return an instruction*.
Matt Turner [Thu, 11 Feb 2016 21:41:58 +0000 (13:41 -0800)]
i965: Make emit_minmax return an instruction*.

And use it in brw_fs_nir.cpp.

8 years agoi965: Lower min/max after optimization on Gen4/5.
Matt Turner [Thu, 11 Feb 2016 20:27:02 +0000 (12:27 -0800)]
i965: Lower min/max after optimization on Gen4/5.

Gen4/5's SEL instruction cannot use conditional modifiers, so min/max
are implemented as CMP + SEL. Handling that after optimization lets us
CSE more.

On Ironlake:

   total instructions in shared programs: 6426035 -> 6422753 (-0.05%)
   instructions in affected programs: 326604 -> 323322 (-1.00%)
   helped: 1411

   total cycles in shared programs: 129184700 -> 129101586 (-0.06%)
   cycles in affected programs: 18950290 -> 18867176 (-0.44%)
   helped: 2419
   HURT: 328

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
8 years agoi965/vec4: Initialize force_writemask_all in vec4_builder().
Matt Turner [Thu, 11 Feb 2016 20:23:53 +0000 (12:23 -0800)]
i965/vec4: Initialize force_writemask_all in vec4_builder().

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
8 years agoradeon/llvm: Add TargetLibraryInfo to the pass manager
Tom Stellard [Thu, 4 Feb 2016 19:37:31 +0000 (19:37 +0000)]
radeon/llvm: Add TargetLibraryInfo to the pass manager

This will prevent optimization passes from introducing unsupported
library calls.

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoradeon/llvm: Set the target triple on the module
Tom Stellard [Thu, 4 Feb 2016 02:34:55 +0000 (02:34 +0000)]
radeon/llvm: Set the target triple on the module

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agogallivm: Add helpers for creating and destroying TargetLibraryInfo
Tom Stellard [Thu, 4 Feb 2016 19:36:50 +0000 (19:36 +0000)]
gallivm: Add helpers for creating and destroying TargetLibraryInfo

This functionality is not exposed via the LLVM C API.

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agonvc0: invalidate all buffers when switching pipe contexts
Samuel Pitoiset [Wed, 17 Feb 2016 20:14:24 +0000 (21:14 +0100)]
nvc0: invalidate all buffers when switching pipe contexts

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agost/mesa: fix up result_src.type when doing i2u/u2i conversions
Ilia Mirkin [Tue, 16 Feb 2016 07:12:29 +0000 (02:12 -0500)]
st/mesa: fix up result_src.type when doing i2u/u2i conversions

Even though it's a no-op, it's important to keep track of the type so
that we can pick the properly-signed op later on.

This fixes dEQP-GLES3.functional.shaders.precision.uint.highp_div_fragment,
which ended up using IDIV instead of UDIV.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: mesa-stable@lists.freedesktop.org
8 years agost/mesa: use cso_set_viewport_dims() in try_pbo_upload_common()
Brian Paul [Tue, 16 Feb 2016 00:27:15 +0000 (17:27 -0700)]
st/mesa: use cso_set_viewport_dims() in try_pbo_upload_common()

Note that this results in a different transformation for the viewport's
Z axis (depth range), but that doesn't matter for this case.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
8 years agoi965/gen7: Use predicated rendering for indirect compute
Jordan Justen [Mon, 15 Feb 2016 23:17:15 +0000 (15:17 -0800)]
i965/gen7: Use predicated rendering for indirect compute

On gen7 (Ivy Bridge, Haswell), we will get a GPU hang if an indirect
dispatch is used, but one of the dimensions is 0.

Therefore we use predicated rendering on the GPGPU_WALKER command to
handle this case.

Fixes piglit test: spec/arb_compute_shader/zero-dispatch-size

From the ARB_compute_shader spec, under DispatchCompute:

"If the work group count in any dimension is zero, no work groups are
 dispatched."

And then for DispatchComputeIndirect:

... "is equivalent (assuming no errors are generated) to calling
DispatchCompute with <num_groups_x>, <num_groups_y> and
<num_groups_z>" ...

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94100
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ben Widawsky <benjamin.widawsky@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agofreedreno: expose time-elapsed query
Rob Clark [Wed, 10 Feb 2016 19:40:24 +0000 (14:40 -0500)]
freedreno: expose time-elapsed query

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/a4xx: implement time-elapsed query
Rob Clark [Wed, 10 Feb 2016 19:40:01 +0000 (14:40 -0500)]
freedreno/a4xx: implement time-elapsed query

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/a4xx: better occlusion/sample counting
Rob Clark [Sun, 14 Feb 2016 14:59:41 +0000 (09:59 -0500)]
freedreno/a4xx: better occlusion/sample counting

This seems to give more reliable results.  More similar to what we do on
a3xx, although I think it breaks the a3xx theory that the four sets of
results map to each MRT (since we appear to still only have four sets on
a4xx).  The divide-by-two is a bit odd, but seems to be needed for some
reason.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/query: fix refcnt'ing issue
Rob Clark [Sat, 13 Feb 2016 18:46:05 +0000 (13:46 -0500)]
freedreno/query: fix refcnt'ing issue

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/query: some queries don't have ->begin_query()
Rob Clark [Sun, 14 Feb 2016 15:02:13 +0000 (10:02 -0500)]
freedreno/query: some queries don't have ->begin_query()

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/query: align counter snapshot locations
Rob Clark [Sat, 13 Feb 2016 23:29:28 +0000 (18:29 -0500)]
freedreno/query: align counter snapshot locations

Some hw queries need their sample memory locations to have certain
alignment.  At the moment that isn't an issue, since the only hw query
is occlusion, so all samples have the same size.  But when others are
added with different sample sizes, this starts to be a problem.

All current and immediately upcoming hw queries simply need their
sample address aligned to their size, so let's use that for now.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/query: add optional enable hook
Rob Clark [Wed, 10 Feb 2016 19:31:59 +0000 (14:31 -0500)]
freedreno/query: add optional enable hook

Add enable hook for hw query providers.  Some will need to configure
perfctr selector registers, which we want to do at the start of the
submit.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno: query max gpu freq
Rob Clark [Wed, 10 Feb 2016 18:25:32 +0000 (13:25 -0500)]
freedreno: query max gpu freq

This will be needed to support converting from cycle counts to time for
performance related queries (initially time-elapsed, but there are some
additional performance counters that could be wired up).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno: update generated headers
Rob Clark [Wed, 10 Feb 2016 17:07:02 +0000 (12:07 -0500)]
freedreno: update generated headers

Mostly to pull in perf ctrs.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
8 years agofreedreno/ir3: fix new gcc6 errors
Rob Clark [Tue, 16 Feb 2016 18:11:25 +0000 (13:11 -0500)]
freedreno/ir3: fix new gcc6 errors

src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c: In function ‘emit_tex’:
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c:1368:26: warning: unused variable ‘const_off’ [-Wunused-variable]
  struct ir3_instruction *const_off[4];
                          ^~~~~~~~~
unused since:

commit 8750299a420af76cebd3067f6f603eacde06ae06
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Tue Feb 9 14:51:28 2016 -0800

    nir: Remove the const_offset from nir_tex_instr

Signed-off-by: Rob Clark <robdclark@gmail.com>
8 years agonv50/ir: we can't do the add to mad conversion when the mul saturates
Karol Herbst [Thu, 28 Jan 2016 15:45:58 +0000 (16:45 +0100)]
nv50/ir: we can't do the add to mad conversion when the mul saturates

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonv50/ir: optimize neg(and(set, 1)) to set
Karol Herbst [Sat, 23 Jan 2016 23:16:05 +0000 (00:16 +0100)]
nv50/ir: optimize neg(and(set, 1)) to set

helps shaders in saints row IV, bioshock infinite and shadow warrior

total instructions in shared programs : 1914931 -> 1903900 (-0.58%)
total gprs used in shared programs    : 247920 -> 247785 (-0.05%)
total local used in shared programs   : 5673 -> 5673 (0.00%)
total bytes used in shared programs   : 17558272 -> 17457320 (-0.57%)

                local        gpr       inst      bytes
    helped           0         137         719         719
      hurt           0          12           0           0

v2: remove this opt for OP_SLCT and check against float for OP_SET
v3: simplified the code

Signed-off-by: Karol Herbst <nouveau@karolherbst.de>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonv50/ir: fix quadop emission in the presence of predication
Ilia Mirkin [Tue, 16 Feb 2016 07:26:54 +0000 (02:26 -0500)]
nv50/ir: fix quadop emission in the presence of predication

When there's a predicate, it just goes onto the sources list. If the
quadop only has a single regular source, we will end up thinking that
the predicate is the second source. Check explicitly for the predSrc so
that we don't accidentally emit the wrong thing.

This fixes a bunch of dEQP-GLES3.functional.shaders.derivate.* tests.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
8 years agonv50,nvc0: enable/disable seamless cubemap texturing as requested
Ilia Mirkin [Sun, 14 Feb 2016 03:14:02 +0000 (22:14 -0500)]
nv50,nvc0: enable/disable seamless cubemap texturing as requested

In a situation where the seamless setting isn't available on a
per-texture basis (G200+ Teslas, and all Fermis), assume that all
samplers will have it identically set, and enable accordingly.

This fixes arb_seamless_cubemap piglit test on Fermi and Tesla.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agost/mesa: add missing ETC2 entries to format_map
Rob Clark [Tue, 16 Feb 2016 16:43:38 +0000 (11:43 -0500)]
st/mesa: add missing ETC2 entries to format_map

Noticed by Ilia when I was trying to figure out why some app was failing
to use ETC2.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonvc0: enable compute support on GK110:GM200 with an envvar
Samuel Pitoiset [Sat, 13 Feb 2016 23:32:34 +0000 (00:32 +0100)]
nvc0: enable compute support on GK110:GM200 with an envvar

Without this NVF0_COMPUTE environment variable, compute support is
initialized by default and this is not what we want for now because
it might break 3D. It will be enabled by default once we are sure it
won't break anything.

Please note that compute support on GM200+ is not enabled yet because
it needs to be double-checked.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonvc0: add compute support for GM107
Samuel Pitoiset [Sat, 13 Feb 2016 23:19:13 +0000 (00:19 +0100)]
nvc0: add compute support for GM107

Fortunately, compute support on GM107 is very close to GK110, except
the GK110_COMPUTE.UNK02C4 which is invalid and should not be used.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agonvc0: fix compute state initialization on GK110+
Samuel Pitoiset [Sat, 13 Feb 2016 23:14:34 +0000 (00:14 +0100)]
nvc0: fix compute state initialization on GK110+

Because our firmware doesn't support the GK110_COMPUTE.FIRMWARE[0x6]
method the GPU hangs when it is used. Removing it fix the issue and
allow to launch compute shaders on GK110+.

Tested on GK208 and GM107.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agoglsl: remove duplicate interpolation_string() function
Timothy Arceri [Sat, 13 Feb 2016 22:51:31 +0000 (09:51 +1100)]
glsl: remove duplicate interpolation_string() function

We already have one in the IR code that can be used everywhere its
needed in the AST code so remove the one from the AST.

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
8 years agoglsl: remove unused helper
Timothy Arceri [Mon, 15 Feb 2016 07:38:29 +0000 (18:38 +1100)]
glsl: remove unused helper

Seems to have become unused when i965 moved to NIR.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
8 years agoglsl: set user defined varyings to smooth by default in ES
Timothy Arceri [Tue, 16 Feb 2016 00:03:56 +0000 (11:03 +1100)]
glsl: set user defined varyings to smooth by default in ES

This is usually handled by the backends in order to handle the
various interactions with the gl_*Color built-ins.

The problem is this means linking will fail if one side on the
interface adds the smooth qualifier to the varying and the other
side just uses the default even though they match.

This fixes various deqp tests. The spec is not clear what to for
desktop GL so leave it as is for now.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92743

8 years agogm107/ir: add ATOM CAS emission
Samuel Pitoiset [Tue, 16 Feb 2016 17:53:11 +0000 (18:53 +0100)]
gm107/ir: add ATOM CAS emission

This fixes the following dEQP test and the other compswap variants.

dEQP-GLES31.functional.ssbo.atomic.compswap.highp_int

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agost/mesa: do not init limits when compute shaders are not supported
Samuel Pitoiset [Mon, 15 Feb 2016 21:40:46 +0000 (22:40 +0100)]
st/mesa: do not init limits when compute shaders are not supported

When the number of uniform blocks is less than 12,
ARB_uniform_buffer_object can't be enabled and the maximum GL version
is not even 3.1...

This fixes a regression introduced in 7c79c1e (st/mesa: add compute
shader state) if the maximum number of uniform blocks allowed for
compute shaders is less than 12. This happens on Kepler but this might
also affect other Gallium drivers.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reported-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
Tested-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
8 years agomesa: Don't call driver when there is no compute work
Jordan Justen [Tue, 16 Feb 2016 16:21:22 +0000 (08:21 -0800)]
mesa: Don't call driver when there is no compute work

The ARB_compute_shader spec says:

  "If the work group count in any dimension is zero, no work groups
   are dispatched."

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agoi965: Set compute shader shared memory max to 64k
Jordan Justen [Sat, 13 Feb 2016 22:25:33 +0000 (14:25 -0800)]
i965: Set compute shader shared memory max to 64k

See Ivy Bridge PRM, Volume 2, Part 2, 1.8.4 INTERFACE_DESCRIPTOR_DATA:

DWORD 5, bits 20:16: "This field indicates how much shared local
memory the thread group requires. The amount is specified in 4k
blocks, but only powers of 2 are allowed: 0, 4k, 8k, 16k, 32k and 64k
per half-slice."

For Haswell, see Volume 2d, INTERFACE_DESCRIPTOR_DATA:

DWORD 5, bits 20:16: With text identical to the Ivy Bridge PRM.

For Broadwell, see Volume 2d, INTERFACE_DESCRIPTOR_DATA:

DWORD 6, bits 20:16: With text identical to the Ivy Bridge PRM.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ben Widawsky <benjamin.widawsky@intel.com>
8 years agost/mesa: use new CSO_BITS_ALL_SHADERS
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use new CSO_BITS_ALL_SHADERS

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agocso: add CSO_BITS_ALL_SHADERS
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
cso: add CSO_BITS_ALL_SHADERS

For saving/restoring all shader stages.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agost/mesa: simplify st->ctx, ctx->st usage in a various places
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: simplify st->ctx, ctx->st usage in a various places

8 years agost/mesa: use _mesa_geometric_width/height() in glDrawPixels code
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use _mesa_geometric_width/height() in glDrawPixels code

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agost/mesa: rename attr variable in st_DrawTex()
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: rename attr variable in st_DrawTex()

Rename to 'tex_attr' to be a bit more clear.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: use 'cso' instead of 'st->cso_context' in st_DrawTex()
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use 'cso' instead of 'st->cso_context' in st_DrawTex()

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: fix whitespace and add comment in st_DrawTex()
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: fix whitespace and add comment in st_DrawTex()

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: used _mesa_num_tex_faces() in st_finalize_texture()
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: used _mesa_num_tex_faces() in st_finalize_texture()

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agocso: make most of the cso_save/restore_x() functions static
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
cso: make most of the cso_save/restore_x() functions static

Users of the CSO save/restore facility all use the new
cso_save/restore_state() functions instead.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agopostprocess: use new cso_save/restore_state() functions
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
postprocess: use new cso_save/restore_state() functions

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agogallium/hud: use new cso_save/restore_state() functions
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
gallium/hud: use new cso_save/restore_state() functions

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agogallium/util: use new cso_save/restore_state() functions
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
gallium/util: use new cso_save/restore_state() functions

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: use cso_save/restore_state() in st_cb_texture.c
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use cso_save/restore_state() in st_cb_texture.c

This simplifies the error handling code too.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: use new cso_save/restore_state() functions
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use new cso_save/restore_state() functions

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agocso: add new cso_save/restore_state() functions
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
cso: add new cso_save/restore_state() functions

cso_save_state() takes a bitmask of state items to save.  Calling
cso_restore_state() restores those states.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agocso: remove comment
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
cso: remove comment

There's a similar comment just a few lines before.

8 years agost/mesa: use new cso_set_viewport_dims() helper
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use new cso_set_viewport_dims() helper

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agocso: add new cso_set_viewport_dims() helper
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
cso: add new cso_set_viewport_dims() helper

To simplify some viewport setting code in the state tracker.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: use 'cso' local var instead of st->cso_context
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: use 'cso' local var instead of st->cso_context

Just a little cleaner.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: consolidate quad drawing code
Brian Paul [Tue, 16 Feb 2016 17:22:32 +0000 (10:22 -0700)]
st/mesa: consolidate quad drawing code

The glClear, glBitmap and glDrawPixels code now use a new st_draw_quad()
helper function.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: overhaul vertex setup for clearing, glDrawPixels, glBitmap
Brian Paul [Tue, 16 Feb 2016 17:22:31 +0000 (10:22 -0700)]
st/mesa: overhaul vertex setup for clearing, glDrawPixels, glBitmap

Define a new st_util_vertex structure which is a bit smaller (9 floats
versus the previous 12 floats per vertex).  Clean up the glClear,
glDrawPixels and glBitmap code that sets up the vertex data and does the
drawing so it's all very similar.  This can lead to more consolidation.

v2: add assertion that vertex buffer slot == 0 to catch possible future
change in cso_get_aux_vertex_buffer_slot() behavior.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agost/mesa: include u_draw.h, not u_draw_quad.h in st_draw.c
Brian Paul [Tue, 16 Feb 2016 17:22:31 +0000 (10:22 -0700)]
st/mesa: include u_draw.h, not u_draw_quad.h in st_draw.c

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
8 years agoconfigure: Bail out on llvm-config component error
Jan Vesely [Fri, 12 Feb 2016 23:58:55 +0000 (18:58 -0500)]
configure: Bail out on llvm-config component error

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoHandle removal of LLVMAddTargetData in SVN revision 260919
Matthew Dawson [Tue, 16 Feb 2016 06:25:20 +0000 (01:25 -0500)]
Handle removal of LLVMAddTargetData in SVN revision 260919

LLVM removed LLVMAddTargetData for the 3.9 release in r260919.  For the two
places in mesa where this is called, only enable the lines when compiling
for less then 3.9.

For the radeon driver, I'm not sure how to check if any other LLVM calls need
to be adjusted.  I think since the target data used is extracted from the
LLVMModule, it isn't necessary to pass it back to LLVM again.

The code does compile, and at least for radeonsi does run OpenGL games.

[ Michel Dänzer: Move #if closer to LLVMAddTargetData in lp_bld_init.c,
  and add HAVE_LLVM < 0x0309 guards around now unused occurrences of TD
  and data_layout ]

Signed-off-by: Matthew Dawson <matthew@mjdsystems.ca>
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com>
8 years agoi965: Expose logic telling if non-msrt mcs is supported
Topi Pohjolainen [Fri, 1 Jan 2016 15:02:00 +0000 (17:02 +0200)]
i965: Expose logic telling if non-msrt mcs is supported

Alos use the opportunity to mark inputs constant. (Context has to be
given as read-write to intel_miptree_supports_non_msrt_fast_clear()
to support debug output).

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Ben Widawsky <benjamin.widawsky@intel.com>
8 years agoi965/gen9: Refactor msrt mcs initialization
Topi Pohjolainen [Thu, 10 Dec 2015 14:03:03 +0000 (16:03 +0200)]
i965/gen9: Refactor msrt mcs initialization

This will be re-used to initialize auxiliary buffers in lossless
compression case.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Ben Widawsky <benjamin.widawsky@intel.com>
8 years agoi965: Add a few assertions on lossless compression
Topi Pohjolainen [Tue, 2 Feb 2016 08:04:34 +0000 (10:04 +0200)]
i965: Add a few assertions on lossless compression

v2 (Ben): Use combination of msaa_layout and number of samples
          instead of introducing explicit type for lossless
          compression (intel_miptree_is_lossless_compressed()).

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Ben Widawsky <benjamin.widawsky@intel.com>