| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
no change in generated code thanks to dereferenceable(n)
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows moving the loads arbitrarily in the Sinking pass.
26002 shaders in 14643 tests
Totals:
SGPRS: 2080160 -> 2080160 (0.00 %)
VGPRS: 798875 -> 797826 (-0.13 %)
Spilled SGPRs: 108485 -> 79165 (-27.03 %)
Spilled VGPRs: 327 -> 327 (0.00 %)
Scratch VGPRs: 1656 -> 1652 (-0.24 %) dwords per thread
Code Size: 36127192 -> 35559780 (-1.57 %) bytes
LDS: 767 -> 767 (0.00 %) blocks
Max Waves: 212464 -> 212672 (0.10 %)
Wait states: 0 -> 0 (0.00 %)
PERCENTAGES / App Shaders SGPRs VGPRs SpillSGPR SpillVGPR Scratch CodeSize MaxWaves Waits
(unknown) 4 . . . . . . . .
0ad 6 . . . . . . . .
alien_isolation 2938 . 0.04 % -8.53 % . . -0.71 % -0.06 % .
anholt 10 . . . . . . . .
batman_arkham_origins 589 . -0.58 % -79.54 % . . -6.72 % 0.57 % .
bioshock-infinite 1769 . -0.65 % -89.32 % . . -4.73 % 0.48 % .
borderlands2 3968 . -0.31 % -51.21 % . . -4.09 % 0.22 % .
brutal-legend 338 . -0.03 % -2.95 % . . -0.06 % . .
civilization_beyond.. 116 . . -14.17 % . . -0.88 % . .
counter_strike_glob.. 1142 . . . . . . . .
dirt-showdown 541 . -0.56 % -40.14 % . -3.45 % -1.82 % 0.35 % .
dolphin 22 . . . . . 0.16 % . .
dota2 1747 . . . . . 0.01 % . .
europa_universalis_4 76 . -0.23 % -42.11 % . . -0.96 % . .
f1-2015 774 . -0.09 % -28.89 % . . -2.60 % 0.09 % .
furmark-0.7.0 4 . . . . . . . .
gimark-0.7.0 10 . . . . . . . .
glamor 16 . . . . . . . .
humus-celshading 4 . . . . . . . .
humus-domino 6 . . . . . . . .
humus-dynamicbranching 24 . 0.71 % . . . 0.29 % -0.45 % .
humus-hdr 10 . . . . . . . .
humus-portals 2 . . . . . . . .
humus-volumetricfog.. 6 . . . . . . . .
left_4_dead_2 1762 . . . . . . . .
metro_2033_redux 2670 . -0.10 % -7.15 % . . -0.03 % . .
nexuiz 80 . . . . . . . .
pixmark-julia-fp32 2 . . . . . . . .
pixmark-julia-fp64 2 . . . . . . . .
pixmark-piano-0.7.0 2 . . . . . . . .
pixmark-volplosion-.. 2 . . . . . . . .
plot3d-0.7.0 8 . . . . . . . .
portal 474 . . . . . . . .
sauerbraten 7 . . . . . . . .
serious_sam_3_bfe 392 . . -13.20 % . . -1.81 % . .
supertuxkart 4 . . . . . . . .
talos_principle 324 . -0.21 % -18.39 % . . -2.73 % 0.14 % .
team_fortress_2 808 . . . . . . . .
tesseract 430 . 0.08 % -68.57 % . . -0.45 % . .
tessmark-0.7.0 6 . . . . . . . .
thea 172 . . . . . 0.03 % . .
ue4_effects_cave 299 . -0.04 % -10.15 % . . -0.25 % 0.04 % .
ue4_elemental 586 . -0.02 % -13.93 % . . -0.13 % 0.02 % .
ue4_lightroom_inter.. 74 . -0.17 % -70.00 % . . -1.27 % . .
ue4_realistic_rende.. 92 . . -32.58 % . . -0.35 % . .
unigine_heaven 322 . 0.12 % -54.17 % . . -1.42 % -0.12 % .
unigine_sanctuary 264 . . . . . . . .
unigine_tropics 210 . . . . . . . .
unigine_valley 278 . -0.15 % -40.74 % . . -2.00 % 0.09 % .
unity 72 . . . . . 0.03 % . .
warsow 176 . . . . . . . .
warzone2100 4 . . . . . 0.13 % . .
witcher2 1040 . -0.03 % -86.28 % . . -0.28 % 0.01 % .
xcom_enemy_within 1236 . -0.24 % -63.54 % . . -0.93 % 0.18 % .
yofrankie 82 . -0.61 % -100.00 % . . -0.83 % 0.41 % .
-----------------------------------------------------------------------------------------------------------
Total 26002 . -0.13 % -27.03 % . -0.24 % -1.57 % 0.10 % .
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Not sure if this is the right way to do it, but it seems to work.
v2: make it a no-op on LLVM <= 3.5
Reviewed-by: Roland Scheidegger <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
|
| |
No change in behavior.
BTW, tbaa_md_kind == 1, which was the magic number in the code.
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
| |
always set by gallivm
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
| |
introduced in 476e9cee1d0cbe321c401277214e6c36ce5b18c9
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
| |
no change in behavior
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
| |
whole buffer objects are not needed
Reviewed-by: Nicolai Hähnle <[email protected]>
|
|
|
|
|
|
|
|
| |
Fix compilation on Cygwin, since 50b22354, by adding c99_alloca.h include,
which should know how to portably make the alloc() prototype available.
Signed-off-by: Jon Turney <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
|
|
|
|
|
|
|
|
| |
Coverity's analysis is too weak to understand that
r600_init_flushed_depth(_, _, NULL) only returns true when
flushed_depth_texture was assigned a non-NULL value.
Reviewed-by: Marek Olšák <[email protected]>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Previously, there were occasionally NIR registers in our programs, but
they were always actually used SSA-only. Now that we're trying to support
control flow, we need to actually conditionally move to registers based on
whether channels are active or not.
|
|
|
|
|
| |
For now it's still always false, but I need it in place for kernel
backwards compat support as I extend the backend for control flow.
|
|
|
|
|
|
| |
This uses the branch condition code in inst->cond to jump to either
successor[0] (condition matches) or successor[0] (condition doesn't
match).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We're already checking that branch instructions are within the
contents of the shader and the proper PROG_END sequence is present.
The other thing we need in the presence of branching is to verify that
the shader doesn't overflow past the end of the uniforms stream.
To do that, we require that at the start of any basic block reading
uniforms have the following instructions:
load_imm temp, <offset within uniform stream>
add unif_addr, temp, unif
The instructions are generated by userspace, and the kernel verifies
that the load_imm is of the expected offset, and that the add adds it
to a uniform. We track which uniform in the stream that is, and at
draw call time fix up the uniform stream to have the address of the
start of the shader's uniforms for that draw call.
Signed-off-by: Eric Anholt <[email protected]>
|
|
|
|
|
|
| |
This isn't used yet, it's just a first step toward loop validation.
During the main parsing of instructions, we need to know when we hit a new
basic block so that we can reset validated state.
|
|
|
|
|
| |
This reduces how much we need to pass around as arguments, which was
becoming more of a problem with looping validation.
|
| |
|
|
|
|
|
| |
This only happens when live variables are set up, which is not in the
normal dump, but is set up when we've failed to register allocate.
|
|
|
|
|
| |
Right now our CFG is always a trivial single basic block, but that will
change when enable loops.
|
|
|
|
|
|
|
|
| |
Basically we just treat each block independently. The only inter-block
scheduling I can think of that would be be interesting would be to move
texture result collection to after a short loop/if block that doesn't do
texturing. However, the kernel disallows that as part of its security
validation.
|
|
|
|
|
|
|
|
|
| |
We still decide which uniform to lower based on how many
instructions-that-need-lowering use that uniform, but now we emit a new
temporary uniform load in each of the basic blocks containing an
instruction being lowered.
This commit is best reviewed with diff -b.
|
|
|
|
|
|
| |
We need to apply the peephole pass to each of the blocks in the program.
We don't do dataflow analysis for SF across blocks, but we also don't
generate code that would need us to do so.
|
|
|
|
|
|
|
| |
The optimization passes and scheduling aren't actually ready for multiple
blocks with control flow yet (as seen by the "cur_block" references in
them instead of iterating over blocks), but this creates the structures
necessary for converting them.
|
|
|
|
|
|
|
|
| |
We have the prior list_foreach() all over the code, but I need to move
where instructions live as part of adding support for control flow. Start
by just converting to a helper iterator macro. (The simpler
"qir_for_each_inst()" will be used for the for-each-inst-in-a-block
iterator macro later)
|
|
|
|
|
|
|
|
| |
This avoids a bunch of code gen regressions when enabling loops in vc4.
Prior to that, the GLSL that would have generated these optimizable phi
nodes was being lowered to csels between either (undef, a) or (a, a), and
those were being dealt with by nir_opt_undef and nir_opt_algebraic.
|
|
|
|
|
|
|
|
| |
The allocation has succeeded by that point, so it needs to be freed.
CovID: 1358929
Signed-off-by: Eric Engestrom <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
|
|
|
|
|
| |
We're passed in a freshly dup()ed fd on screen create, so we should close
it on exit. Debugged by Hugh Cole-Baker.
|
|
|
|
| |
Signed-off-by: Tim Rowley <[email protected]>
|
|
|
|
| |
Signed-off-by: Tim Rowley <[email protected]>
|
|
|
|
| |
Signed-off-by: Tim Rowley <[email protected]>
|
|
|
|
|
|
|
|
| |
Small api cleanup. Make all api functions call GetContext instead
of locally casting handle. Makes debugging easier by providing a
single point to track context changes.
Signed-off-by: Tim Rowley <[email protected]>
|
|
|
|
|
|
| |
v2: use signed compare, remove unneeded vmask
Signed-off-by: Tim Rowley <[email protected]>
|
|
|
|
|
|
|
| |
d3d97f8 broke llvm-3.7, which has a mismatched API for
setDataLayout/getDataLayout.
Signed-off-by: Tim Rowley <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with encode tunneling
The idea of encode tunneling is to use video buffer directly for encoder,
but currently the encoder doesn’t support interlaced surface, the OMX
decoder set progressive surface before on that purpose.
Since now we are polling the driver for interlacing information for
decoder, we got the interlaced as preferred as other APIs(VDPAU, VA-API),
thus breaking the transcode with tunneling.
The solution is when with tunnel detected, re-allocate progressive target
buffers, and then converting the interlaced decoder results to there.
This has been tested with transcode results bit to bit matching as before
with surface from progressive to progressive.
Signed-off-by: Leo Liu <[email protected]>
Acked-by: Christian König <[email protected]>
Tested-by: Julien Isorce <[email protected]>
|
|
|
|
|
|
| |
Signed-off-by: Leo Liu <[email protected]>
Acked-by: Christian König <[email protected]>
Tested-by: Julien Isorce <[email protected]>
|
|
|
|
|
|
|
|
| |
This shader will make interlaced yuv to progressive yuv.
Signed-off-by: Leo Liu <[email protected]>
Acked-by: Christian König <[email protected]>
Tested-by: Julien Isorce <[email protected]>
|
|
|
|
|
|
|
|
| |
We'll use weave shader in the later patch.
Signed-off-by: Leo Liu <[email protected]>
Acked-by: Christian König <[email protected]>
Tested-by: Julien Isorce <[email protected]>
|
|
|
|
|
| |
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
|
|
|
|
| |
[ Francisco Jerez: Use validate_build_common for error checking,
simplify control flow slightly and handle additional exception
types. ]
Reviewed-by: Francisco Jerez <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
| |
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
|
|
|
| |
header_map was the only definition left in compiler.hpp, move it into
program.hpp which is its only user in clover/core.
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
|
|
| |
Superseded by compile_program() and link_program().
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
|
|
|
| |
[ Serge Martin: Fix inverted opts and log build ctor args.
Keep the log related to the build. Fix indentation ]
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This gets rid of the program::build_* query methods and replaces them
with the program::build() method that returns a single data structure
containing all parameters for the last build done on the given target
device (including build logs, options and the binary itself).
[ Serge Martin: Fix inverted opts and log build ctor args ]
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
| |
Reviewed-by: Francisco Jerez <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
| |
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This partially reverts 7e0180d57d330bd8d3047e841086712376b2a1cc.
Having two different exception subclasses for compilation and linking
makes it more difficult to share or move code between the two
codepaths, because the exact same function under the same error
condition would need to throw one exception or the other depending on
what top-level API is being implemented with it. There is little
benefit anyway because clCompileProgram() and clLinkProgram() can tell
whether they are linking or compiling a program.
Reviewed-by: Serge Martin <[email protected]>
Tested-by: Jan Vesely <[email protected]>
|