diff options
-rw-r--r-- | shaders/README | 25 | ||||
-rw-r--r-- | shaders/converter.py | 26 | ||||
-rw-r--r-- | shaders/gpgpu/README | 4 | ||||
-rw-r--r-- | shaders/gpgpu/gpgpu_fill_gen8.asm | 10 | ||||
-rw-r--r-- | shaders/gpgpu/gpgpu_fill_gen9.asm | 10 | ||||
-rw-r--r-- | shaders/media/README | 5 | ||||
-rw-r--r-- | shaders/media/media_fill_gen8.asm | 11 | ||||
-rw-r--r-- | shaders/ps/README | 1 | ||||
-rw-r--r-- | shaders/ps/blit_gen8.asm | 7 | ||||
-rw-r--r-- | shaders/ps/neg1_gen8.asm | 9 |
10 files changed, 98 insertions, 10 deletions
diff --git a/shaders/README b/shaders/README new file mode 100644 index 00000000..06b9883c --- /dev/null +++ b/shaders/README @@ -0,0 +1,25 @@ +This directory is for shaders used in media_fill, gpgpu_fill, rendercopy +and media_spin libraries. + +Till Gen8 shaders were generated using intel-gen4asm script (implementation in +assembler/ directory). From Gen8 it is possible to use Intel Graphics Assembler +to generate binary from asm instructions. +https://github.com/intel/intel-graphics-compiler + 1. Clone IGC project + 2. Go to igc/visa/iga + 3. Build iga + cmake . && make + +For maintaining compatibility with our tests there is a bin to hex converter +written in python: + $>converter.py input_file > output_file +e.g.$>python converter.py gen9_iga_output > gen9_hex_array + +Commands used to generate the shader on gen7 +$> m4 gpgpu_fill.gxa > gpgpu_fill.gxm +$> intel-gen4asm -g 7 -o <output> gpgpu_fill.gxm + +Commands used to generate the shader on gen8 +$> m4 media_fill.gxa > media_fill.gxm +$> intel-gen4asm -g 8 -o <output> media_fill.gxm + diff --git a/shaders/converter.py b/shaders/converter.py new file mode 100644 index 00000000..25a79a94 --- /dev/null +++ b/shaders/converter.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +import struct +import sys +import argparse + +parser=argparse.ArgumentParser( + description='''Script for converting shaders from binary to hex ''' ) +parser = argparse.ArgumentParser(prog='converter.py', usage='%(prog)s binary_file') +parser.add_argument('binary', nargs=1, help='binary_file') +args=parser.parse_args() + +print "static const uint32_t kernel[][4] = {" +with open(sys.argv[1], 'r') as f: + fmt = '<LLLL' + step = struct.calcsize(fmt) + while True: + buf = f.read(step) + if not buf: + break + elif len(buf) < step: + buf += '\x00' * (step - len(buf)) + + val = struct.unpack('<LLLL', buf) + print "\t{{ 0x{:08x}, 0x{:08x}, 0x{:08x}, 0x{:08x} }},".format(*val) + +print "};" diff --git a/shaders/gpgpu/README b/shaders/gpgpu/README deleted file mode 100644 index 3bf328ad..00000000 --- a/shaders/gpgpu/README +++ /dev/null @@ -1,4 +0,0 @@ - -Commands used to generate the shader on gen7 -$> m4 gpgpu_fill.gxa > gpgpu_fill.gxm -$> intel-gen4asm -g 7 -o <output> gpgpu_fill.gxm diff --git a/shaders/gpgpu/gpgpu_fill_gen8.asm b/shaders/gpgpu/gpgpu_fill_gen8.asm new file mode 100644 index 00000000..448e0256 --- /dev/null +++ b/shaders/gpgpu/gpgpu_fill_gen8.asm @@ -0,0 +1,10 @@ + mov (4|M0) r1.0<1>:ub r1.0<0;1,0>:ub + mul (1|M0) r2.0<1>:ud r0.1<0;1,0>:ud 0x10:ud + mov (1|M0) r2.1<1>:ud r0.6<0;1,0>:ud + mov (8|M0) r4.0<1>:ud r0.0<8;8,1>:ud + mov (2|M0) r4.0<1>:ud r2.0<2;2,1>:ud + mov (1|M0) r4.2<1>:ud 0xF:ud + mov (16|M0) (eq)f0.0 r5.0<1>:ud r1.0<0;1,0>:ud + send (16|M0) acc0.0:uw r4:d 0xC 0x060A8000 // DP_DC1 wr:3h, rd:0, fc: 0x28000 + mov (8|M0) r112.0<1>:ud r0.0<8;8,1>:ud + send (16|M0) null:uw r112:d 0x27 0x02000010 {EOT} // SPAWNER wr:1, rd:0, fc: 0x10 diff --git a/shaders/gpgpu/gpgpu_fill_gen9.asm b/shaders/gpgpu/gpgpu_fill_gen9.asm new file mode 100644 index 00000000..6f948935 --- /dev/null +++ b/shaders/gpgpu/gpgpu_fill_gen9.asm @@ -0,0 +1,10 @@ + mov (4|M0) r1.0<1>:ub r1.0<0;1,0>:ub + mul (1|M0) r2.0<1>:ud r0.1<0;1,0>:ud 0x10:ud + mov (1|M0) r2.1<1>:ud r0.6<0;1,0>:ud + mov (8|M0) r4.0<1>:ud r0.0<8;8,1>:ud + mov (2|M0) r4.0<1>:ud r2.0<2;2,1>:ud + mov (1|M0) r4.2<1>:ud 0xF:ud + mov (16|M0) r5.0<1>:ud r1.0<0;1,0>:ud + send (16|M0) acc0.0:uw r4:d 0xC 0x060A8000 // DP_DC1 wr:3h, rd:0, fc: 0x28000 + mov (8|M0) r112.0<1>:ud r0.0<8;8,1>:ud + send (16|M0) null:uw r112:d 0x27 0x02000010 {EOT} // SPAWNER wr:1, rd:0, fc: 0x10 diff --git a/shaders/media/README b/shaders/media/README deleted file mode 100644 index 9f296010..00000000 --- a/shaders/media/README +++ /dev/null @@ -1,5 +0,0 @@ -These files are here for reference only. - -Commands used to generate the shader on gen8 -$> m4 media_fill.gxa > media_fill.gxm -$> intel-gen4asm -g 8 -o <output> media_fill.gxm diff --git a/shaders/media/media_fill_gen8.asm b/shaders/media/media_fill_gen8.asm new file mode 100644 index 00000000..4b6eb84b --- /dev/null +++ b/shaders/media/media_fill_gen8.asm @@ -0,0 +1,11 @@ + mov (4|M0) r1.0<1>:ub r1.0<0;1,0>:ub + mov (8|M0) r4.0<1>:ud r0.0<8;8,1>:ud + mov (2|M0) r4.0<1>:ud r2.0<2;2,1>:ud + mov (1|M0) r4.2<1>:ud 0xF000F:ud + mov (16|M0) r5.0<1>:ud r1.0<0;1,0>:ud + mov (16|M0) r7.0<1>:ud r1.0<0;1,0>:ud + mov (16|M0) r9.0<1>:ud r1.0<0;1,0>:ud + mov (16|M0) r11.0<1>:ud r1.0<0;1,0>:ud + send (16|M0) acc0.0:uw r4:d 0x1000000C 0x120A8000 // DP_DC1 wr:9h, rd:0, fc: 0x28000 + mov (8|M0) r112.0<1>:ud r0.0<8;8,1>:ud + send (16|M0) null:uw r112:d 0x10000027 0x02000010 {EOT} // SPAWNER wr:1, rd:0, fc: 0x10 diff --git a/shaders/ps/README b/shaders/ps/README deleted file mode 100644 index b196d025..00000000 --- a/shaders/ps/README +++ /dev/null @@ -1 +0,0 @@ -These files are here for reference only. diff --git a/shaders/ps/blit_gen8.asm b/shaders/ps/blit_gen8.asm new file mode 100644 index 00000000..c35b70a1 --- /dev/null +++ b/shaders/ps/blit_gen8.asm @@ -0,0 +1,7 @@ + pln (8|M0) r10.0<1>:f r6.0<0;1,0>:f r2.0<8;8,1>:f + pln (8|M0) r11.0<1>:f r6.0<0;1,0>:f r4.0<8;8,1>:f + pln (8|M0) r12.0<1>:f r6.4<0;1,0>:f r2.0<8;8,1>:f + pln (8|M0) 13.0<1>:f r6.4<0;1,0>:f r4.0<8;8,1>:f + send (16|M0) r112:f r10:ub 0x10000002 0x08840001 // SAMPLER wr:4, rd:8, fc: 0x40001 + send (16|M0) null:f r112:ub 0x10000025 0x10031000 {EOT} // DP_RC wr:8, rd:0, Render Target Write msc:16, to #0 + diff --git a/shaders/ps/neg1_gen8.asm b/shaders/ps/neg1_gen8.asm new file mode 100644 index 00000000..582375b5 --- /dev/null +++ b/shaders/ps/neg1_gen8.asm @@ -0,0 +1,9 @@ +mov(8) r112:ud 0x3f800000:ud +mov(8) r113:ud 0x3f800000:ud +mov(8) r114:ud 0x3f800000:ud +mov(8) r115:ud 0x3f800000:ud +mov(8) r116:ud 0x3f800000:ud +mov(8) r117:ud 0x3f800000:ud +mov(8) r118:ud 0x3f800000:ud +mov(8) r119:ud 0x3f800000:ud +send(16) null r112 0x25 0x10031000 { EOT } |