diff options
| author | Jakub Stachurski <j.stachurski@student.utwente.nl> | 2026-03-08 12:38:11 +0100 |
|---|---|---|
| committer | Jakub Stachurski <j.stachurski@student.utwente.nl> | 2026-03-08 12:38:11 +0100 |
| commit | cd81083acb98174f834b61d6252caa28797b846f (patch) | |
| tree | a52bb11ce52112dce7f908fe8197299651a57fba | |
| parent | e8a9dcdc8befea9cdfbf28646a607c0c41a1fc98 (diff) | |
Get rid of redundant copies in shader.
| -rw-r--r-- | src/shader_own.wgsl | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/src/shader_own.wgsl b/src/shader_own.wgsl index 453e2cf..5645629 100644 --- a/src/shader_own.wgsl +++ b/src/shader_own.wgsl @@ -1,5 +1,5 @@ struct SHA256_CTX { - data : array<u32, 16>, + data : array<u32, 64>, bitlen: array<u32, 2>, state: array<u32, 8>, // info: array<u32, 8>, @@ -97,24 +97,20 @@ fn sha256_transform(ctx: ptr<function, SHA256_CTX>) { var h : u32 = (*ctx).state[7]; var t1 : u32; var t2 : u32; - var m: array<u32,64>; - for (var x: u32 = 0; x < 16; x++) { - m[x] = flip_endian((*ctx).data[x]); - } for (var x: u32 = 16; x < 64; x++) { // W_16 = w_0 + sig0(w_1) + w_9 + sig1(w_14) - m[x]= m[x-16] + SIG0(m[x-15]) + m[x-7] + SIG1(m[x-2]); + (*ctx).data[x]= (*ctx).data[x-16] + SIG0((*ctx).data[x-15]) + (*ctx).data[x-7] + SIG1((*ctx).data[x-2]); // if (x >= 16 && x < 24) { // var z = x - 16; - // (*ctx).info[z] = m[x]; + // (*ctx).info[z] = (*ctx).data[x]; // } } for (var x: u32 = 0; x < 64; x++) { - t1 = h + EP1(e) + CH(e, f, g) + k[x] + m[x]; + t1 = h + EP1(e) + CH(e, f, g) + k[x] + (*ctx).data[x]; t2 = EP0(a) + MAJ(a,b,c); h = g; g = f; @@ -124,8 +120,7 @@ fn sha256_transform(ctx: ptr<function, SHA256_CTX>) { c = b; b = a; a = t1 + t2; - - } + } (*ctx).state[0] += a; (*ctx).state[1] += b; @@ -136,11 +131,6 @@ fn sha256_transform(ctx: ptr<function, SHA256_CTX>) { (*ctx).state[6] += g; (*ctx).state[7] += h; - for (var x: u32 = 0; x < 64; x++) { - (*ctx).data[x] = m[x]; - } - - } fn sha256_append_len(ctx: ptr<function, SHA256_CTX>, len: u32) { @@ -156,7 +146,7 @@ fn sha256_update(ctx: ptr<function, SHA256_CTX>, index: u32) { var block_index = 0u; while len > 64 { for (var i : u32 = 0; i < 16; i++) { - (*ctx).data[i] = inputs[index].data[16 * block_index + i]; + (*ctx).data[i] = flip_endian(inputs[index].data[16 * block_index + i]); } sha256_transform(ctx); sha256_append_len(ctx, 512); @@ -164,9 +154,9 @@ fn sha256_update(ctx: ptr<function, SHA256_CTX>, index: u32) { len -= 64; } var imax = len/4; - if (len % 4 > 0) {imax += 1;} + // if (len % 4 > 0) {imax += 1;} for (var i : u32 = 0; i < (imax); i++) { - (*ctx).data[i] = inputs[index].data[16 * block_index + i]; + (*ctx).data[i] = flip_endian(inputs[index].data[16 * block_index + i]); } for(var i = imax; i < 16; i ++) { (*ctx).data[i] = 0; @@ -176,7 +166,7 @@ fn sha256_update(ctx: ptr<function, SHA256_CTX>, index: u32) { var last_word: u32 = (len - offset) / 4; // if (offset == 0) {last_word += 1;} var padding_word: u32 = (0x80u << (8 * offset)); - (*ctx).data[last_word] = ((*ctx).data[last_word] & full_masks[offset]) | padding_word; + (*ctx).data[last_word] = flip_endian((inputs[index].data[16*block_index + last_word] & full_masks[offset]) | padding_word); // for (var i: u32 = 0; i < 8; i++) { // (*ctx).info[i] = (*ctx).data[i]; @@ -194,8 +184,8 @@ fn sha256_update(ctx: ptr<function, SHA256_CTX>, index: u32) { var final_len: u32 = (len*8); sha256_append_len(ctx, final_len); - var upper = flip_endian((*ctx).bitlen[0]); - var lower = flip_endian((*ctx).bitlen[1]); + var upper = (*ctx).bitlen[0]; + var lower = (*ctx).bitlen[1]; (*ctx).data[15] = upper; (*ctx).data[14] = lower; |
