mesa.git
8 years agogallium/tgsi: add missing #include
Marek Olšák [Mon, 17 Oct 2016 10:31:47 +0000 (12:31 +0200)]
gallium/tgsi: add missing #include

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agost/va: set default rt formats when calling vaCreateConfig
Julien Isorce [Mon, 17 Oct 2016 16:33:36 +0000 (17:33 +0100)]
st/va: set default rt formats when calling vaCreateConfig

As specified in va.h, default value should be set on attributes
not present in the input list.

Signed-off-by: Julien Isorce <j.isorce@samsung.com>
Reviewed-by: Mark Thompson <sw@jkqxz.net>
8 years agoi965: Fix gl_InvocationID in dual object GS where invocations == 1.
Kenneth Graunke [Sat, 15 Oct 2016 03:08:47 +0000 (20:08 -0700)]
i965: Fix gl_InvocationID in dual object GS where invocations == 1.

dEQP-GLES31.functional.geometry_shading.instanced.geometry_1_invocations
draws using a geometry shader that specifies

   layout(points, invocations = 1) in;

and then uses gl_InvocationID.  According to the Haswell PRM, the
"GS Instance ID 0" (and 1) thread payload fields are undefined in
dual object mode:

   "If 'dispatch mode' is DUAL_OBJECT this field is not valid."

But there's no point in using them - if there's only one invocation,
the ID will be 0.  So just load a constant.

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agoanv: Get rid of anv_cmd_buffer_emit_state_base_address
Jason Ekstrand [Mon, 17 Oct 2016 17:13:07 +0000 (10:13 -0700)]
anv: Get rid of anv_cmd_buffer_emit_state_base_address

All code that would have once called this can now call the gen-specific
version.  The switching version is no longer needed.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agoanv/cmd_buffer: Move descriptor flushing into genX_cmd_buffer.c
Jason Ekstrand [Mon, 17 Oct 2016 17:11:55 +0000 (10:11 -0700)]
anv/cmd_buffer: Move descriptor flushing into genX_cmd_buffer.c

It really should have gone here all along.  We were trying a bit too hard
to make it gen-agnostic just because it didn't have any #if's.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agoanv/cmd_buffer: Expose ensure_push_constant_*
Jason Ekstrand [Mon, 17 Oct 2016 17:10:26 +0000 (10:10 -0700)]
anv/cmd_buffer: Expose ensure_push_constant_*

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agoanv/cmd_buffer: Unify flush_compute_state across gens
Jason Ekstrand [Mon, 17 Oct 2016 17:03:16 +0000 (10:03 -0700)]
anv/cmd_buffer: Unify flush_compute_state across gens

With one small genxml change, the two versions were basically identical.
The only differences were one #define for HSW+ and a field that is missing
on Haswell but exists everywhere else.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agoanv/cmd_buffer: Move Begin/End/Execute to genX_cmd_buffer.c
Jason Ekstrand [Mon, 17 Oct 2016 16:28:46 +0000 (09:28 -0700)]
anv/cmd_buffer: Move Begin/End/Execute to genX_cmd_buffer.c

vkBeginCommandBuffer and vkCmdExecuteCommands both call into the
gen-specific emit_state_base_address function and vkEndCommandBuffer
belongs with begin.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agoanv/cmd_buffer: Move state base address re-emit into ExecuteCommands
Jason Ekstrand [Mon, 17 Oct 2016 16:14:48 +0000 (09:14 -0700)]
anv/cmd_buffer: Move state base address re-emit into ExecuteCommands

This has two primary advantages.  First, it means that the batch_chain code
knows less about the actual command buffer contents which is good because
improves separation.  Second, it means that it only gets re-emitted once
after all of the secondaries instead of once after each secondary which is
just wasteful.  It also has the advantage of cleaning the code up a bit.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
8 years agodoc/features.txt: factor out radeonsi as GL45 complete
Edward O'Callaghan [Fri, 14 Oct 2016 04:30:50 +0000 (15:30 +1100)]
doc/features.txt: factor out radeonsi as GL45 complete

V2. add i965/hsw+ to list
V3. rebased on master.
V4. 'DONE' -> 'DONE ()'.
V5. remove i965/hsw+ from list :/

Signed-off-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoi965: Silence unused parameter warnings
Ian Romanick [Tue, 11 Oct 2016 00:11:34 +0000 (17:11 -0700)]
i965: Silence unused parameter warnings

brw_link.cpp:76:44: warning: unused parameter ‘shader_type’ [-Wunused-parameter]
                            gl_shader_stage shader_type,
                                            ^
brw_nir.c: In function ‘brw_nir_lower_vs_inputs’:
brw_nir.c:194:55: warning: unused parameter ‘devinfo’ [-Wunused-parameter]
                         const struct gen_device_info *devinfo,
                                                       ^
brw_vec4_visitor.cpp:914:37: warning: unused parameter ‘sampler’ [-Wunused-parameter]
                            uint32_t sampler,
                                     ^
