From 83352d08b52acd6ee677f9f62dd032b0b8d31835 Mon Sep 17 00:00:00 2001 From: Katarzyna Dec Date: Tue, 18 Sep 2018 12:30:44 -0700 Subject: lib/gpgpu_fill: Implement gpgpu_fillfunc for Gen11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added gen11_gpgpu_fillfunc to have gpgpu_fill passing on Gen11. Gpgpu shader was generated using IGA (Intel Graphics Assembler) based on binary found in lib/gpgpu_fill.c to match the changes in Gen11 HW: Changed 'mul' instruction to 'shl' (since Gen11 'mul' does not support integer values for both src and dest). Changed SEND message descriptor (it should have length 2 not 3). Cc: Lukasz Kalamarz Cc: Rodrigo Vivi Tested-by: José Roberto de Souza Signed-off-by: Katarzyna Dec Signed-off-by: Lukasz Kalamarz Acked-by: Katarzyna Dec Signed-off-by: Rodrigo Vivi --- lib/gpgpu_fill.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'lib/gpgpu_fill.c') diff --git a/lib/gpgpu_fill.c b/lib/gpgpu_fill.c index a276e9d0..af2935ab 100644 --- a/lib/gpgpu_fill.c +++ b/lib/gpgpu_fill.c @@ -74,6 +74,19 @@ static const uint32_t gen9_gpgpu_kernel[][4] = { { 0x07800031, 0x20000a40, 0x06000e00, 0x82000010 }, }; +static const uint32_t gen11_gpgpu_kernel[][4] = { + { 0x00400001, 0x20202288, 0x00000020, 0x00000000 }, + { 0x00000009, 0x20400208, 0x06000004, 0x00000004 }, + { 0x00000001, 0x20440208, 0x00000018, 0x00000000 }, + { 0x00600001, 0x20800208, 0x008d0000, 0x00000000 }, + { 0x00200001, 0x20800208, 0x00450040, 0x00000000 }, + { 0x00000001, 0x20880608, 0x00000000, 0x0000000f }, + { 0x00800001, 0x20a00208, 0x00000020, 0x00000000 }, + { 0x0c800031, 0x24000a40, 0x06000080, 0x040a8000 }, + { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 }, + { 0x07800031, 0x20000a40, 0x06000e00, 0x82000010 }, +}; + /* * This sets up the gpgpu pipeline, * @@ -259,3 +272,13 @@ void gen9_gpgpu_fillfunc(struct intel_batchbuffer *batch, __gen9_gpgpu_fillfunc(batch, dst, x, y, width, height, color, gen9_gpgpu_kernel, sizeof(gen9_gpgpu_kernel)); } + +void gen11_gpgpu_fillfunc(struct intel_batchbuffer *batch, + const struct igt_buf *dst, + unsigned int x, unsigned int y, + unsigned int width, unsigned int height, + uint8_t color) +{ + __gen9_gpgpu_fillfunc(batch, dst, x, y, width, height, color, + gen11_gpgpu_kernel, sizeof(gen11_gpgpu_kernel)); +} -- cgit v1.2.3