Always zero vectors in start_pipeline().

The lowp start_pipeline() always zeros, and with floats we always zero
when compiled as part of Skia, so this just makes the offline float
consistent with the others.

It's getting confusing to think about which code zeros and which
doesn't, and it'd be nicer to be able to rely on zeros.

This should change code generation only to the start_pipelines in
the .S files.

Change-Id: I1178b83c01e609e40dc7912d8d56df8e36eb339d
Reviewed-on: https://skia-review.googlesource.com/52001
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
This commit is contained in:
Mike Klein 2017-09-27 11:12:01 -04:00 committed by Skia Commit-Bot
parent 9d5b100d87
commit abb8bb307c
3 changed files with 8907 additions and 8735 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -58,32 +58,27 @@ static const size_t N = sizeof(F) / sizeof(float);
MAYBE_MSABI
extern "C" void WRAP(start_pipeline)(size_t x, size_t y, size_t xlimit, size_t ylimit,
void** program) {
#if defined(JUMPER_IS_OFFLINE)
F v; // Really no need to intialize.
#else
F v{}; // Compilers tend to whine about this, so it's easiest to just zero.
#endif
auto start = (Stage*)load_and_inc(program);
const size_t x0 = x;
for (; y < ylimit; y++) {
#if defined(__i386__) || defined(_M_IX86) || defined(__arm__)
Params params = { x0,y,0, v,v,v,v };
Params params = { x0,y,0, 0,0,0,0 };
while (params.x + N <= xlimit) {
start(&params,program, v,v,v,v);
start(&params,program, 0,0,0,0);
params.x += N;
}
if (size_t tail = xlimit - params.x) {
params.tail = tail;
start(&params,program, v,v,v,v);
start(&params,program, 0,0,0,0);
}
#else
x = x0;
while (x + N <= xlimit) {
start(0,program,x,y, v,v,v,v, v,v,v,v);
start(0,program,x,y, 0,0,0,0, 0,0,0,0);
x += N;
}
if (size_t tail = xlimit - x) {
start(tail,program,x,y, v,v,v,v, v,v,v,v);
start(tail,program,x,y, 0,0,0,0, 0,0,0,0);
}
#endif
}