brw_vec4_visitor.cpp:1146:34: warning: unused parameter ‘stream_id’ [-Wunused-parameter]
 vec4_visitor::gs_emit_vertex(int stream_id)
                                  ^

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoglsl: Remove unused function import_prototypes
Ian Romanick [Fri, 14 Oct 2016 17:45:14 +0000 (10:45 -0700)]
glsl: Remove unused function import_prototypes

Once upon a time, this was used to extract prototypes from the shader
containing GLSL built-in functions.  This was removed by f5692f45 in
November 2010 for Mesa 7.10.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoglsl: Remove prototypes for nonexistent functions
Ian Romanick [Fri, 14 Oct 2016 17:38:04 +0000 (10:38 -0700)]
glsl: Remove prototypes for nonexistent functions

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoglsl: Replace assert with unreachable
Ian Romanick [Fri, 2 Sep 2016 20:15:24 +0000 (13:15 -0700)]
glsl: Replace assert with unreachable

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoanv: replace , with ; in anv_batch_emit()
Lionel Landwerlin [Wed, 12 Oct 2016 22:28:03 +0000 (23:28 +0100)]
anv: replace , with ; in anv_batch_emit()

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel: aubinator: use different colors to signal batch start/end
Lionel Landwerlin [Mon, 17 Oct 2016 16:11:04 +0000 (09:11 -0700)]
intel: aubinator: use different colors to signal batch start/end

This makes the stream of commands a bit easier to read.

v2 (Ken): Use bold text on green headers for easier readability;
          swap the green and blue headers so the majority stay blue.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
8 years agost/glsl_to_tgsi: fix [ui]vec[34] conversion to double
Nicolai Hähnle [Thu, 13 Oct 2016 14:40:11 +0000 (16:40 +0200)]
st/glsl_to_tgsi: fix [ui]vec[34] conversion to double

The corresponding opcodes for integers need to be treated the same as F2D.

Fixes GL45-CTS.gpu_shader_fp64.conversions.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agost/glsl_to_tgsi: fix atomic counter addressing
Nicolai Hähnle [Thu, 13 Oct 2016 10:36:42 +0000 (12:36 +0200)]
st/glsl_to_tgsi: fix atomic counter addressing

When more than one atomic counter buffer is in use, UniformStorage[n].opaque
is set up to contain indices that are contiguous across all used buffers.

This appears to be used by i965 via NIR, but for TGSI we do not treat atomic
counter buffers as opaque, so using the data in the opaque array is incorrect.

Fixes GL45-CTS.compute_shader.resource-atomic-counter.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agost/glsl_to_tgsi: fix a corner case of std140 layout in uniform buffers
Nicolai Hähnle [Thu, 13 Oct 2016 07:54:02 +0000 (09:54 +0200)]
st/glsl_to_tgsi: fix a corner case of std140 layout in uniform buffers

See the comment in the code for an explanation. This fixes
GL45-CTS.buffer_storage.map_persistent_draw.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agost/mesa: fix fragment shader output mapping
Nicolai Hähnle [Thu, 13 Oct 2016 07:49:11 +0000 (09:49 +0200)]
st/mesa: fix fragment shader output mapping

Properly handle the case where there is a gap in the assigned output locations,
e.g. a fragment shader writes to color buffer 2 but not to color buffers 0 & 1.

Fixes GL45-CTS.gtf33.GL3Tests.explicit_attrib_location.explicit_attrib_location_pipeline.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoglsl: print non-zero bindings of variables
Nicolai Hähnle [Thu, 13 Oct 2016 13:27:00 +0000 (15:27 +0200)]
glsl: print non-zero bindings of variables

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoradeonsi: unify the constant load paths
Nicolai Hähnle [Thu, 13 Oct 2016 09:26:23 +0000 (11:26 +0200)]
radeonsi: unify the constant load paths

Remove the split between direct and indirect.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoradeonsi: fix indirect loads of 64 bit constants
Nicolai Hähnle [Thu, 13 Oct 2016 09:19:50 +0000 (11:19 +0200)]
radeonsi: fix indirect loads of 64 bit constants

This fixes GL45-CTS.compute_shader.fp64-case3.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agogbm: add a couple missing includes
Eric Engestrom [Mon, 17 Oct 2016 10:39:27 +0000 (11:39 +0100)]
gbm: add a couple missing includes

Needed for memset() and drmIoctl().

Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
8 years agoglsl: fail compilation of compute shaders when unsupported
Iago Toral Quiroga [Fri, 14 Oct 2016 12:21:18 +0000 (14:21 +0200)]
glsl: fail compilation of compute shaders when unsupported

Generally, we only check for the presence of compute shaders during
parsing when we find any language (like layout qualifiers) that are
specific to compute shaders, however, it is possible to define an
empty compute shader does not use any language specific to compute
shaders at all and we should fail the compilation anyway. dEQP checks
this.

