b48fde15767284814b3df6e9d7946ca7f5eccbfb |
|
09-Jan-2017 |
Rob Clark <robdclark@gmail.com> |
freedreno/a5xx: use the non-_ZERO_BASE for vertexid Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
832dddcf91f168ab057cb5c7f6914b24ae6b864c |
|
28-Nov-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: rework varying slots (maybe??) See: dEQP-GLES2.functional.shaders.swizzles.vector_swizzles.mediump_vec2_yyyy_fragment if we only access (in FS) varying.y then it ends up in slot zero.. I'm not sure the hw likes that.. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
c416ea31cfe50e3d8ac3e433f9e4490a850b8e56 |
|
25-Dec-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: treat clipvertex like a normal varying We need this in case it is streamed out. Not sure why we were treating it specially before. Having it as a VS out is harmless if FS doesn't have a matching input. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
d10c5a24818b39585acfa60ceb6dbbae22b5be09 |
|
24-Dec-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/a5xx: transform-feedback support We'll need to revisit when adding hw binning pass support, whether we can still do this in main draw step, as we do w/ a3xx/a4xx, or if we needed to move it to the binning stage. Still some failing piglits but most tests pass and the common cases seem to work. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
6d77ceb701b889e76c93092b845986fc53e89257 |
|
24-Dec-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: UBO support for 64b GPUs (a5xx) Update address calculation to support 64b addresses. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
fc10dc9fdea6ad7d04dfcdb8fd2e2d59ea67f68b |
|
22-Dec-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: rework location of driver constants Rework how we lay out driver constants (driver-params, UBO/TFBO buffer addresses, immediates) for more flexibility. For a5xx+ we need to deal with the fact that gpu ptrs are 64b instead of 32b, which makes the fixed offset scheme not work so well. While we are dealing with that we might also make the layout more dynamic to account for varying # of UBOs, etc. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
fd249c803e3ae2acb83f5e3b7152728e73228b7b |
|
12-Dec-2016 |
Ilia Mirkin <imirkin@alum.mit.edu> |
treewide: s/comparitor/comparator/ git grep -l comparitor | xargs sed -i 's/comparitor/comparator/g' Just happened to notice this in a patch that was sent and included one of the tokens in question. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
728e2c4d38b2c03ad1fdc997bef70e646ada9fe4 |
|
23-Nov-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: don't offset inloc by 8 On a3xx/a4xx, the SP_VS_VPC_DST_REG.OUTLOCn is offset by 8, so we used to add this offset into fs->inputs[n].inloc. But a5xx drops this extra offset-by-8. So instead make inloc zero based and add the offset when we emit OUTLOCn values (for the gen's that need the offset). Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
dfc001dccc7a29b1acf8d1ecf8072223aa98bc1b |
|
10-Nov-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: fixup ralloc fallout Fixes fallout from acc23b04 ("ralloc: remove memset from ralloc_size"). We were still depending on zero'd allocations in a couple of places. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
93bfa1d7a2e70a72a01c48a04c208845c22f9376 |
|
25-Aug-2016 |
Kenneth Graunke <kenneth@whitecape.org> |
nir: Change nir_shader_get_entrypoint to return an impl. Jason suggested adding an assert(function->impl) here. All callers of this function actually want ->impl, so I decided just to change the API. We also change the nir_lower_io_to_temporaries API here. All but one caller passed nir_shader_get_entrypoint(), and with the previous commit, it now uses a nir_function_impl internally. Folding this change in avoids the need to change it and change it back. v2: Fix one call I missed in ir3_compiler (caught by Eric). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
c078c41520214baf469dd4413f868e42c2959c5e |
|
04-Aug-2016 |
Eric Anholt <eric@anholt.net> |
ttn: Use nir_load_front_face instead of the TGSI-style input. This reduces the diff between GLSL-to-NIR and TGSI-to-NIR, and gives NIR more optimization to work on. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
ed92241d7848a5f08360240795869d72b68054a3 |
|
27-Jul-2016 |
Eric Anholt <eric@anholt.net> |
ttn: Make FRAG_RESULT_DEPTH be a float variable to match gtn and ptn. This lets TTN-using drivers handle FRAG_RESULT_DEPTH the same between all their source paths. Reviewed-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
78ba262d004989c43b0a9e76c84b71bb16d4b333 |
|
11-Aug-2016 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: fix issue with emit_tex() For various tex fetch instructions, coord's get fixed up in different ways. But modifying the array returned from get_src() has side-effects if the same SSA src is used again.. the later instruction will see the previous fixups. Fix this, and const'ify things to prevent this sort of mistake in the future. Noticed by Varad when adding support for txf_ms. Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
ac1181ffbef5250cb3b651e047cce5116727c34c |
|
07-Jul-2016 |
Kenneth Graunke <kenneth@whitecape.org> |
compiler: Rename INTERP_QUALIFIER_* to INTERP_MODE_*. Likewise, rename the enum type to glsl_interp_mode. Beyond the GLSL front-end, talking about "interpolation modes" seems more natural than "interpolation qualifiers" - in the IR, we're removed from how exactly the source language specifies how to interpolate an input. Also, SPIR-V calls these "decorations" rather than "qualifiers". Generated by: $ find . -regextype egrep -regex '.*\.(c|cpp|h)' -type f -exec sed -i \ -e 's/INTERP_QUALIFIER_/INTERP_MODE_/g' \ -e 's/glsl_interp_qualifier/glsl_interp_mode/g' {} \; Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Acked-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
da39ac9c5126825418c979989ea7e017554a0aaa |
|
22-Jun-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: support non-user_buffer consts Signed-off-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
374ad2e2bd14b4fd0c161d41e3627793ffabe468 |
|
02-Jun-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: use nir_shader_get_entrypoint() helper Should also fix coverity warning: CID 1362454 Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
b65bd3dee5d84f4bd7806518282299960d426dc1 |
|
16-May-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix compiler warning Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
53cde5e295077e2a51df3a3d0db474cff5c10313 |
|
21-Mar-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: handle VARYING_SLOT_PNTC In the glsl->tgsi path, this already gets translated to VAR8, which matches up with rasterizer->sprite_coord_enable. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
2f1581059b31a99e8f15dff6339a4bd80baebe1b |
|
21-Mar-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: disable TGSI specific hacks in nir case When we got NIR directly from state tracker (vs using tgsi_to_nir) we need to realize this and skip some TGSI specific hacks. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
784086f3c1f50ca78fe62f925dfe66fb3aa5f22c |
|
28-Mar-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: add support for NIR as preferred IR For now under debug flag, since only suitable for debugging/testing. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8623e599fc050e33a1e19bc7f5aac59bc7fa3ae3 |
|
10-May-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: size input/output arrays properly We index into these based on var->data.driver_location, which might have gaps (ie. two inputs, one w/ drvloc 0 and other 2). This shows up in (for example) 'bin/copyteximage 1D', but was only noticed recently due to additional asserts. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
f33083a216563abac307c414bba2e32dc7405fea |
|
06-May-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: allow for additional VS sysval inputs There are a total of four possible currently, rather than 2. So we need to be prepared for the input array to grow by 16 components. We could get away with less if we could pack sysval inputs.. and the way this is handled currently isn't really the nicest thing. But it's a tactical fix for an issue hit in: GL31-CTS.gtf30.GL3Tests.transform_feedback.transform_feedback_vertex_id Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
b15c7fc268785cc8c960368d287ec799fe9dc502 |
|
11-Apr-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: add ir3_cp_ctx Needed in next commit.. just split out to reduce noise. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
9464d8c49813aba77285e7465b96e92a91ed327c |
|
27-Apr-2016 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: Switch the arguments to nir_foreach_function This matches the "foreach x in container" pattern found in many other programming languages. Generated by the following regular expression: s/nir_foreach_function(\([^,]*\),\s*\([^,]*\))/nir_foreach_function(\2, \1)/ Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
707e72f13bb78869ee95d3286980bf1709cba6cf |
|
27-Apr-2016 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: Switch the arguments to nir_foreach_instr This matches the "foreach x in container" pattern found in many other programming languages. Generated by the following regular expression: s/nir_foreach_instr(\([^,]*\),\s*\([^,]*\))/nir_foreach_instr(\2, \1)/ and similar expressions for nir_foreach_instr_safe etc. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
adf795432f788b33822d3a94b704be4ca536c8f1 |
|
19-Apr-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/a4xx: better workaround for astc+srgb This *seems* like a hw bug, and maybe only applies to certain a4xx variants/revisions. But setting the SRGB bit in sampler view state (texconst0) causes invalid alpha for ASTC textures. Work around this setting up a second texture state and using that to sample alpha separately. This way, srgb->linear conversion happens in hw *prior* to interpolation. This fixes 546 dEQP tests: dEQP-GLES3.functional.texture.*astc*srgb* Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
216225ce57de3987aefc2c052eebe54b9c312bc0 |
|
12-Apr-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix array textures on a4xx Seems like a4xx needs offset added to array index for all arrays, whereas a3xx only for cubemap arrays. Fixes a whole swath of dEQP fails (roughly *sampler2darray*). Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
506b561ba7e3df2a7759dded684fae84bf459f65 |
|
05-Apr-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: insert extra move into phi We had an implicit assumption that the phi src was assigned in it's source (pred) block leading into the phi. But this is not true with NIR, so we can't just ignore the source block specified in the nir_phi_src. Insert an extra mov in the source block. If it is not required the CP pass will take it back out again. Fixes: ./tests/spec/glsl-1.10/execution/vs-call-in-nested-loop.shader_test ./tests/spec/glsl-1.10/execution/vs-inner-loop-modifies-outer-loop-var.shader_test and probably others. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
38ae05a340bdf526d5da62159223ad9938fea36a |
|
04-Apr-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: drop unused instr category arg No longer used, so drop the extra arg to ir3_instr_create() Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
19739e4fb9024f42a8fc332e6fa94c292bb6bc16 |
|
27-Mar-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: remove ir3_instruction::category Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
70735643f4cf660dc3022f40f853a138aea738c2 |
|
27-Mar-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: encode instruction category in opc_t Been on my TODO list for a while. If nothing else this will make gdb properly grok the opc_t enum. This first step preserves ir3_instruction::category (with an added assert that category matches what is encoded in opc_t). Next step is to drop the category field (and arg to ir3_instr_create()), but that is split into next commit for bisectability and so that we can run piglit in the intermediate state to flush out any problems. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
b4c72b792caecd8be271af20de92d24b4ae7da4c |
|
22-Mar-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix for load_front_face intrinsic Seems like trying to widen in the same instruction as the add.s does a non-sign-extending widen. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
3ca034cada87aea58a92113cb38cf92a97d70c55 |
|
06-Feb-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix compiler warn Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
084b24f5582567ebf5aa94b7f40ae3bdcb71316b |
|
16-Mar-2016 |
Iago Toral Quiroga <itoral@igalia.com> |
nir: rename nir_const_value fields to include bitsize information Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
2a7ceb5957c4be718122a5451efdfbcfffcaa691 |
|
16-Feb-2016 |
Rob Clark <robdclark@gmail.com> |
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>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8750299a420af76cebd3067f6f603eacde06ae06 |
|
09-Feb-2016 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: Remove the const_offset from nir_tex_instr When NIR was originally drafted, there was no easy way to determine if something was constant or not. The result was that we had lots of special-casing for constant values such as this. Now that load_const instructions are SSA-only, it's really easy to find constants and this isn't really needed anymore. Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Rob Clark <robclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
ee85014b90af1d94d637ec763a803479e9bac5dc |
|
06-Feb-2016 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir/tex_instr: Rename sampler to texture We're about to separate the two concepts. When we do, the sampler will become optional. Doing a rename first makes the separation a bit more safe because drivers that depend on GLSL or TGSI behaviour will be fine to just use the texture index all the time. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8b0fb1c152fe191768953aa8c77b89034a377f83 |
|
21-Jan-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: use const_index helpers Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
f15447e7c9dc1e00973b02098637da0aa74de7d5 |
|
27-Jan-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: ignore clip-vertex varying Since we emulate clip-planes, the clip-vertex is used within the VS itself (thanks to nir_lower_clip). So just ignore it as a VS output. Fixes a boatload of piglit tests that were asserting on unknown varying slot. (Also unrelated spelling/typo fix.) Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
f20cf22b54dfda13324aa714debe55a8f093640d |
|
07-Nov-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: don't ignore local vars With glsl_to_nir we end up with local variables, instead of global, for arrays. Note that we'll eventually have to do something more clever, I think, when we support multiple functions, but that will probably take some work in a few places. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8039a2a6b377f5d2a047fda82f6eaaa0a6a79a94 |
|
05-Nov-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: handle tex instrs w/ const offset Something we start to see with glsl_to_nir. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
f212d7dc50a6a81e65f146d0ccef5776ec5e497f |
|
05-Nov-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: support load_front_face intrinsic With tgsi_to_nir we get this as a normal input with VARYING_SLOT_FACE. But glsl_to_nir plus nir_lower_system_values this becomes an intrinsic. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
6a33c5c0dffce136bdc95daa2db2d3e9d3c1741f |
|
16-Jan-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: array offset can be negative It at least happens with some piglit tests, like $piglit/bin/vp-address-01 VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], COLOR DCL CONST[0..7] DCL ADDR[0] 0: ARL ADDR[0].x, IN[1].xxxx 1: MOV_SAT OUT[1], CONST[ADDR[0].x-1] 2: DP4 OUT[0].x, CONST[4], IN[0] 3: DP4 OUT[0].y, CONST[5], IN[0] 4: DP4 OUT[0].z, CONST[6], IN[0] 5: DP4 OUT[0].w, CONST[7], IN[0] 6: END Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
fad158a0e01f4c28851477e6d1eb5c8fd67e226b |
|
10-Jan-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: array rework Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
2809c87f90e359bd94f1bd15d7615ea28010779a |
|
09-Jan-2016 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: remove unused tgsi tokens ptr Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
23bd6affb24662e9e8dbe1ed353babd17b5a016d |
|
26-Oct-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: we require block_index metadata Found during NIR_TEST_CLONE=1 piglit run. We were using block->index but forgetting to require it. Causing things to not work with a cloned shader which didn't preserve block_index. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
74135f804a4f18040a0a62664df67d35c8090d1d |
|
24-Oct-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: refactor NIR IR handling Immediately convert into NIR and do an initial key-agnostic lowering/ optimization pass. This should let us share most of the per-variant transformations between each variant, and hopefully minimize the draw- time variant creation part of the compilation process. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
ab4efb19dc4dd5f4e5822f90178f0edba1c4095a |
|
21-Dec-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: drop unnecessary unreachable() case It will still hit a compile_assert() in emit_tex, which has the advantage of dumping out the offending shader. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
237f2f2d8b45d9d956102eec6f9be63193e5269b |
|
26-Dec-2015 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: Get rid of function overloads When Connor originally drafted NIR, he copied the same function+overload system that GLSL IR had with a few names changed. However, this double-indirection is not really needed and has only served to confuse people. Instead, let's just have functions which may not have unique names and may or may not have an implementation. If someone wants to do overload resolving, they can hav a hash table based function+overload system in the overload resolving pass. There's no good reason to keep it in core NIR. Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Acked-by: Kenneth Graunke <kenneth@whitecape.org> ir3 bits are Reviewed-by: Rob Clark <robclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
843cec6d3a5cd2ef0986ddcaa0960895b99f066b |
|
23-Dec-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: spelling.. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
7d539080c1a491aff9fb3e90c25df89884477aa8 |
|
17-Nov-2015 |
Kenneth Graunke <kenneth@whitecape.org> |
nir: Add a writemask to store intrinsics. Tessellation control shaders need to be careful when writing outputs. Because multiple threads can concurrently write the same output variables, we need to only write the exact components we were told. Traditionally, for sub-vector writes, we've read the whole vector, updated the temporary, and written the whole vector back. This breaks down with concurrent access. This patch prepares the way for a solution by adding a writemask field to store_var intrinsics, as well as the other store intrinsics. It then updates all produces to emit a writemask of "all channels enabled". It updates nir_lower_io to copy the writemask to output store intrinsics. Finally, it updates nir_lower_vars_to_ssa to handle partial writemasks by doing a read-modify-write cycle (which is safe, because local variables are specific to a single thread). This should have no functional change, since no one actually emits partial writemasks yet. v2: Make nir_validate momentarily assert that writemasks cover the complete value - we shouldn't have partial writemasks yet (requested by Jason Ekstrand). v3: Fix accidental SSBO change that arose from merge conflicts. v4: Don't try to handle writemasks in ir3_compiler_nir - my code for indirects was likely wrong, and TTN doesn't generate partial writemasks today anyway. Change them to asserts as requested by Rob Clark. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> [v3]
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
78b81be627734ea7fa50ea246c07b0d4a3a1638a |
|
25-Nov-2015 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: Get rid of *_indirect variants of input/output load/store intrinsics There is some special-casing needed in a competent back-end. However, they can do their special-casing easily enough based on whether or not the offset is a constant. In the mean time, having the *_indirect variants adds special cases a number of places where they don't need to be and, in general, only complicates things. To complicate matters, NIR had no way to convdert an indirect load/store to a direct one in the case that the indirect was a constant so we would still not really get what the back-ends wanted. The best solution seems to be to get rid of the *_indirect variants entirely. This commit is a bunch of different changes squashed together: - nir: Get rid of *_indirect variants of input/output load/store intrinsics - nir/glsl: Stop handling UBO/SSBO load/stores differently depending on indirect - nir/lower_io: Get rid of load/store_foo_indirect - i965/fs: Get rid of load/store_foo_indirect - i965/vec4: Get rid of load/store_foo_indirect - tgsi_to_nir: Get rid of load/store_foo_indirect - ir3/nir: Use the new unified io intrinsics - vc4: Do all uniform loads with byte offsets - vc4/nir: Use the new unified io intrinsics - vc4: Fix load_user_clip_plane crash - vc4: add missing src for store outputs - vc4: Fix state uniforms - nir/lower_clip: Update to the new load/store intrinsics - nir/lower_two_sided_color: Update to the new load intrinsic NIR and i965 changes are Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> NIR indirect declarations and vc4 changes are Reviewed-by: Eric Anholt <eric@anholt.net> ir3 changes are Reviewed-by: Rob Clark <robdclark@gmail.com> NIR changes are Acked-by: Rob Clark <robdclark@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
58efff89a2af1d3996255f76cda510f2c2d9bda0 |
|
05-Dec-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: nir shader prints with 'disasm' debug option Move these to 'disasm' instead of the more verbose 'optmsgs' since, like the tgsi dumps, it is useful without the more verbose compiler logging enabled. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
ad2cc7bddc094639508e4942310dbd2896be7774 |
|
03-Dec-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: don't reuse a0.x across blocks It causes confusion in sched if we need to split_addr() since otherwise we wouldn't easily know which block the new addr instr will be scheduled in. So just side-step the whole situation. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8e52344dc1bd801a81ac773bb0010de5eca726f3 |
|
03-Dec-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: rename ir3_block::bd We'll need to add similar for ir3_instruction, but following the pattern to use 'id' seems confusing. Let's just go w/ generic 'data' as the name. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
57fc0dd8d5610a0a25cece53b172b0c992421db0 |
|
26-Nov-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: assign varying locations later Rather than assigning inloc up front, when we don't yet know if it will be unused, assign it last thing before the legalize pass. Also, realize when inputs are unused (since for frag shader's we can't rely on them being removed from ir->inputs[]). This doesn't make sense if we don't also dynamically assign the inloc's, since we could end up telling the hw the wrong # of varyings (since we currently assume that the # of varyings and max-inloc are related..) Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
754b26e76dd7738a3dc5d6be8eb5a6d7b256ee1a |
|
22-Nov-2015 |
Ilia Mirkin <imirkin@alum.mit.edu> |
freedreno/ir3: add support for a few gs5 ops Tested on a4xx. This is part of the builtins added by ARB_gpu_shader5 and GLSL ES 3.10. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
190acb34ca165c840f87a25149eab1d1b7dc85c4 |
|
22-Nov-2015 |
Ilia Mirkin <imirkin@alum.mit.edu> |
freedreno/a4xx: add ARB_texture_query_lod support Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
f58813842bcece3498f55ec5d582466ccff92a5e |
|
15-May-2015 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: s/nir_type_unsigned/nir_type_uint v2: do the same in tgsi_to_nir (Samuel) v3: added missing cases after rebase (Iago) v4: Add a blank space after '#' in one of the comments (Matt) Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
457bb290efc162ea3c7c51a820ab7cf88a4efb8d |
|
18-Nov-2015 |
Ian Romanick <ian.d.romanick@intel.com> |
nir: Add nir_texop_samples_identical opcode This is the NIR analog to GLSL IR ir_samples_identical. v2: Don't add the second nir_tex_src_ms_index parameter. Suggested by Ken and Jason. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8f55ebe802ea930d14eef9cd622aeb9a8d989e01 |
|
16-Oct-2015 |
Boyan Ding <boyan.j.ding@gmail.com> |
freedreno/ir3: Use nir_foreach_variable Signed-off-by: Boyan Ding <boyan.j.ding@gmail.com> Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
c9b982b72d443b138cfbded2f40350771c0bb321 |
|
09-Oct-2015 |
Rob Clark <robclark@freedesktop.org> |
glsl: move shader_enums into nir First step towards inverting the dependency between glsl and nir (so nir can be used without glsl). Also solves this issue with 'make distclean' Making distclean in mesa make[2]: Entering directory '/mnt/sdb1/Src64/Mesa-git/mesa/src/mesa' Makefile:2486: ../glsl/.deps/shader_enums.Plo: No such file or directory make[2]: *** No rule to make target '../glsl/.deps/shader_enums.Plo'. Stop. make[2]: Leaving directory '/mnt/sdb1/Src64/Mesa-git/mesa/src/mesa' Makefile:684: recipe for target 'distclean-recursive' failed make[1]: *** [distclean-recursive] Error 1 make[1]: Leaving directory '/mnt/sdb1/Src64/Mesa-git/mesa/src' Makefile:615: recipe for target 'distclean-recursive' failed make: *** [distclean-recursive] Error 1 Reported-by: Andy Furniss <adf.lists@gmail.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
9ffc1049cae07e4e2d2dc8f4d1f5f113b4b1fdc4 |
|
17-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: use nir two-sided-color lowering With this, we completely switch over to nir lowering passes instead of tgsi_lowering. So one step closer to supporting direct glsl or spirv to nir support for freedreno a3xx/a4xx. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
c71cb670ba786a4bc443d23e6aa4b866e069dcd2 |
|
16-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: lower txp/clamp in NIR Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
91ec210ea8e35af8a7b30fa599b67b1faa55f34c |
|
10-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: add support for ucp Use nir_lower_clip pass for adding the VS/FS instructions to handle user-clip-planes and CLIPDIST. Wire up support for load_user_clip_plane intrinsic to fetch ucp[plane] values as driver-params (passed as const's to the shader). Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
c4572b7dfe7a4ae9dc6e900f89786fa9cf7769df |
|
11-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: convert from tgsi semantic/index to varying-slot Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
e523f69b1d2f0cb3ff7659e3c55b9a2e40240c9c |
|
10-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: switch to shader_enums.h interp constants A small step towards un-TGSI'ifying ir3. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8fd3e53f3dc40e4013348e63a0cc7a2787410899 |
|
04-Aug-2015 |
Eric Anholt <eric@anholt.net> |
gallium/ttn: Convert to using VARYING_SLOT_* / FRAG_RESULT_*. This avoids exceeding the size of the .index bitfield since it got truncated, and should make our NIR look more like the NIR that the rest of the NIR developers are working on. v2: split out vc4 updates, first patch uses varying_slot_to_tgsi_semantic() helper, and second patch does the actual conversion. v3: add frag_result_to_tgsi_semantic() helper and don't try to map frag_results to semantic name/index as if they were varying_slot's v4: use VERT_ATTRIB_ for VS inputs v5: Fix vc4 build. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
b3958f9f8387b5967530ff77a08120074042c8e5 |
|
14-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: use NIR to lower ffract instead of tgsi_lowering Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
59519c2283e91ce4b8c2028673d6d8dc4ee5138f |
|
13-Sep-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix compile warn after 1807a08e New enum to add to switch so compiler doesn't complain. commit 1807a08e4f35b014f2a80d1e88dd74a9f096d7a5 Author: Ilia Mirkin <imirkin@alum.mit.edu> AuthorDate: Thu Aug 27 23:05:03 2015 -0400 Commit: Ilia Mirkin <imirkin@alum.mit.edu> CommitDate: Thu Sep 10 17:38:33 2015 -0400 nir: add nir_texop_texture_samples and convert from glsl Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8b2d0bb844e4c9b6141f68431b6e6dc135eb3503 |
|
25-Aug-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix compile break after fxn->start_block removal The commit: commit 8e0d4ef3410ea07d9621df3e083bc3e7c1ad2ab0 Author: Kenneth Graunke <kenneth@whitecape.org> AuthorDate: Thu Aug 6 18:18:40 2015 -0700 nir: Delete the nir_function_impl::start_block field. removed the start_block field without fixing up drivers.. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
b4ace13eeae7ec58262d8a3ec38adca63b6add76 |
|
03-Aug-2015 |
Ilia Mirkin <imirkin@alum.mit.edu> |
freedreno/a4xx: add cube map array support Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
0667962103034d7426c763a7793ce22baab46c8e |
|
11-Aug-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: use nir pass to lower const to scalar Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
98a4b111fbb9e3ae45e907ddd4d2407e5ab669ec |
|
25-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: add transform-feedback support Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
96d4db683f90f02e72d34ece544de7eedfa873ee |
|
25-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: track "keeps" in ir Previously we had a fixed array to track kills, since they don't generate an SSA value, and then cheated by stuffing them in the outputs array before sending things through depth/sched/etc. But store instructions will need similar treatment. So convert this over to a more general array of instructions that must be kept and fix up the places that were previously relying on kills being in the output array. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
a240748de52f2e469e91b60d29ae872828a594d7 |
|
25-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: cleanup driver-param stuff Add 'enum ir3_driver_param' to track driver-param slots, and a create_driver_param() helper to avoid having the knowledge about where driver params are placed in const regs spread throughout the code as we add additional driver-params. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
810763deb514c3fec41c3e95761de34e6211d291 |
|
24-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: drop unused create_input() arg Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
0815729d964f4e8e6e263acf70b5b91577de027a |
|
23-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: bit of shader API refactoring Since for transform-feedback, we'll need more than just the TGSI tokens from the state object, just pass the entire state object to ir3_shader_create(). This also cleans things up a bit for some day in the future when we could take shader either as TGSI or directly NIR (for ex, glsl2nir or spirv2nir paths). In the same spirit, drop extra args from ir3_compile_shader_nir() (since it can anyways get what it needs from the ir3_shader_variant). Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
bc5e2bec303acd7fd962996bf369be5ce0e15cd2 |
|
23-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: updated cat6 encoding Sync updated cat6 encoding from freedreno.git, needed to properly encode store instructions. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
65b2ae510bb07b75f583ecedfd59766621e1cb43 |
|
06-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: shader-db traces Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
6b9f5cd5f7b25e9e03104fe279df74817f69fe87 |
|
02-Jul-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix indirects tracking cp would update instr->address but not update the indirects array resulting in sched getting confused when it had to 'spill' the address register. Add an ir3_instr_set_address() helper to set instr->address and also update ir->indirects, and update all places that were writing instr->address to use helper instead. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
0a155538eb7e7870b99fb8b3fd8e2a268361d2c8 |
|
27-Jun-2015 |
Ilia Mirkin <imirkin@alum.mit.edu> |
gallium/ttn: mark location specially in nir for color0-writes-all We need to distinguish a shader that has separate writes to each MRT from one which is supposed to write the data from MRT 0 to all the MRTs. In TGSI this is done with a property. NIR doesn't have that, so encode it as a funny location and decode on the other end. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
bb2c4b68f78f0105088c11408f8902fb22802125 |
|
26-Jun-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fixes for indirect writes Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
01b5f1336330f1c0f937fb08a444efc593b43435 |
|
25-Jun-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: fix constlen in case of load_uniform_indirect We can't rely on what we get from the assembler if we have indirect addressing of constant file, since the assembler doesn't know the array index. This got lost in the transition to NIR. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
66a93a0ff9aa402c37aa9d00b4489715d611b496 |
|
13-Jun-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: pass sz to split_dest() For query_levels, we generate a getinfo with writemask of (z), which RA will consider as size==3. But we were still generating four fanouts. Which meant that RA would see it as two different register classes, depending on the path to definer. Ie. on the getinfo instruction itself it would see size==3, but when chasing back through the fanouts it would see size==4. Easiest way to solve that is to just generate the chain of neighboring fanouts to have the correct size in the first place. Note: we may eventually want split_dest() to take start/end or wrmask instead, since really we only need size==1. But RA is not clever enough for that, query_levels is not that common, and the other two registers that get allocated are never used so those register slots can be immediately re-used. So bunch of work for probably no real gain. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
1ee4d51e7a68f8f2dcb52a0e2f9af81fdbe078a2 |
|
12-Jun-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: add more opcodes Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
43048c7093c367897fbcbb3ca8580e9c122cd6f6 |
|
08-Jun-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: only unminify txf coords on a3xx Seems like a4xx gets this right. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
0f008082b184072159e5aedc7fc103efba8740ed |
|
08-Jun-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno: remove int sampler shader variants We get this information from NIR (which gets it from sview decl in tgsi when translating from tgsi), so no need to maintain shader variants for this. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
457f7c2a2a93b45396ac66e0d4b3896d2db8fdf3 |
|
09-Jun-2015 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: block reshuffling and loops! This shuffles things around to allow the shader to have multiple basic blocks. We drop the entire CFG structure from nir and just preserve the blocks. At scheduling we know whether to schedule conditional branches or unconditional jumps at the end of the block based on the # of block successors. (Dropping jumps to the following instruction, etc.) One slight complication is that variables (load_var/store_var, ie. arrays) are not in SSA form, so we have to figure out where to put the phi's ourself. For this, we use the predecessor set information from nir_block. (We could perhaps use NIR's dominance frontier information to help with this?) Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
c8fb5f8a011e1db78af3ceaf91c5cb3b1acaee14 |
|
25-May-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: move inputs/outputs to shader These belong in the shader, rather than the block. Mostly a lot of churn and nothing too interesting. But splitting this out from the rest of ir3_block reshuffling to cut down the noise in the later patch. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
d52fb2f5ad828f879286b9068023b82b9897bc17 |
|
01-May-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/ra: use register_allocate Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
694beb8b830c993e9bfb744655be3dbd558ab3a8 |
|
23-May-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: introduce ir3_compiler object Right now, just provides a cleaner way to get at the gpu-id, given the separation between compiler and context. But we will need this also to hold the reg-set for new register allocation. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
7674ab12e826d2ea33f13fb2e6ca8ae2a62fe460 |
|
09-Jun-2015 |
Rob Clark <robdclark@gmail.com> |
freedreno/ir3: silence warnings Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
7273cb4e933f8be65fc73b9d8c69c76d1078cb14 |
|
30-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/sched: convert to priority queue Use a more standard priority-queue based scheduling algo. It is simpler and will make things easier once we have multiple basic blocks and flow control. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
67d994c6761e09205dbc9a0515c510fc9dde02c7 |
|
30-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: drop dot graph dumping At least for now.. right now the instruction and instruction list printing should suffice, and the re-working of ir3_block would require a lot of changes in that code. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
2126c68e5cba79709e228f12eb3062a9be634a0e |
|
20-May-2015 |
Jason Ekstrand <jason.ekstrand@intel.com> |
nir: Get rid of the array elements parameter on load/store intrinsics Previously, we used intrinsic->const_index[1] to represent "the number of array elements to load" for load/store intrinsics. However, this set to 1 by every pass that ever creates a load/store intrinsic. Also, while it might make some sense for registers, it makes no sense whatsoever in SSA. On top of that, the i965 backend was the only backend to ever support it; freedreno and vc4 just assert that it's always 1. Let's just delete it. Signed-off-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
632ea2a1139f4b228ca55331e411dbae9920c28d |
|
22-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/nir: sysval fixes Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
95e68adcd9f2589ae6d998328c72b84ffc49edc7 |
|
16-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: few little fixes isaml needs to scale up coords based on LoD. Also fix bogus bary.f varying # when there are non-bary frag shader inputs. And use sub.s of a positive immediate rather than add.s of negative (since CP is better about figuring out that those can be collapsed into the cat2 instr). Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
efbf14e8936384ab1d243afbe3fa9bb0f40e3898 |
|
15-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: lower if/else For now, completely flatten if/else blocks. That will almost certainly change once we have flow control. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
57f0d3b3c6ae3b9f79a03517410b8dbfab0382c6 |
|
12-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: UBO support Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
b98c0262d1183d24a37272558c51678cd6a0e9ec |
|
11-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: couple little fixes Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
1b936bb9f8da72baaef5c7454e8bebb63bbe067a |
|
10-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: handle system values Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
715b2e0dbb88ef80880b8517f8fe822c26ef3be5 |
|
10-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: handle txs and query_levels tex ops These correspond to the tgsi TXQ opcode (plus sneak in a fix for two-sided color) Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
97e8fc3fdd8a5e7e9e5635cfde81c3cb297e9f1a |
|
09-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: split out tex helpers We'll need these in one or two other spots. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
6e8160d6e3ea7b000de112538dcbb0e29a6c3838 |
|
09-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: simplify emit_tex() Just build up arrays for src0/src1, and use create_collect().. Also add back missing .3d flag for 3d/cube textures. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
4cf4006674bd7c507688316e2033d77066c45c90 |
|
08-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: add variable-indexing support A bit fugly.. try and make this cleaner.. note if we hoist all the get_addr() out of the loop we can drop the hashtable and just use create_addr().. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
09cbd97a47a81f5d4b014adb5bdb9a490b24db82 |
|
06-Apr-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3/nir: set first_driver_param Without this, a3xx breaks.. a4xx would too if it had already implemented support for passing driver params. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|
8b0b81339b9c3806981ee2ec7c08501bbd8bb7a3 |
|
12-Mar-2015 |
Rob Clark <robclark@freedesktop.org> |
freedreno/ir3: add NIR compiler The NIR compiler frontend is an alternative to the TGSI f/e, producing the same ir3 IR and using the same backend passes for scheduling, etc. It is not enabled by default yet, as there are still some regressions. To enable, use 'FD_MESA_DEBUG=nir'. It is enough to use with, for example, xonotic or supertuxkart. With the NIR f/e, scalarizing and a number of other lowering steps happen in NIR, so we don't have to do them in ir3. Which simplifies the f/e and allows the lowered instructions to pass through other optimization stages. Signed-off-by: Rob Clark <robclark@freedesktop.org>
/external/mesa3d/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
|