mesa.git
7 years agoradeonsi: print CE IBs into ddebug reports
Marek Olšák [Sun, 30 Jul 2017 23:34:44 +0000 (01:34 +0200)]
radeonsi: print CE IBs into ddebug reports

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: fix printing vertex buffer descriptors into ddebug reports
Marek Olšák [Sun, 30 Jul 2017 23:31:19 +0000 (01:31 +0200)]
radeonsi: fix printing vertex buffer descriptors into ddebug reports

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: don't flush sL1 conditionally in WAIT_ON_CE_COUNTER
Marek Olšák [Sat, 29 Jul 2017 20:03:38 +0000 (22:03 +0200)]
radeonsi: don't flush sL1 conditionally in WAIT_ON_CE_COUNTER

I don't know the condition for the flush, but we better turn this off.
The sL1 flush is used when CE dumps stuff into a ring buffer and the ring
buffer wraps.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: set up HTILE in descriptors only when level 0 is accessible
Marek Olšák [Sun, 30 Jul 2017 14:41:39 +0000 (16:41 +0200)]
radeonsi: set up HTILE in descriptors only when level 0 is accessible

Compression isn't enabled with non-zero levels.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agoradeonsi: fix various CLEAR_STATE issues
Marek Olšák [Sun, 30 Jul 2017 01:37:21 +0000 (03:37 +0200)]
radeonsi: fix various CLEAR_STATE issues