This patch adds a check for compute shader availability after we have
parsed the source code. At this point we know the effective GLSL version
and also extensions enabled in the shader.

Fixes a subcase of the following dEQP tests:
dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.compile_compute_shader
dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.compile_compute_shader
dEQP-GLES31.functional.debug.negative_coverage.log.shader.compile_compute_shader

The tests still fail because there is one more subcase that fails that needs
another fix.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
8 years agoegl/android: fix error in droid_add_configs_for_visuals()
Tapani Pälli [Mon, 17 Oct 2016 06:04:56 +0000 (09:04 +0300)]
egl/android: fix error in droid_add_configs_for_visuals()

This was some kind of leftover in commit acd35c8 and format_count
array variable (declared in outer scope) should be used instead.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Fixes: acd35c8758dc73240903 ("egl/android: tweak droid_add_configs_for_visuals()")
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoradeonsi: shorten "shader->selector" to "sel" in si_shader_create
Marek Olšák [Tue, 4 Oct 2016 19:46:00 +0000 (21:46 +0200)]
radeonsi: shorten "shader->selector" to "sel" in si_shader_create

Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoradeonsi: clear DB_RENDER_OVERRIDE
Marek Olšák [Wed, 12 Oct 2016 22:20:43 +0000 (00:20 +0200)]
radeonsi: clear DB_RENDER_OVERRIDE

Vulkan doesn't set these fields even though it doesn't use HiS.
HiS is disabled by programming DB_SRESULTS_COMPARE_STATEn to 0.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
8 years agoglsl: Disable textureOffset(sampler2DArrayShadow, ...) in GLSL ES.
Kenneth Graunke [Sat, 15 Oct 2016 21:47:31 +0000 (14:47 -0700)]
glsl: Disable textureOffset(sampler2DArrayShadow, ...) in GLSL ES.

This has apparently never existed in GLSL ES.

Fixes dEQP-GLES3.functional.shaders.texture_functions.invalid
.textureoffset_sampler2darrayshadow_vec4_ivec2_vertex and
.textureoffset_sampler2darrayshadow_vec4_ivec2_fragment

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98244
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agost/nine: Fix multisample limit check
Axel Davy [Sun, 16 Oct 2016 09:44:09 +0000 (11:44 +0200)]
st/nine: Fix multisample limit check

Fixes regression introduced by
b5603056872708fdd82f1224854097805a01d4c0

The regression prevents some apps to start.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
8 years agovc4: Fix fast clear color packing for 565.
Eric Anholt [Fri, 14 Oct 2016 23:26:25 +0000 (16:26 -0700)]
vc4: Fix fast clear color packing for 565.

Piglit didn't manage to cover this because fbo-clear-formats uses
scissors, so we don't get fast clearing.

8 years agostate_tracker: Fix check for scissor enabled when < 0.
Eric Anholt [Fri, 14 Oct 2016 22:15:13 +0000 (15:15 -0700)]
state_tracker: Fix check for scissor enabled when < 0.

DEQP's clear tests like to give us x + w < 0 or y + h < 0.  Since we
were comparing to an unsigned, it would get promoted to unsigned and come
out as bignum >= width or height and we would clear the whole fb instead
of none of the fb.

Fixes 10 tests under deqp-gles2/functional/color_clear.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
8 years agoegl/surfaceless: Fix comparison between pointer and integer
Chad Versace [Fri, 14 Oct 2016 22:05:19 +0000 (15:05 -0700)]
egl/surfaceless: Fix comparison between pointer and integer

Fixes GCC warning:
  drivers/dri2/platform_surfaceless.c:196:18: warning: comparison
      between pointer and integer

Fixes: 4b8a55809eb ("egl/surfaceless: tweak surfaceless_add_configs_for_visuals()")
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
8 years agoegl/surfaceless: use correct index when accesing the visual
Emil Velikov [Fri, 14 Oct 2016 20:42:00 +0000 (21:42 +0100)]
egl/surfaceless: use correct index when accesing the visual

i is used for the driver_configs, while j is for the visuals.

Fixes: 4b8a55809eb ("egl/surfaceless: tweak surfaceless_add_configs_for_visuals()")
Reported-by: Chad Versace <chadversary@chromium.org>
Tested-by: Chad Versace <chadversary@chromium.org>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoradv/winsys: Fail early on overgrown cs.
Gustaw Smolarczyk [Thu, 13 Oct 2016 20:54:12 +0000 (22:54 +0200)]
radv/winsys: Fail early on overgrown cs.

When !use_ib_bos, we can't easily chain ibs one to another. If the
required cs size grows over 1Mi - 8 dwords just fail the cs so that we
won't assert-fail in radv_amdgpu_winsys_cs_submit later on.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
8 years agoglsl: Drop the ES requirement that VS outputs must be flat qualified.
Kenneth Graunke [Wed, 5 Oct 2016 23:09:54 +0000 (16:09 -0700)]
glsl: Drop the ES requirement that VS outputs must be flat qualified.

