summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shaders/README25
-rw-r--r--shaders/converter.py26
-rw-r--r--shaders/gpgpu/README4
-rw-r--r--shaders/gpgpu/gpgpu_fill_gen8.asm10
-rw-r--r--shaders/gpgpu/gpgpu_fill_gen9.asm10
-rw-r--r--shaders/media/README5
-rw-r--r--shaders/media/media_fill_gen8.asm11
-rw-r--r--shaders/ps/README1
-rw-r--r--shaders/ps/blit_gen8.asm7
-rw-r--r--shaders/ps/neg1_gen8.asm9
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 }