Fixes: 064550238ef0 ("radeonsi: use CLEAR_STATE to initialize some
                      registers")
Bugzilla: https://bugs.freedesktop.org/101969
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agobuild: Convert git_sha1_gen script to Python.
Jose Fonseca [Tue, 1 Aug 2017 13:36:16 +0000 (14:36 +0100)]
build: Convert git_sha1_gen script to Python.

Python is the scripting language we've been using for scripts that need
to run across all supported platforms.

Shell is *not* a portable language for scripts.

Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
7 years agoFix SCons build
Nicolai Hähnle [Tue, 1 Aug 2017 09:27:05 +0000 (11:27 +0200)]
Fix SCons build

Fixes: 601093f95ddf ("xmlconfig: move into src/util")
Tested-by: Eric Engestrom <eric.engestrom@imgtec.com>
Tested-by: Roland Scheidegger <sroland@vmware.com>
7 years agomesa: fix bad cast conversions in viewport()
Samuel Pitoiset [Mon, 31 Jul 2017 19:43:06 +0000 (21:43 +0200)]
mesa: fix bad cast conversions in viewport()

Fixes: ddc32537d6 ("mesa: clamp viewport values only once when using glViewport()")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101981
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101989
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
7 years agoi965/drm: Inline brw_bo_references.
Kenneth Graunke [Wed, 12 Apr 2017 05:55:02 +0000 (22:55 -0700)]
i965/drm: Inline brw_bo_references.

It's a single atomic add, so it makes sense to inline it.

Improves performance in Piglit's drawoverhead microbenchmark's
"DrawArrays ( 1 VBO, 0 UBO,  0    ) w/ no state change" subtest by
0.400922% +/- 0.310389% (n=350) on my i7-7700HQ.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
7 years agoRevert "st_glsl_to_tgsi: rewrite rename registers to use array fully."
Dave Airlie [Mon, 31 Jul 2017 07:37:10 +0000 (08:37 +0100)]
Revert "st_glsl_to_tgsi: rewrite rename registers to use array fully."

This reverts commit 3008161d28e38336ba39aba4769a2deaf9732f55,
which caused a regression for VMWare.

The initial code had some recursion in it, that I removed by accident
trying to add back the recursion broke lots of things, take the high
road and revert for now.

Fixes: 3008161d (st_glsl_to_tgsi: rewrite rename registers to use array fully.)
Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agoradv: handle 10-bit format clamping workaround.
Dave Airlie [Thu, 27 Jul 2017 20:52:20 +0000 (21:52 +0100)]
radv: handle 10-bit format clamping workaround.

This fixes:
dEQP-VK.api.copy_and_blit.core.blit_image.all_formats.*
for a2r10g10b10 formats as destination on SI/CIK hardware.

This adds support to the meta program for emitting 10-bit
outputs, and adds 10-bit support to the fragment shader key.

It also only does the int8/10 on SI/CIK.

Fixes: f4e499ec7 (radv: add initial non-conformant radv vulkan driver)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
7 years agogallium/targets: Fix d3dadapter9 build after xmlconfig move.
Bas Nieuwenhuizen [Mon, 31 Jul 2017 19:47:36 +0000 (21:47 +0200)]
gallium/targets: Fix d3dadapter9 build after xmlconfig move.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Fixes: 601093f95dd "xmlconfig: move into src/util"
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoradv: Don't underflow non-visible VRAM size.
Bas Nieuwenhuizen [Sun, 30 Jul 2017 21:26:11 +0000 (23:26 +0200)]
radv: Don't underflow non-visible VRAM size.

In some APU situations the reported visible size can be larger than
VRAM size. This properly clamps the value.

Surprisingly both CTS and spec seem to allow a heap type with size 0,
so this seemed like the easiest option to me.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Fixes: 4ae84efbc5c "radv: Use enum for memory heaps."
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
7 years agoAndroid: fix xmlconfig build
Rob Herring [Mon, 31 Jul 2017 15:42:10 +0000 (10:42 -0500)]
Android: fix xmlconfig build

Commit 601093f95ddf ("xmlconfig: move into src/util") broke the Android
build due to missing libexpat dependency:

external/mesa3d/src/util/xmlconfig.c:34:10: fatal error: 'expat.h' file not found

Fixes: 601093f95ddf ("xmlconfig: move into src/util")
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Rob Herring <robh@kernel.org>
7 years agodocs: Update feature list for GL 4.6
Adam Jackson [Mon, 31 Jul 2017 16:27:21 +0000 (12:27 -0400)]
docs: Update feature list for GL 4.6

ARB_polygon_offset_clamp and ARB_texture_filter_anisotropic look like
they'd be pretty trivial to wire up.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
7 years agoutil/ra: fix memory leak
Eric Engestrom [Mon, 31 Jul 2017 13:13:58 +0000 (14:13 +0100)]
util/ra: fix memory leak

CID: 1415909
Fixes: 7a34a0e8903249c41fae "ra: Add a callback for selecting a register
                             from what's available."
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: drop unnecessary GLAPIENTRY to _mesa_init_line()
Samuel Pitoiset [Mon, 31 Jul 2017 12:11:31 +0000 (14:11 +0200)]
mesa: drop unnecessary GLAPIENTRY to _mesa_init_line()

Noticed randomly.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agomesa: only check errors when the state change in glClipControl()
Samuel Pitoiset [Mon, 31 Jul 2017 12:07:08 +0000 (14:07 +0200)]
mesa: only check errors when the state change in glClipControl()

When this GL call is a no-op, it should be a little faster in
the errors path only.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: only check errors when the state change in glPointSize()
Samuel Pitoiset [Mon, 31 Jul 2017 12:07:07 +0000 (14:07 +0200)]
mesa: only check errors when the state change in glPointSize()

When this GL call is a no-op, it should be a little faster in
the errors path only.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: only check errors when the state change in glCullFace()
Samuel Pitoiset [Mon, 31 Jul 2017 12:07:06 +0000 (14:07 +0200)]
mesa: only check errors when the state change in glCullFace()

When this GL call is a no-op, it should be a little faster in
the errors path only.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agomesa: only check errors when the state change in glProvokingVertex()
Samuel Pitoiset [Mon, 31 Jul 2017 12:07:05 +0000 (14:07 +0200)]
mesa: only check errors when the state change in glProvokingVertex()

When this GL call is a no-op, it should be a little faster.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
7 years agodri_interface: document loaderPrivate for getCapability
Marek Olšák [Mon, 31 Jul 2017 16:21:15 +0000 (18:21 +0200)]
dri_interface: document loaderPrivate for getCapability

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
7 years agoac/common: always build NIR translation
Nicolai Hähnle [Mon, 31 Jul 2017 15:41:23 +0000 (17:41 +0200)]
ac/common: always build NIR translation

radeonsi needs it now, and we require LLVM 3.9 anyway.

Fixes a build with radeonsi but not radv.

7 years agoAndroid: fix compile error for DRI2 loader getCapability
Rob Herring [Mon, 31 Jul 2017 14:32:10 +0000 (09:32 -0500)]
Android: fix compile error for DRI2 loader getCapability

Fix compile failure from commit 1bf703e4ea5c ("dri_interface,egl,gallium:
only expose RGBA visuals on Android").

Fixes: 1bf703e4ea5c ("dri_interface,egl,gallium: only expose RGBA visuals on Android")
Cc: 17.2 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Rob Herring <robh@kernel.org>
7 years agoAttempt to fix AppVeyor build, round 2
Nicolai Hähnle [Mon, 31 Jul 2017 15:17:44 +0000 (17:17 +0200)]
Attempt to fix AppVeyor build, round 2

7 years agoRevert "st/mesa: release sampler views when redefining a texture in st_context_teximage"
Marek Olšák [Mon, 31 Jul 2017 14:53:19 +0000 (16:53 +0200)]
Revert "st/mesa: release sampler views when redefining a texture in st_context_teximage"

This reverts commit 5c1241268ba9b240cb79ab9a30c5255b176c83c9.

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

Cc: 17.2 <mesa-stable@lists.freedesktop.org>
7 years agoAttempt to fix the AppVeyor build
Nicolai Hähnle [Mon, 31 Jul 2017 14:51:13 +0000 (16:51 +0200)]
Attempt to fix the AppVeyor build

7 years agoxmlconfig: move into src/util
Nicolai Hähnle [Fri, 30 Jun 2017 09:57:06 +0000 (11:57 +0200)]
xmlconfig: move into src/util

v2: attempt to fix Android build (Emil)

v3: add missing include path

Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v1)
7 years agoxmlconfig: remove GL type dependencies
Nicolai Hähnle [Fri, 30 Jun 2017 09:56:50 +0000 (11:56 +0200)]
xmlconfig: remove GL type dependencies

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: ensure that temp array allocas are in the entry block
Nicolai Hähnle [Sat, 29 Jul 2017 07:17:53 +0000 (09:17 +0200)]
radeonsi: ensure that temp array allocas are in the entry block

Otherwise, code generation fails. This has become necessary since some
shaders are wrapped in control flow.

Fixes: 081ac6e5c6d2 ("radeonsi/gfx9: always wrap GS and TCS in an if-block (v2)")
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: enable R600_DEBUG=nir for vertex and fragment shaders
Nicolai Hähnle [Mon, 15 May 2017 23:51:41 +0000 (01:51 +0200)]
radeonsi: enable R600_DEBUG=nir for vertex and fragment shaders

Also, disable geometry and tessellation shaders. Mixing and matching NIR
and TGSI shaders should work (and I've tested it for the VS/PS interface),
but geometry and tessellation requires VS-as-ES/LS, which isn't implemented
yet for NIR.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: VS as ES/LS are not yet supported with R600_DEBUG=nir
Nicolai Hähnle [Mon, 15 May 2017 23:19:04 +0000 (01:19 +0200)]
radeonsi: VS as ES/LS are not yet supported with R600_DEBUG=nir

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: lower uniforms to UBO loads
Nicolai Hähnle [Tue, 4 Jul 2017 09:09:50 +0000 (11:09 +0200)]
radeonsi/nir: lower uniforms to UBO loads

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: implement load_frag_coord intrinsic
Nicolai Hähnle [Tue, 4 Jul 2017 09:09:24 +0000 (11:09 +0200)]
ac/nir: implement load_frag_coord intrinsic

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: lower txp instructions
Nicolai Hähnle [Mon, 3 Jul 2017 13:32:29 +0000 (15:32 +0200)]
radeonsi/nir: lower txp instructions

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_llvm_context to unpack_param
Nicolai Hähnle [Sun, 25 Jun 2017 17:50:16 +0000 (19:50 +0200)]
ac/nir: pass ac_llvm_context to unpack_param

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir,radeonsi: add and use ac_shader_abi::frag_pos
Nicolai Hähnle [Sun, 25 Jun 2017 17:48:09 +0000 (19:48 +0200)]
ac/nir,radeonsi: add and use ac_shader_abi::frag_pos

v2: update for LLVMValueRefs in ac_shader_abi

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir,radeonsi: add and use ac_shader_abi::{ancillary,sample_coverage}
Nicolai Hähnle [Sun, 25 Jun 2017 17:40:40 +0000 (19:40 +0200)]
ac/nir,radeonsi: add and use ac_shader_abi::{ancillary,sample_coverage}

v2: update for LLVMValueRefs in ac_shader_abi

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir,radv: move force_persample to ac_shader_info::force_persample
Nicolai Hähnle [Sun, 25 Jun 2017 17:36:06 +0000 (19:36 +0200)]
ac/nir,radv: move force_persample to ac_shader_info::force_persample

Avoid accessing radv-specific structures during the meat of NIR-to-LLVM
translation.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: tweak next-shader assumptions when streamout is used
Nicolai Hähnle [Sun, 25 Jun 2017 17:01:13 +0000 (19:01 +0200)]
radeonsi: tweak next-shader assumptions when streamout is used

VS with streamout is always a HW VS.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: use new function ac_build_umin for edgeflag clamping
Nicolai Hähnle [Sun, 25 Jun 2017 15:56:37 +0000 (17:56 +0200)]
radeonsi: use new function ac_build_umin for edgeflag clamping

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: clamp shadow texture comparison value on VI
Nicolai Hähnle [Sun, 25 Jun 2017 13:45:09 +0000 (15:45 +0200)]
ac/nir: clamp shadow texture comparison value on VI

Needed for TC-compatible HTILE in radeonsi for test cases like
piglit spec/arb_texture_rg/execution/fs-shadow2d-red-01.shader_test

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: add always_vector argument to ac_build_gather_values_extended
Nicolai Hähnle [Sun, 25 Jun 2017 11:04:51 +0000 (13:04 +0200)]
ac/nir: add always_vector argument to ac_build_gather_values_extended

This simplifies a bunch of places that no longer need special treatment
of value_count == 1. We rely on LLVM to optimize away the 1-element vector
types.

This fixes a bunch of bugs where 1-element arrays are indexed indirectly.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir,radeonsi: add ac_shader_abi::front_face
Nicolai Hähnle [Sun, 25 Jun 2017 10:56:49 +0000 (12:56 +0200)]
ac/nir,radeonsi: add ac_shader_abi::front_face

v2: update for LLVMValueRefs in ac_shader_abi

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to emit_ddxy
Nicolai Hähnle [Sat, 24 Jun 2017 20:57:33 +0000 (22:57 +0200)]
ac/nir: pass ac_nir_context to emit_ddxy

Allocating the ddxy_lds is considered to be part of the API shader
translation and not part of the ABI.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to SSBO intrinsic handlers
Nicolai Hähnle [Sat, 24 Jun 2017 18:16:29 +0000 (20:16 +0200)]
ac/nir: pass ac_nir_context to SSBO intrinsic handlers

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: implement and use ac_shader_abi::load_ssbo
Nicolai Hähnle [Sat, 24 Jun 2017 18:03:46 +0000 (20:03 +0200)]
radeonsi: implement and use ac_shader_abi::load_ssbo

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: make get_indirect_index globally visible
Nicolai Hähnle [Sat, 24 Jun 2017 18:08:30 +0000 (20:08 +0200)]
radeonsi: make get_indirect_index globally visible

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: load buffer descriptors via ac_shader_abi::load_ssbo
Nicolai Hähnle [Sat, 24 Jun 2017 17:17:54 +0000 (19:17 +0200)]
ac/nir: load buffer descriptors via ac_shader_abi::load_ssbo

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to emit_discard_if
Nicolai Hähnle [Sat, 24 Jun 2017 16:40:17 +0000 (18:40 +0200)]
ac/nir: pass ac_nir_context to emit_discard_if

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: extract shader_info->fs.can_discard from NIR shader info
Nicolai Hähnle [Sat, 24 Jun 2017 16:38:38 +0000 (18:38 +0200)]
ac/nir: extract shader_info->fs.can_discard from NIR shader info

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: perform radeonsi-specific lowering and optimization passes
Nicolai Hähnle [Sat, 24 Jun 2017 15:48:22 +0000 (17:48 +0200)]
radeonsi/nir: perform radeonsi-specific lowering and optimization passes

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: perform lowering of input/output driver locations
Nicolai Hähnle [Sat, 24 Jun 2017 15:30:16 +0000 (17:30 +0200)]
radeonsi/nir: perform lowering of input/output driver locations

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: handle old-style shadow tex instructions correctly
Nicolai Hähnle [Sat, 24 Jun 2017 15:29:43 +0000 (17:29 +0200)]
ac/nir: handle old-style shadow tex instructions correctly

The first element is only extracted for new-style shadow tex.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: whitespace fixes
Nicolai Hähnle [Sat, 24 Jun 2017 12:50:45 +0000 (14:50 +0200)]
ac/nir: whitespace fixes

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: use shader_info pass to determine whether instance_id is used
Nicolai Hähnle [Mon, 26 Jun 2017 12:36:47 +0000 (14:36 +0200)]
ac/nir: use shader_info pass to determine whether instance_id is used

This improves the separation of ABI and NIR translation.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: move setting shader_info->fs.writes_memory to radv-specific code
Nicolai Hähnle [Fri, 9 Jun 2017 15:50:18 +0000 (17:50 +0200)]
ac/nir: move setting shader_info->fs.writes_memory to radv-specific code

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: add image descriptor loading
Nicolai Hähnle [Fri, 9 Jun 2017 15:48:11 +0000 (17:48 +0200)]
radeonsi/nir: add image descriptor loading

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: add image and write parameter to ac_shader_abi::load_sampler_desc
Nicolai Hähnle [Fri, 9 Jun 2017 15:47:34 +0000 (17:47 +0200)]
ac/nir: add image and write parameter to ac_shader_abi::load_sampler_desc

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: add support for arrays-of-arrays to get_sampler_desc
Nicolai Hähnle [Fri, 9 Jun 2017 13:16:51 +0000 (15:16 +0200)]
ac/nir: add support for arrays-of-arrays to get_sampler_desc

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: set si_shader_context::num_{sampler,images}
Nicolai Hähnle [Fri, 9 Jun 2017 13:16:14 +0000 (15:16 +0200)]
radeonsi/nir: set si_shader_context::num_{sampler,images}

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: implement ac_shader_abi::load_sampler_desc
Nicolai Hähnle [Thu, 8 Jun 2017 23:52:06 +0000 (01:52 +0200)]
radeonsi/nir: implement ac_shader_abi::load_sampler_desc

v2: remove enum desc_type from radeonsi (Marek)

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to tex_fetch_ptrs and related functions
Nicolai Hähnle [Thu, 8 Jun 2017 23:41:55 +0000 (01:41 +0200)]
ac/nir: pass ac_nir_context to tex_fetch_ptrs and related functions

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: add and use ac_shader_abi::load_sampler_desc
Nicolai Hähnle [Thu, 8 Jun 2017 23:31:45 +0000 (01:31 +0200)]
ac/nir: add and use ac_shader_abi::load_sampler_desc

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to visit_tex and various related functions
Nicolai Hähnle [Thu, 8 Jun 2017 18:06:39 +0000 (20:06 +0200)]
ac/nir: pass ac_nir_context to visit_tex and various related functions

Get most of the churn out of the way before actually loading samplers
via the ABI.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir,radeonsi: add ac_shader_abi::chip_class
Nicolai Hähnle [Thu, 8 Jun 2017 18:05:09 +0000 (20:05 +0200)]
ac/nir,radeonsi: add ac_shader_abi::chip_class

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: emit FS outputs
Nicolai Hähnle [Thu, 8 Jun 2017 17:38:51 +0000 (19:38 +0200)]
radeonsi/nir: emit FS outputs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: load FS inputs
Nicolai Hähnle [Thu, 8 Jun 2017 17:10:33 +0000 (19:10 +0200)]
radeonsi/nir: load FS inputs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi/nir: load VS inputs
Nicolai Hähnle [Thu, 8 Jun 2017 16:38:06 +0000 (18:38 +0200)]
radeonsi/nir: load VS inputs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir,radeonsi: add ac_shader_abi::load_ubo
Nicolai Hähnle [Sat, 20 May 2017 15:19:50 +0000 (17:19 +0200)]
ac/nir,radeonsi: add ac_shader_abi::load_ubo

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to visit_load_ubo_buffer
Nicolai Hähnle [Sat, 20 May 2017 07:25:25 +0000 (09:25 +0200)]
ac/nir: pass ac_nir_context to visit_load_ubo_buffer

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to visit_{load,store}_var and get_deref_offset helper
Nicolai Hähnle [Fri, 19 May 2017 17:40:06 +0000 (19:40 +0200)]
ac/nir: pass ac_nir_context to visit_{load,store}_var and get_deref_offset helper

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_llvm_context to some helper functions
Nicolai Hähnle [Fri, 19 May 2017 17:39:16 +0000 (19:39 +0200)]
ac/nir: pass ac_llvm_context to some helper functions

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_nir_context to visit_intrinsic
Nicolai Hähnle [Fri, 19 May 2017 17:25:43 +0000 (19:25 +0200)]
ac/nir: pass ac_nir_context to visit_intrinsic

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: add ac_nir_context::main_function
Nicolai Hähnle [Fri, 19 May 2017 17:22:09 +0000 (19:22 +0200)]
ac/nir: add ac_nir_context::main_function

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: split scanning outputs from setting up output allocas
Nicolai Hähnle [Fri, 19 May 2017 16:48:13 +0000 (18:48 +0200)]
ac/nir: split scanning outputs from setting up output allocas

The scanning phase sets the driver_location, because it is part of the
ABI: radeonsi does the assignment differently.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: pass ac_llvm_context to *build_alloca* helpers
Nicolai Hähnle [Fri, 19 May 2017 16:47:02 +0000 (18:47 +0200)]
ac/nir: pass ac_llvm_context to *build_alloca* helpers

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: use ac_shader_abi::emit_outputs
Nicolai Hähnle [Fri, 19 May 2017 16:37:49 +0000 (18:37 +0200)]
ac/nir: use ac_shader_abi::emit_outputs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac,radeonsi: add ac_shader_abi::emit_outputs for hardware VS shaders
Nicolai Hähnle [Fri, 19 May 2017 16:32:57 +0000 (18:32 +0200)]
ac,radeonsi: add ac_shader_abi::emit_outputs for hardware VS shaders

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: pass si_shader_context to get_primitive_id
Nicolai Hähnle [Fri, 19 May 2017 16:17:12 +0000 (18:17 +0200)]
radeonsi: pass si_shader_context to get_primitive_id

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: translate NIR to LLVM
Nicolai Hähnle [Fri, 19 May 2017 15:43:51 +0000 (17:43 +0200)]
radeonsi: translate NIR to LLVM

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: dump NIR instead of TGSI when appropriate
Nicolai Hähnle [Fri, 19 May 2017 15:42:20 +0000 (17:42 +0200)]
radeonsi: dump NIR instead of TGSI when appropriate

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: bypass the shader cache for NIR shaders
Nicolai Hähnle [Fri, 19 May 2017 15:28:54 +0000 (17:28 +0200)]
radeonsi: bypass the shader cache for NIR shaders

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: scan NIR shaders to obtain required info
Nicolai Hähnle [Wed, 17 May 2017 15:46:15 +0000 (17:46 +0200)]
radeonsi: scan NIR shaders to obtain required info

v2: set num_instruction to 2, i.e. 1 + END (Marek)

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: add ac_shader_abi::inputs
Nicolai Hähnle [Thu, 8 Jun 2017 16:23:34 +0000 (18:23 +0200)]
ac/nir: add ac_shader_abi::inputs

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: begin splitting off ac_nir_context
Nicolai Hähnle [Fri, 19 May 2017 15:03:20 +0000 (17:03 +0200)]
ac/nir: begin splitting off ac_nir_context

The eventual goal is to hide all radv-specific details behind
ac_nir_context::abi, so that the NIR->LLVM code can be re-used by
radeonsi.

During development, we live with a partial split, where some of the
NIR->LLVM code still relies on linking back to the nir_to_llvm_context
(which should ultimately be renamed to reflect that it's radv-specific).
The idea is to get rid of these backlinks over time.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: add si_shader_selector::nir
Nicolai Hähnle [Tue, 16 May 2017 00:06:15 +0000 (02:06 +0200)]
radeonsi: add si_shader_selector::nir

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: implement pipe_screen::get_compiler_options for NIR
Nicolai Hähnle [Tue, 16 May 2017 00:04:48 +0000 (02:04 +0200)]
radeonsi: implement pipe_screen::get_compiler_options for NIR

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: add nir include paths
Nicolai Hähnle [Tue, 16 May 2017 00:06:35 +0000 (02:06 +0200)]
radeonsi: add nir include paths

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac/nir: start using ac_shader_abi
Nicolai Hähnle [Mon, 15 May 2017 22:28:50 +0000 (00:28 +0200)]
ac/nir: start using ac_shader_abi

v2: update for LLVMValueRefs in ac_shader_abi

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoac,radeonsi: move some VS input descriptions to ac_shader_abi
Nicolai Hähnle [Mon, 15 May 2017 22:19:01 +0000 (00:19 +0200)]
ac,radeonsi: move some VS input descriptions to ac_shader_abi

v2: use LLVM values instead of function parameter indices

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agoradeonsi: store shader function arguments in a structure
Nicolai Hähnle [Mon, 3 Jul 2017 14:54:37 +0000 (16:54 +0200)]
radeonsi: store shader function arguments in a structure

Aligns the code a bit more with ac/nir, and simplifies the setup of
ac_shader_abi.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agogallium/targets: link against NIR when building radeonsi
Nicolai Hähnle [Tue, 16 May 2017 00:04:14 +0000 (02:04 +0200)]
gallium/targets: link against NIR when building radeonsi

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agost/glsl_to_nir: move nir_lower_io to drivers
Nicolai Hähnle [Tue, 4 Jul 2017 08:23:49 +0000 (10:23 +0200)]
st/glsl_to_nir: move nir_lower_io to drivers

This allows drivers more freedom in how exactly they want to lower I/O,
e.g. first lowering I/O to temporaries.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agost/mesa: get rid of st_glsl_types
Nicolai Hähnle [Tue, 4 Jul 2017 08:22:02 +0000 (10:22 +0200)]
st/mesa: get rid of st_glsl_types

It's a duplicate of glsl_type::count_attribute_slots.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agost/glsl_to_nir: use nir_lower_samplers_as_deref when requested by the driver
Nicolai Hähnle [Fri, 19 May 2017 20:42:12 +0000 (22:42 +0200)]
st/glsl_to_nir: use nir_lower_samplers_as_deref when requested by the driver

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agost/glsl_to_nir: fix the case where NIR clone testing is enabled
Nicolai Hähnle [Sun, 25 Jun 2017 13:26:47 +0000 (15:26 +0200)]
st/glsl_to_nir: fix the case where NIR clone testing is enabled

In that case, prog->nir must be assigned at the end.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agogallium: add PIPE_CAP_NIR_SAMPLERS_AS_DEREF
Nicolai Hähnle [Sun, 25 Jun 2017 16:31:11 +0000 (18:31 +0200)]
gallium: add PIPE_CAP_NIR_SAMPLERS_AS_DEREF

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
7 years agonir: add nir_lower_uniforms_to_ubo pass
Nicolai Hähnle [Sat, 20 May 2017 15:58:25 +0000 (17:58 +0200)]
nir: add nir_lower_uniforms_to_ubo pass

This is a further lowering of default-block uniform loads that transforms
load_uniform intrinsics into load_ubo intrinsics. This simplifies the rest
of the backend.

v2: transform from load_uniform instead of straight from variables

Reviewed-by: Eric Anholt <eric@anholt.net>
7 years agonir: add nir_lower_samplers_as_deref pass
Nicolai Hähnle [Fri, 9 Jun 2017 09:35:25 +0000 (11:35 +0200)]
nir: add nir_lower_samplers_as_deref pass

This pass is a replacement for the nir_lower_samplers pass, which has the
advantage of keeping sampler references as derefs. This allows a unified
treatment of texture instructions and image intrinsics in the backend.