Several conformance tests violate this requirement:

ES31-CTS.core.tessellation_shader.max_patch_vertices
ES31-CTS.core.tessellation_shader.tessellation_control_to_tessellation_evaluation.data_pass_through

I submitted a merge request to fix the conformance tests, but Khronos
opted to drop this GLSL ES specific requirement in favor of making flat
qualification of VS outputs optional, matching modern desktop GL.

Note that there were 7 Piglit tests which enforce this rule:
tests/spec/glsl-es-3.00/compiler/interpolation/qualifiers/*nonflat*
but these were deleted in Piglit commit acc0a2fabbd714bc704c16f1675e7c0.

Bugzilla: https://cvs.khronos.org/bugzilla/show_bug.cgi?id=15465#c7
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
8 years agointel/genxml: Make some PIPE_CONTROL fields booleans
Jason Ekstrand [Sat, 15 Oct 2016 06:09:38 +0000 (23:09 -0700)]
intel/genxml: Make some PIPE_CONTROL fields booleans

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make "Predication enable" a boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:58:06 +0000 (22:58 -0700)]
intel/genxml: Make "Predication enable" a boolean

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml; Make "Use Global GTT a boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:55:21 +0000 (22:55 -0700)]
intel/genxml; Make "Use Global GTT a boolean

We also remove the redundant zero defaults since everything without an
explicit default gets zeroed automatically.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml; Make "Tiled Surface" a boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:50:02 +0000 (22:50 -0700)]
intel/genxml; Make "Tiled Surface" a boolean

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make "SO Buffer Enable" fields boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:46:50 +0000 (22:46 -0700)]
intel/genxml: Make "SO Buffer Enable" fields boolean

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make "Stencil Buffer Enable" a boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:37:40 +0000 (22:37 -0700)]
intel/genxml: Make "Stencil Buffer Enable" a boolean

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make a couple of STREAMOUT fields booleans
Jason Ekstrand [Sat, 15 Oct 2016 05:35:36 +0000 (22:35 -0700)]
intel/genxml: Make a couple of STREAMOUT fields booleans

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make "Include Vertex Handles" and "Include Primitive ID" booleans
Jason Ekstrand [Sat, 15 Oct 2016 05:31:48 +0000 (22:31 -0700)]
intel/genxml: Make "Include Vertex Handles" and "Include Primitive ID" booleans

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make "Vector Mask Enable" a boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:28:24 +0000 (22:28 -0700)]
intel/genxml: Make "Vector Mask Enable" a boolean

We also get rid of the "(VME)" a few places

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agointel/genxml: Make "Single Program Flow" a boolean
Jason Ekstrand [Sat, 15 Oct 2016 05:23:16 +0000 (22:23 -0700)]
intel/genxml: Make "Single Program Flow" a boolean

We also get rid of the "(SPF)" a few places.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
8 years agonv50/ir: constant fold OP_SPLIT
Tobias Klausmann [Fri, 30 Sep 2016 21:50:15 +0000 (23:50 +0200)]
nv50/ir: constant fold OP_SPLIT

Split the source immediate value into new values and move them into the
original defs set by the split. Since we can only have up to 64-bit
immediates, this is largely beneficial for F64 (and, in the future, U64)
operations.

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
[imirkin: always use U32, set newi for foldCount tracking]
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
8 years agoi965: Enable OpenGL 4.5.
Kenneth Graunke [Fri, 14 Oct 2016 23:33:19 +0000 (16:33 -0700)]
i965: Enable OpenGL 4.5.

Everything is in place.  There are still conformance issues to sort out,
but we may as well turn it on in master.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv/pipeline: Remove a meta hack from emit_ds_state
Jason Ekstrand [Sat, 8 Oct 2016 05:29:44 +0000 (22:29 -0700)]
anv/pipeline: Remove a meta hack from emit_ds_state

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv/image: Create views directly in VkCreate*View
Jason Ekstrand [Sat, 8 Oct 2016 05:14:03 +0000 (22:14 -0700)]
anv/image: Create views directly in VkCreate*View

Without meta, we no longer need the _init helpers and the ability to back
an image view with surface states allocated out of the command buffer.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv/image: Get rid of the usage hacks for meta
Jason Ekstrand [Sat, 8 Oct 2016 05:07:04 +0000 (22:07 -0700)]
anv/image: Get rid of the usage hacks for meta

Now that meta is gone and we're using blorp, we don't need all of the usage
hacks.  Instead, the usage provided by the app is exactly the usage that we
want because the app is the only thing creating image views.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv: Move Create*Pipelines into genX_cmd_buffer.c
Jason Ekstrand [Sat, 8 Oct 2016 04:55:34 +0000 (21:55 -0700)]
anv: Move Create*Pipelines into genX_cmd_buffer.c

Now that we don't have meta, we have no need for a gen-agnostic pipeline
create path.  We can, instead, just generate one Create*Pipelines function
per gen and be done with it.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv/pipeline: Remove support for direct-from-nir shaders
Jason Ekstrand [Sat, 8 Oct 2016 04:50:31 +0000 (21:50 -0700)]
anv/pipeline: Remove support for direct-from-nir shaders

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv: Make entrypoint resolution take a gen_device_info
Jason Ekstrand [Fri, 7 Oct 2016 22:47:45 +0000 (15:47 -0700)]
anv: Make entrypoint resolution take a gen_device_info

In order for things such as the ANV_CALL and the ifuncs to work, we used to
have a singleton gen_device_info structure that got assigned the first time
you create a device.  Given that the driver will never be used
simultaneously on two different generations of hardware, this was fairly
safe to do.  However, it has caused a few hickups and isn't, in general, a
good plan.  Now that the two primary reasons for this singleton are gone,
we can get rid of it and make things quite a bit safer.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv: Get rid of the ANV_CALL macro
Jason Ekstrand [Fri, 7 Oct 2016 22:41:17 +0000 (15:41 -0700)]
anv: Get rid of the ANV_CALL macro

This macro was needed by meta in order to make gen-specific calls from
gen-agnostic code.  Now that we don't have meta, the remaining two uses are
fairly trivial to get rid of.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
8 years agoanv: Get rid of graphics_pipeline_create_info_extra
Jason Ekstrand [Fri, 7 Oct 2016 22:29:47 +0000 (15:29 -0700)]
anv: Get rid of graphics_pipeline_create_info_extra

Now that we no longer have meta, all pipelines get created via the normal
Vulkan pipeline creation mechanics.  There is no more need for this bit of
extra magic data that we've been passing around.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv: Get rid of meta
Jason Ekstrand [Fri, 7 Oct 2016 22:06:47 +0000 (15:06 -0700)]
anv: Get rid of meta

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv: Use blorp for subpass clears
Jason Ekstrand [Sat, 8 Oct 2016 00:29:36 +0000 (17:29 -0700)]
anv: Use blorp for subpass clears

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv: Use blorp for ClearAttachments
Jason Ekstrand [Fri, 7 Oct 2016 21:43:21 +0000 (14:43 -0700)]
anv: Use blorp for ClearAttachments

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv/hiz: Perform HiZ resolves for all partial renders
Jason Ekstrand [Sat, 8 Oct 2016 02:14:47 +0000 (19:14 -0700)]
anv/hiz: Perform HiZ resolves for all partial renders

If we don't, we can end up with corruption in the portion of the depth
buffer that lies outside the render area when we do a HiZ resolve at the
end.  The only reason we weren't seeing this before was that all of the
meta-based clears such as VkCmdClearDepthStencilImage were internally using
HiZ so the HiZ buffer never truly got out-of-sync.  If the CTS ever tested
a depth upload (which doesn't care about HiZ) and then a partial render we
would have seen problems.  Soon, we will be using blorp to do depth clears
and it won't bother with HiZ so we would get CTS regressions without this.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
8 years agoanv: Use blorp for ClearDepthStencilImage
Jason Ekstrand [Fri, 7 Oct 2016 06:35:22 +0000 (23:35 -0700)]
anv: Use blorp for ClearDepthStencilImage

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv/image: Add an isl_view to anv_image_view
Jason Ekstrand [Mon, 19 Sep 2016 22:28:43 +0000 (15:28 -0700)]
anv/image: Add an isl_view to anv_image_view

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv/image: Rework our handling of 3-D image array ranges
Jason Ekstrand [Mon, 19 Sep 2016 22:14:56 +0000 (15:14 -0700)]
anv/image: Rework our handling of 3-D image array ranges

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoanv/blorp: Don't hand-roll flush_pipeline_select_3d
Jason Ekstrand [Fri, 7 Oct 2016 18:23:35 +0000 (11:23 -0700)]
anv/blorp: Don't hand-roll flush_pipeline_select_3d

When I initially brought up Vulkan blorp, I completely missed that this
was already factored out.  There's no good reason for us to hand-roll it.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Add a flag to make blorp not re-emit dept/stencil buffers
Jason Ekstrand [Sat, 8 Oct 2016 00:20:00 +0000 (17:20 -0700)]
intel/blorp: Add a flag to make blorp not re-emit dept/stencil buffers

In Vulkan, we want to be able to use blorp to perform clears inside of a
render pass.  If blorp stomps the depth/stencil buffers packets then we'll
have to re-emit them.  This gets tricky when secondary command buffers get
involved.  Instead, we'll simply guarantee that the depth and stencil
buffers we pass to blorp (if any) match those already set in the hardware.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Add an entrypoint for clearing depth and stencil
Jason Ekstrand [Fri, 7 Oct 2016 06:20:12 +0000 (23:20 -0700)]
intel/blorp: Add an entrypoint for clearing depth and stencil

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Emit a NULL render target for depth/stencil-only operations
Jason Ekstrand [Mon, 10 Oct 2016 16:30:29 +0000 (09:30 -0700)]
intel/blorp: Emit a NULL render target for depth/stencil-only operations

This never mattered before because the only time we used blorp
depth/stencil only was to do HiZ operations on gen6-7.  It may have worked
in that case (and maybe it didn't) but slow depth clears actually do depth
rendering so they need a valid render target.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Allow for running without a PS on gen8+
Jason Ekstrand [Fri, 7 Oct 2016 06:44:57 +0000 (23:44 -0700)]
intel/blorp: Allow for running without a PS on gen8+

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Add an "enabled" bit to surface_info
Jason Ekstrand [Sat, 8 Oct 2016 00:17:05 +0000 (17:17 -0700)]
intel/blorp: Add an "enabled" bit to surface_info

This gives a slightly smarter way to check whether or not a particular
surface exists than looking at the address.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Emit more complete DEPTH_STENCIL state
Jason Ekstrand [Fri, 7 Oct 2016 06:08:08 +0000 (23:08 -0700)]
intel/blorp: Emit more complete DEPTH_STENCIL state

This should now set the pipeline up properly for doing depth and/or stencil
clears by plumbing through depth/stencil test values.  We are now also
emitting color calculator state for blorp operations without an actual
shader because that is where the stencil reference value goes pre-SKL.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Unify the DEPTH_STENCIL emit code across gens
Jason Ekstrand [Fri, 7 Oct 2016 05:33:32 +0000 (22:33 -0700)]
intel/blorp: Unify the DEPTH_STENCIL emit code across gens

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Simplify depth/stencil config
Jason Ekstrand [Sat, 8 Oct 2016 00:04:10 +0000 (17:04 -0700)]
intel/blorp: Simplify depth/stencil config

The newly reworked depth/stencil config code can properly handle having
depth, stencil, both, or neither.  We no longer need to predicate it on
having depth or stencil.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Set QPitch for depth and HiZ on gen8+
Jason Ekstrand [Mon, 10 Oct 2016 16:29:34 +0000 (09:29 -0700)]
intel/blorp: Set QPitch for depth and HiZ on gen8+

8 years agointel/blorp: Add support for binding an actual stencil buffer
Jason Ekstrand [Fri, 7 Oct 2016 05:10:34 +0000 (22:10 -0700)]
intel/blorp: Add support for binding an actual stencil buffer

While we're here, we also make depth without HiZ work.

v2:
 - Use the correct surface type for 1-D on SKL+
 - Set QPitch on BDW+

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/blorp: Move CLEAR_PARAMS setup into emit_depth_stencil_config
Jason Ekstrand [Fri, 7 Oct 2016 23:58:34 +0000 (16:58 -0700)]
intel/blorp: Move CLEAR_PARAMS setup into emit_depth_stencil_config

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agointel/genxml: Add a uint MOCS field to 3DSTATE_STENCIL_BUFFER
Jason Ekstrand [Fri, 7 Oct 2016 05:13:57 +0000 (22:13 -0700)]
intel/genxml: Add a uint MOCS field to 3DSTATE_STENCIL_BUFFER

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
8 years agointel/blorp: Make the Z component of the primitive adjustable
Jason Ekstrand [Fri, 7 Oct 2016 05:03:12 +0000 (22:03 -0700)]
intel/blorp: Make the Z component of the primitive adjustable

We want to be able to start doing slow depth clears with blorp.  This
allows us to adjust the depth we're clearing to.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
8 years agoi915: workaround multiple intelFenceExtension definitions
Emil Velikov [Fri, 14 Oct 2016 18:09:08 +0000 (19:09 +0100)]
i915: workaround multiple intelFenceExtension definitions

Due to conflicting symbol names (between i915 and i965) in the
megadriver, we use a set of defines in i915/intel_screen.h.

With a recent commit we've introduced a symbol intelFenceExtension which
has different implementation for each driver, yet we forgot to add the
define.

Fixes: d11515ff1b3 ("i915/sync: Implement DRI2_Fence extension")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98264
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agodocs/specs: Update allocated EGL enum values
Chad Versace [Thu, 13 Oct 2016 21:44:17 +0000 (14:44 -0700)]
docs/specs: Update allocated EGL enum values

Document the EGL enum ranges for Mesa and those values allocated by the
following extensions:

    EGL_MESA_drm_image
    EGL_MESA_platform_gbm
    EGL_MESA_platform_surfaceless
    EGL_WL_bind_wayland_display

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agodoc/specs: Reference the Khronos registry XML
Chad Versace [Thu, 13 Oct 2016 21:32:13 +0000 (14:32 -0700)]
doc/specs: Reference the Khronos registry XML

Years ago Khronos replaced the registry's spec files with newfangled XML
files.  Update the reference in doc/specs/enum.txt accordingly.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl: Move old EGL_MESA_screen_surface spec
Chad Versace [Thu, 13 Oct 2016 21:19:51 +0000 (14:19 -0700)]
egl: Move old EGL_MESA_screen_surface spec

It was the lone file in src/egl/docs. Move it to where the other specs
live, in $MESA_TOP/docs/specs.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl: Implement EGL_MESA_platform_surfaceless
Chad Versace [Wed, 12 Oct 2016 22:48:15 +0000 (15:48 -0700)]
egl: Implement EGL_MESA_platform_surfaceless

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl: Don't advertise unsupported platform extensions
Chad Versace [Wed, 12 Oct 2016 22:52:12 +0000 (15:52 -0700)]
egl: Don't advertise unsupported platform extensions

Mesa's set of supported platform extensions depends on the autoconf
option --with-egl-platforms=foo,bar,baz. If --with-egl-platforms lacks
foo, then eglGetPlatformDisplay(EGL_PLATFORM_FOO, ...) unconditonally
fails.

So, if --with-egl-platforms lacks foo, then remove
EGL_VENDOR_platform_foo from the EGL client extension string.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agodocs: Add EGL_MESA_platform_surfaceless.txt (v2)
Chad Versace [Fri, 23 Sep 2016 04:36:17 +0000 (21:36 -0700)]
docs: Add EGL_MESA_platform_surfaceless.txt (v2)

v2:
    - Assign enum values.
    - Define interactions with EGL_EXT_platform_base and EGL 1.4.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoi965: Sort some extension names
Ian Romanick [Thu, 1 Sep 2016 19:05:42 +0000 (12:05 -0700)]
i965: Sort some extension names

Trivial.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eduardo Lima Mitev <elima@igalia.com>
8 years agoscons: Fix the Python dependency scanner.
Jose Fonseca [Fri, 14 Oct 2016 15:51:56 +0000 (16:51 +0100)]
scons: Fix the Python dependency scanner.

modulefinder wasn't searching for dependencies in the script dir.

It's not capable of detecting the sys.path manipulations scripts do
internally neither.

This change fixes the first issue, and hacks around the second.

Honestly, I've come to the conclusion that automatic Python dependency it will always be
too brittle.   I think we should start manually typing the dependencies
like we do in automake.  At very least it will enable any person to
eyeball and spot/fix missing dependencies, without dig into SCons internals.

8 years agopipe_loader_sw: Don't invoke Unix close() on Windows.
Jose Fonseca [Fri, 23 Sep 2016 11:55:18 +0000 (12:55 +0100)]
pipe_loader_sw: Don't invoke Unix close() on Windows.

Trivial.

8 years agoRevert "egl/dri2: rework dri2_make_current code flow"
Emil Velikov [Fri, 14 Oct 2016 15:07:33 +0000 (16:07 +0100)]
Revert "egl/dri2: rework dri2_make_current code flow"

This reverts commit 675719817e7bf7c5b9da22c02252aca77a41338d.

8 years agoi915: store reference to the context within struct intel_fence (v2)
Mauro Rossi [Sat, 16 Jul 2016 00:02:58 +0000 (02:02 +0200)]
i915: store reference to the context within struct intel_fence (v2)

Porting of the corresponding patch for i965.

Here follows the original commit message by Tomasz Figa:

"As the spec allows for {server,client}_wait_sync to be called without
currently bound context, while our implementation requires context
pointer.

v2: Add a mutex and acquire it for the duration of
    brw_fence_client_wait() and brw_fence_is_completed() as suggested
    by Chad."

NOTE: in i915 all references to 'brw' are replaced by 'intel'

Marshmallow-x86 boots ok with the following results of Android CTS.

Android CTS 6.0_r7 build:2906653
Session     Pass       Fail     Not Executed
0(EGL)      1410       24       0
1(GLES2)    13832      82       0

I get the same results as per i965GM.

[Emil Velikov: Include Mauro's test results]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoi915/sync: Implement DRI2_Fence extension
Mauro Rossi [Thu, 14 Jul 2016 03:33:16 +0000 (05:33 +0200)]
i915/sync: Implement DRI2_Fence extension

Here is the porting of corresponding patch for i965,
i.e. commit c636284 i965/sync: Implement DRI2_Fence extension

Here follows part of original commit message by Chad Versace:

"This enables EGL_KHR_fence_sync and EGL_KHR_wait_sync."

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoi915/sync: Replace prefix 'intel_sync' -> 'intel_gl_sync'
Mauro Rossi [Thu, 14 Jul 2016 03:33:15 +0000 (05:33 +0200)]
i915/sync: Replace prefix 'intel_sync' -> 'intel_gl_sync'

This is the porting of corresponding patch for i965,
i.e. commit 2516d83 i965/sync: Replace prefix 'intel_sync' -> 'intel_gl_sync'

The only difference compared to i965 one is that intel_check_sync() was renamed
to intel_gl_check_sync() here, as it is more appropriate.

Here follows original commit message by Chad Versace:

"I'm about to implement DRI2_Fenc in intel_syncobj.c.  To prevent
madness, we need to prefix functions for GL_ARB_sync with 'gl' and
functions for DRI2_Fence with 'dri'. Otherwise, the file will become
a jumble of similiarly named functions.

For example:
    old-name:      intel_client_wait_sync()
    new-name:      intel_gl_client_wait_sync()
    soon-to-come:  intel_dri_client_wait_sync()

I wrote this renaming commit separately from the commit that implements
DRI2_Fence because I wanted the latter diff to be reviewable."

[Emil Velikov: rename the outstanding intel_sync instances]
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
8 years agoegl/drm: set eglError and provide an error message on failure
Emil Velikov [Thu, 25 Aug 2016 14:52:58 +0000 (15:52 +0100)]
egl/drm: set eglError and provide an error message on failure

v2: Remove gratuitous newline/semicolon (Eric)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/x11: attribute for dri2_add_config failure
Emil Velikov [Thu, 25 Aug 2016 14:24:44 +0000 (15:24 +0100)]
egl/x11: attribute for dri2_add_config failure

... in dri2_x11_add_configs_for_visuals().

Currently the latter does not consider that, thus in such cases it adds
"empty" configs in the list.

Properly account for things and as we do that we can reuse count,
instead of calling _eglGetArraySize to determine if we've added any
configs.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/wayland: introduce dri2_wl_add_configs_for_visuals() helper
Emil Velikov [Thu, 25 Aug 2016 13:55:06 +0000 (14:55 +0100)]
egl/wayland: introduce dri2_wl_add_configs_for_visuals() helper

Analogous to previous commits - with an extra bonus.

Current code, apart from not attributing the lack of 'per visual'
and overall configs also overwrites the newly added config.

Namely if the dpy supports two or more of the supported formats
(XRGB8888, ARGB8888 and RGB565) earlier configs will be overwritten
and the the final one will be stored, since the we use the same index
for all three in our dri2_add_config call.

v2: Use correct comparison in loop conditional (Eric)
    Use valid C initializer (Gurchetan)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/surfaceless: tweak surfaceless_add_configs_for_visuals()
Emil Velikov [Thu, 25 Aug 2016 13:35:39 +0000 (14:35 +0100)]
egl/surfaceless: tweak surfaceless_add_configs_for_visuals()

Analogous to previous commit.

v2: Use correct comparison in loop conditional (Eric)
    Use valid C initializer (Gurchetan)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/android: tweak droid_add_configs_for_visuals()
Emil Velikov [Thu, 25 Aug 2016 13:28:48 +0000 (14:28 +0100)]
egl/android: tweak droid_add_configs_for_visuals()

Iterate over the driver_configs first in order to cut down the number of
getConfigAttrib() calls by a factor of 5.

While we're here, also drop the sentinel of the visuals array. We
already know its size so we can use that and save a few bytes.

v2: Use correct comparison in loop conditional (Eric)
    Use valid C initializer (Gurchetan)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/drm: introduce drm_add_configs_for_visuals() helper
Emil Velikov [Thu, 25 Aug 2016 13:00:50 +0000 (14:00 +0100)]
egl/drm: introduce drm_add_configs_for_visuals() helper

Factor out and rework the existing code so that it prints a debug
message if we have zero configs for any visual.

As a nice side effect we now provide a correct (sequential ID) when
creating a config (via dri2_add_config).

v2: Use correct comparison in loop conditional (Eric)
    Use valid C initializer (Gurchetan)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/surfaceless: print out a message on zero configs for given format
Emil Velikov [Thu, 25 Aug 2016 12:32:41 +0000 (13:32 +0100)]
egl/surfaceless: print out a message on zero configs for given format

Currently we print a debug message if the total configs is non-zero only
to do the same (at an error level) as we return from the function.

Rework the message to print if we're missing a config for the given
format.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/dri2: set WL_bind_wayland_display in a consistent way
Emil Velikov [Thu, 25 Aug 2016 12:15:43 +0000 (13:15 +0100)]
egl/dri2: set WL_bind_wayland_display in a consistent way

Introduce a helper and use it throughout the platform code. This allows
us to reduce the amount of ifdef(s) and (potentially) use
kms_swrast_dri.so for !drm platforms (namely wayland and x11).

Note: in the future as other platforms (android, surfaceless) support
the extension they can reuse the helper.

v2: Rebase, check for device_name.
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
8 years agoegl/android: remove duplicate KHR_image_base set
Emil Velikov [Thu, 25 Aug 2016 12:04:18 +0000 (13:04 +0100)]
egl/android: remove duplicate KHR_image_base set

The core egl/dri2 already sets the extension bit _only_ when possible -
which in Android's case is always.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>