* [igt-dev] [PATCH i-g-t v2 1/2] shaders: Add assembler instructions and update README for shaders
2018-10-03 13:48 [igt-dev] [PATCH i-g-t v2 0/2] Shaders documentation RESENDING Katarzyna Dec
@ 2018-10-03 13:48 ` Katarzyna Dec
2018-10-04 7:53 ` Arkadiusz Hiler
2018-10-03 13:48 ` [igt-dev] [PATCH i-g-t v2 2/2] lib/i915: Move shaders directory Katarzyna Dec
2018-10-03 17:33 ` [igt-dev] ✓ Fi.CI.BAT: success for Shaders documentation RESENDING (rev3) Patchwork
2 siblings, 1 reply; 5+ messages in thread
From: Katarzyna Dec @ 2018-10-03 13:48 UTC (permalink / raw)
To: igt-dev
We're not planning to work on assembler in igt anymore, since we can
reuse an existing project (IGA) that will do this work for us. The
only extra thing we need to do is convert the result binary to C-array,
simple python script.
v2: Moved converter to single file. Fixed README for shaders.
v3: Fixed typos.
v4: Used python3 in converter. Added 'usage' section to script. Droped
readme files for particular shaders and consolidated all needed
information in one general file.
Signed-off-by: Katarzyna Dec <katarzyna.dec@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Kalamarz Lukasz <lukasz.kalamarz@intel.com>
Cc: Antonio Argenziano <antonio.argenziano@intel.com>
---
shaders/README | 25 +++++++++++++++++++++++++
shaders/converter.py | 26 ++++++++++++++++++++++++++
shaders/gpgpu/README | 4 ----
shaders/gpgpu/gpgpu_fill_gen8.asm | 10 ++++++++++
shaders/gpgpu/gpgpu_fill_gen9.asm | 10 ++++++++++
shaders/media/README | 5 -----
shaders/media/media_fill_gen8.asm | 11 +++++++++++
shaders/ps/README | 1 -
shaders/ps/blit_gen8.asm | 7 +++++++
shaders/ps/neg1_gen8.asm | 9 +++++++++
10 files changed, 98 insertions(+), 10 deletions(-)
create mode 100644 shaders/README
create mode 100644 shaders/converter.py
delete mode 100644 shaders/gpgpu/README
create mode 100644 shaders/gpgpu/gpgpu_fill_gen8.asm
create mode 100644 shaders/gpgpu/gpgpu_fill_gen9.asm
delete mode 100644 shaders/media/README
create mode 100644 shaders/media/media_fill_gen8.asm
delete mode 100644 shaders/ps/README
create mode 100644 shaders/ps/blit_gen8.asm
create mode 100644 shaders/ps/neg1_gen8.asm
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 }
--
2.17.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 5+ messages in thread* [igt-dev] [PATCH i-g-t v2 2/2] lib/i915: Move shaders directory
2018-10-03 13:48 [igt-dev] [PATCH i-g-t v2 0/2] Shaders documentation RESENDING Katarzyna Dec
2018-10-03 13:48 ` [igt-dev] [PATCH i-g-t v2 1/2] shaders: Add assembler instructions and update README for shaders Katarzyna Dec
@ 2018-10-03 13:48 ` Katarzyna Dec
2018-10-03 17:33 ` [igt-dev] ✓ Fi.CI.BAT: success for Shaders documentation RESENDING (rev3) Patchwork
2 siblings, 0 replies; 5+ messages in thread
From: Katarzyna Dec @ 2018-10-03 13:48 UTC (permalink / raw)
To: igt-dev
In shaders/ directory we got Intel specific information. As igt
is a project for more vendors, let's move this directory to
lib/i915.
v2: Changed shaders directory path in library files comments.
Signed-off-by: Katarzyna Dec <katarzyna.dec@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Kalamarz Lukasz <lukasz.kalamarz@intel.com>
Cc: Antonio Argenziano <antonio.argenziano@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
---
lib/gpgpu_fill.c | 2 +-
{shaders => lib/i915/shaders}/README | 0
{shaders => lib/i915/shaders}/converter.py | 0
{shaders => lib/i915/shaders}/gpgpu/gpgpu_fill.gxa | 0
{shaders => lib/i915/shaders}/gpgpu/gpgpu_fill_gen8.asm | 0
{shaders => lib/i915/shaders}/gpgpu/gpgpu_fill_gen9.asm | 0
{shaders => lib/i915/shaders}/media/media_fill.gxa | 0
{shaders => lib/i915/shaders}/media/media_fill_gen8.asm | 0
{shaders => lib/i915/shaders}/ps/blit.g7a | 0
{shaders => lib/i915/shaders}/ps/blit_gen8.asm | 0
{shaders => lib/i915/shaders}/ps/neg1_gen8.asm | 0
{shaders => lib/i915/shaders}/ps/neg1_test.g7a | 0
lib/rendercopy_gen8.c | 2 +-
lib/rendercopy_gen9.c | 2 +-
14 files changed, 3 insertions(+), 3 deletions(-)
rename {shaders => lib/i915/shaders}/README (100%)
rename {shaders => lib/i915/shaders}/converter.py (100%)
rename {shaders => lib/i915/shaders}/gpgpu/gpgpu_fill.gxa (100%)
rename {shaders => lib/i915/shaders}/gpgpu/gpgpu_fill_gen8.asm (100%)
rename {shaders => lib/i915/shaders}/gpgpu/gpgpu_fill_gen9.asm (100%)
rename {shaders => lib/i915/shaders}/media/media_fill.gxa (100%)
rename {shaders => lib/i915/shaders}/media/media_fill_gen8.asm (100%)
rename {shaders => lib/i915/shaders}/ps/blit.g7a (100%)
rename {shaders => lib/i915/shaders}/ps/blit_gen8.asm (100%)
rename {shaders => lib/i915/shaders}/ps/neg1_gen8.asm (100%)
rename {shaders => lib/i915/shaders}/ps/neg1_test.g7a (100%)
diff --git a/lib/gpgpu_fill.c b/lib/gpgpu_fill.c
index af2935ab..003f4616 100644
--- a/lib/gpgpu_fill.c
+++ b/lib/gpgpu_fill.c
@@ -34,7 +34,7 @@
#include "gpgpu_fill.h"
#include "gpu_cmds.h"
-/* shaders/gpgpu/gpgpu_fill.gxa */
+/* lib/i915/shaders/gpgpu/gpgpu_fill.gxa */
static const uint32_t gen7_gpgpu_kernel[][4] = {
{ 0x00400001, 0x20200231, 0x00000020, 0x00000000 },
{ 0x00000041, 0x20400c21, 0x00000004, 0x00000010 },
diff --git a/shaders/README b/lib/i915/shaders/README
similarity index 100%
rename from shaders/README
rename to lib/i915/shaders/README
diff --git a/shaders/converter.py b/lib/i915/shaders/converter.py
similarity index 100%
rename from shaders/converter.py
rename to lib/i915/shaders/converter.py
diff --git a/shaders/gpgpu/gpgpu_fill.gxa b/lib/i915/shaders/gpgpu/gpgpu_fill.gxa
similarity index 100%
rename from shaders/gpgpu/gpgpu_fill.gxa
rename to lib/i915/shaders/gpgpu/gpgpu_fill.gxa
diff --git a/shaders/gpgpu/gpgpu_fill_gen8.asm b/lib/i915/shaders/gpgpu/gpgpu_fill_gen8.asm
similarity index 100%
rename from shaders/gpgpu/gpgpu_fill_gen8.asm
rename to lib/i915/shaders/gpgpu/gpgpu_fill_gen8.asm
diff --git a/shaders/gpgpu/gpgpu_fill_gen9.asm b/lib/i915/shaders/gpgpu/gpgpu_fill_gen9.asm
similarity index 100%
rename from shaders/gpgpu/gpgpu_fill_gen9.asm
rename to lib/i915/shaders/gpgpu/gpgpu_fill_gen9.asm
diff --git a/shaders/media/media_fill.gxa b/lib/i915/shaders/media/media_fill.gxa
similarity index 100%
rename from shaders/media/media_fill.gxa
rename to lib/i915/shaders/media/media_fill.gxa
diff --git a/shaders/media/media_fill_gen8.asm b/lib/i915/shaders/media/media_fill_gen8.asm
similarity index 100%
rename from shaders/media/media_fill_gen8.asm
rename to lib/i915/shaders/media/media_fill_gen8.asm
diff --git a/shaders/ps/blit.g7a b/lib/i915/shaders/ps/blit.g7a
similarity index 100%
rename from shaders/ps/blit.g7a
rename to lib/i915/shaders/ps/blit.g7a
diff --git a/shaders/ps/blit_gen8.asm b/lib/i915/shaders/ps/blit_gen8.asm
similarity index 100%
rename from shaders/ps/blit_gen8.asm
rename to lib/i915/shaders/ps/blit_gen8.asm
diff --git a/shaders/ps/neg1_gen8.asm b/lib/i915/shaders/ps/neg1_gen8.asm
similarity index 100%
rename from shaders/ps/neg1_gen8.asm
rename to lib/i915/shaders/ps/neg1_gen8.asm
diff --git a/shaders/ps/neg1_test.g7a b/lib/i915/shaders/ps/neg1_test.g7a
similarity index 100%
rename from shaders/ps/neg1_test.g7a
rename to lib/i915/shaders/ps/neg1_test.g7a
diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c
index 1319b9e4..beb7a9b3 100644
--- a/lib/rendercopy_gen8.c
+++ b/lib/rendercopy_gen8.c
@@ -48,7 +48,7 @@ struct {
uint32_t sf_clip_state;
} viewport;
-/* see shaders/ps/blit.g7a */
+/* see lib/i915/shaders/ps/blit.g7a */
static const uint32_t ps_kernel[][4] = {
#if 1
{ 0x0080005a, 0x2f403ae8, 0x3a0000c0, 0x008d0040 },
diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index 0ed89776..f324fbd7 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -49,7 +49,7 @@ struct {
uint32_t sf_clip_state;
} viewport;
-/* see shaders/ps/blit.g7a */
+/* see lib/i915/shaders/ps/blit.g7a */
static const uint32_t ps_kernel[][4] = {
#if 1
{ 0x0080005a, 0x2f403ae8, 0x3a0000c0, 0x008d0040 },
--
2.17.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 5+ messages in thread