From patchwork Thu Feb 28 05:43:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Flora Cui X-Patchwork-Id: 10832553 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3641C1805 for ; Thu, 28 Feb 2019 05:43:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 257DE2DDC6 for ; Thu, 28 Feb 2019 05:43:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1757B2DDC3; Thu, 28 Feb 2019 05:43:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4B6E02DDC3 for ; Thu, 28 Feb 2019 05:43:54 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B6E406E0F8; Thu, 28 Feb 2019 05:43:51 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-eopbgr780073.outbound.protection.outlook.com [40.107.78.73]) by gabe.freedesktop.org (Postfix) with ESMTPS id BB9446E0F8; Thu, 28 Feb 2019 05:43:50 +0000 (UTC) Received: from BYAPR12MB3301.namprd12.prod.outlook.com (20.179.93.222) by BYAPR12MB3605.namprd12.prod.outlook.com (20.178.197.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.15; Thu, 28 Feb 2019 05:43:48 +0000 Received: from BYAPR12MB3301.namprd12.prod.outlook.com ([fe80::9f9:5b52:f810:6b77]) by BYAPR12MB3301.namprd12.prod.outlook.com ([fe80::9f9:5b52:f810:6b77%5]) with mapi id 15.20.1643.019; Thu, 28 Feb 2019 05:43:47 +0000 From: "Cui, Flora" To: "amd-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Subject: [PATCH libdrm 1/2] tests/amdgpu: add memset dispatch test Thread-Topic: [PATCH libdrm 1/2] tests/amdgpu: add memset dispatch test Thread-Index: AQHUzyiTL8THTupAMEKGjEdoWtDNUQ== Date: Thu, 28 Feb 2019 05:43:47 +0000 Message-ID: <1551332606-10141-1-git-send-email-flora.cui@amd.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [180.167.199.189] x-clientproxiedby: HK2PR04CA0090.apcprd04.prod.outlook.com (2603:1096:202:15::34) To BYAPR12MB3301.namprd12.prod.outlook.com (2603:10b6:a03:139::30) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d88a4781-3385-406f-edd7-08d69d3fb53c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:BYAPR12MB3605; x-ms-traffictypediagnostic: BYAPR12MB3605: x-microsoft-exchange-diagnostics: 1; BYAPR12MB3605; 20:4gDp9l5TmuqGiMMRl0lFmXgagWTS+Lnk41UnqRWNGq4koWOgT7poy55HMqaC+Rs6wxpMINAjE6lb+hHeoRwq1luOEF3SPYzmwXvNWSIBvMNHzMPYbM4lnZmdxMvfK6BoMsu7eQf0EYWT1OXsETlpI8xStMye6ApWqSmCKAHTxyaqelxaunIXemu5yvb4ajPfQpl4oW2BkSFrzRuyKMOEcigIQaVx1YFRG3th01Nsig8gbAi+8CW9Dq/aBRwgOBfA x-microsoft-antispam-prvs: x-forefront-prvs: 0962D394D2 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(396003)(39860400002)(366004)(376002)(346002)(189003)(199004)(110136005)(316002)(52116002)(102836004)(53936002)(476003)(386003)(6506007)(2616005)(99286004)(5660300002)(305945005)(4326008)(2501003)(25786009)(7736002)(106356001)(71200400001)(105586002)(71190400001)(86362001)(450100002)(81156014)(26005)(66066001)(68736007)(8936002)(81166006)(6436002)(14454004)(8676002)(50226002)(6486002)(36756003)(2906002)(14444005)(72206003)(97736004)(486006)(478600001)(3846002)(186003)(256004)(6512007)(6116002); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR12MB3605; H:BYAPR12MB3301.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: d4a1HF501WgmDWp4yU5VUgyCv7EVhuMmRotBftADnYbdLeDtDjkk2Qb4DdVJ9AWdJbu2jVdxBCItaBQVZ4fUuyxSW1KQ7Tg+zRM1HUvMR6F3mFtqY1Zn1rDN3qFKVHtGhWgEuuyTgvRBpAuD+HorVnmxJj11kraiCB9cNp1z2C9PxDrV5A1DKmBQ9gJnj23XcTNTYC5SbEYAcDqk5iZAMs5S8IF1xTTONIjRY4Es8hnFNqzmkvy9jCu5LjKNNzXSo1DAikW7nca06cJpNAFaTDSHvJ7m2acD44spea+IqBoTeVVftC9lUiA+iiFZTRo0k9MOb4RfJLLuZl8kEwngmlefb2J1Ho5jO4N5oohb1ZScxJZmkRDTFAWpnLfLlVrPhlFMaJMu1bG6FcAMoVZHkznwVB1RhOvN5lSbwFs5mM4= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: d88a4781-3385-406f-edd7-08d69d3fb53c X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2019 05:43:45.9477 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3605 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t6swaC1LIQYJVSlTdH7ZNF4Enk0WhuEwUDLw/pSw9ns=; b=XcNeNcmktOYPzMTVQlj+yApnHvknQNNCn1vOaHtaV7KPXOSRpOCh9gCI6rhnRgpvzenseJPjAt9qRx7v/sp6RvEIp1ntHJm0t+bZnZqt8bJV7Z1/FXyhgTE+IZljzLZBPXtahkjyAFAtC5Gg3zihrXzKui/iFafunf8wammRqzs= X-Mailman-Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Flora.Cui@amd.com; X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Cui, Flora" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP add memset dispatch test for gfx9 Change-Id: If607fbd9c6e49ca830a662adc24fe6b1e2a25bfb Signed-off-by: Flora Cui Tested-by: Rui Teng --- tests/amdgpu/basic_tests.c | 215 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 213 insertions(+), 2 deletions(-) diff --git a/tests/amdgpu/basic_tests.c b/tests/amdgpu/basic_tests.c index dbae4d5..d4b0faf 100644 --- a/tests/amdgpu/basic_tests.c +++ b/tests/amdgpu/basic_tests.c @@ -49,6 +49,7 @@ static void amdgpu_userptr_test(void); static void amdgpu_semaphore_test(void); static void amdgpu_sync_dependency_test(void); static void amdgpu_bo_eviction_test(void); +static void amdgpu_dispatch_test(void); static void amdgpu_command_submission_write_linear_helper(unsigned ip_type); static void amdgpu_command_submission_const_fill_helper(unsigned ip_type); @@ -70,6 +71,7 @@ CU_TestInfo basic_tests[] = { { "Command submission Test (SDMA)", amdgpu_command_submission_sdma }, { "SW semaphore Test", amdgpu_semaphore_test }, { "Sync dependency Test", amdgpu_sync_dependency_test }, + { "Dispatch Test", amdgpu_dispatch_test }, CU_TEST_INFO_NULL, }; #define BUFFER_SIZE (8 * 1024) @@ -117,6 +119,7 @@ CU_TestInfo basic_tests[] = { #define PACKET3(op, n) ((PACKET_TYPE3 << 30) | \ (((op) & 0xFF) << 8) | \ ((n) & 0x3FFF) << 16) +#define PACKET3_COMPUTE(op, n) PACKET3(op, n) | (1 << 1) /* Packet 3 types */ #define PACKET3_NOP 0x10 @@ -245,8 +248,8 @@ CU_TestInfo basic_tests[] = { #define PACKET3_SET_SH_REG_START 0x00002c00 #define PACKET3_DISPATCH_DIRECT 0x15 - - +#define PACKET3_EVENT_WRITE 0x46 +#define PACKET3_ACQUIRE_MEM 0x58 /* gfx 8 */ #define mmCOMPUTE_PGM_LO 0x2e0c #define mmCOMPUTE_PGM_RSRC1 0x2e12 @@ -286,6 +289,21 @@ static uint32_t shader_bin[] = { #define CODE_OFFSET 512 #define DATA_OFFSET 1024 +static const uint32_t bufferclear_cs_shader_gfx9[] = { + 0xD1FD0000, 0x04010C08, 0x7E020204, 0x7E040205, + 0x7E060206, 0x7E080207, 0xE01C2000, 0x80000100, + 0xBF810000 +}; + +static const uint32_t bufferclear_cs_shader_registers_gfx9[][2] = { + {0x2E12, 0x000C0041}, //{ mmCOMPUTE_PGM_RSRC1, 0x000C0041 }, + {0x2E13, 0x00000090}, //{ mmCOMPUTE_PGM_RSRC2, 0x00000090 }, + {0x2E07, 0x00000040}, //{ mmCOMPUTE_NUM_THREAD_X, 0x00000040 }, + {0x2E08, 0x00000001}, //{ mmCOMPUTE_NUM_THREAD_Y, 0x00000001 }, + {0x2E09, 0x00000001}, //{ mmCOMPUTE_NUM_THREAD_Z, 0x00000001 } +}; + +static const uint32_t bufferclear_cs_shader_registers_num_gfx9 = 5; int amdgpu_bo_alloc_and_map_raw(amdgpu_device_handle dev, unsigned size, unsigned alignment, unsigned heap, uint64_t alloc_flags, @@ -1883,3 +1901,196 @@ static void amdgpu_sync_dependency_test(void) free(ibs_request.dependencies); } + +static int amdgpu_dispatch_init(uint32_t ip_type, + uint32_t version, + uint32_t *ptr) +{ + int i = 0; + + /* Write context control and load shadowing register if necessary */ + if (ip_type == AMDGPU_HW_IP_GFX) { + ptr[i++] = PACKET3(PKT3_CONTEXT_CONTROL, 1); + ptr[i++] = 0x80000000; + ptr[i++] = 0x80000000; + } + + /* Issue commands to set default compute state. */ + /* clear mmCOMPUTE_START_Z - mmCOMPUTE_START_X */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 3); + ptr[i++] = 0x204; + i += 3; + /* clear mmCOMPUTE_RESOURCE_LIMITS */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 1); + ptr[i++] = 0x215; + ptr[i++] = 0; + /* clear mmCOMPUTE_TMPRING_SIZE */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 1); + ptr[i++] = 0x218; + ptr[i++] = 0; + + return i; +} + +static int amdgpu_dispatch_write_cumask(uint32_t ip_type, + uint32_t version, + uint32_t *ptr) +{ + int i = 0; + + /* Issue commands to set cu mask used in current dispatch */ + /* set mmCOMPUTE_STATIC_THREAD_MGMT_SE1 - mmCOMPUTE_STATIC_THREAD_MGMT_SE0 */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 2); + ptr[i++] = 0x216; + ptr[i++] = 0xffffffff; + ptr[i++] = 0xffffffff; + /* set mmCOMPUTE_STATIC_THREAD_MGMT_SE3 - mmCOMPUTE_STATIC_THREAD_MGMT_SE2 */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 2); + ptr[i++] = 0x219; + ptr[i++] = 0xffffffff; + ptr[i++] = 0xffffffff; + + return i; +} + +static int amdgpu_dispatch_write2hw(uint32_t ip_type, + uint32_t version, + uint32_t *ptr, + uint64_t shader_addr) +{ + int i, j; + + i = 0; + + /* Writes shader state to HW */ + /* set mmCOMPUTE_PGM_HI - mmCOMPUTE_PGM_LO */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 2); + ptr[i++] = 0x20c; + ptr[i++] = (shader_addr >> 8); + ptr[i++] = (shader_addr >> 40); + /* write sh regs*/ + for (j = 0; j < bufferclear_cs_shader_registers_num_gfx9; j++) { + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 1); + /* - Gfx9ShRegBase */ + ptr[i++] = bufferclear_cs_shader_registers_gfx9[j][0] - 0x2c00; + ptr[i++] = bufferclear_cs_shader_registers_gfx9[j][1]; + } + + return i; +} + +static void amdgpu_memset_dispatch_test(uint32_t ip_type) +{ + amdgpu_context_handle context_handle; + amdgpu_bo_handle bo_dst, bo_shader, resources[2]; + volatile unsigned char *ptr_dst; + void *ptr_shader; + uint64_t mc_address_dst, mc_address_shader; + amdgpu_va_handle va_dst, va_shader; + int i, j, r; + uint32_t *ptr; + int bo_dst_size = 16384; + int bo_shader_size = 4096; + struct amdgpu_cs_request ibs_request = {0}; + struct amdgpu_cs_ib_info ib_info= {0}; + uint32_t version, ring_id; + struct drm_amdgpu_info_hw_ip info; + + r = amdgpu_query_hw_ip_info(device_handle, ip_type, 0, &info); + CU_ASSERT_EQUAL(r, 0); + + version = info.hw_ip_version_major; + if (version != 9) { + printf("\tSkip...memset dispatch test is only supported with gfx9\n"); + return; + } + + ptr = calloc(256, sizeof(*ptr)); + CU_ASSERT_NOT_EQUAL(ptr, NULL); + + r = amdgpu_cs_ctx_create(device_handle, &context_handle); + CU_ASSERT_EQUAL(r, 0); + + r = amdgpu_bo_alloc_and_map(device_handle, bo_shader_size, 4096, + AMDGPU_GEM_DOMAIN_VRAM, 0, + &bo_shader, &ptr_shader, + &mc_address_shader, &va_shader); + CU_ASSERT_EQUAL(r, 0); + + memcpy(ptr_shader, bufferclear_cs_shader_gfx9, sizeof(bufferclear_cs_shader_gfx9)); + + for (ring_id = 0; (1 << ring_id) & info.available_rings; ring_id++) { + r = amdgpu_bo_alloc_and_map(device_handle, bo_dst_size, 4096, + AMDGPU_GEM_DOMAIN_VRAM, 0, + &bo_dst, &ptr_dst, + &mc_address_dst, &va_dst); + CU_ASSERT_EQUAL(r, 0); + + i = 0; + i += amdgpu_dispatch_init(ip_type, version, ptr + i); + + /* Issue commands to set cu mask used in current dispatch */ + i += amdgpu_dispatch_write_cumask(ip_type, version, ptr + i); + + /* Writes shader state to HW */ + i += amdgpu_dispatch_write2hw(ip_type, version, ptr + i, mc_address_shader); + + /* Write constant data */ + /* Writes the UAV constant data to the SGPRs. */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 4); + ptr[i++] = 0x240; + ptr[i++] = mc_address_dst; + ptr[i++] = (mc_address_dst > 32) | 0x100000; + ptr[i++] = 0x400; + ptr[i++] = 0x74fac; + + /* Sets a range of pixel shader constants */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 4); + ptr[i++] = 0x244; + ptr[i++] = 0x22222222; + ptr[i++] = 0x22222222; + ptr[i++] = 0x22222222; + ptr[i++] = 0x22222222; + + /* dispatch direct command */ + ptr[i++] = PACKET3_COMPUTE(PACKET3_DISPATCH_DIRECT, 3); + ptr[i++] = 0x10; + ptr[i++] = 1; + ptr[i++] = 1; + ptr[i++] = 1; + + while (i & 7) + ptr[i++] = 0xffff1000; /* type3 nop packet */ + + resources[0] = bo_dst; + resources[1] = bo_shader; + amdgpu_test_exec_cs_helper(context_handle, + ip_type, ring_id, + i, ptr, + 2, resources, + &ib_info, &ibs_request); + + /* verify if memset test result meets with expected */ + i = 0; + while(i < bo_dst_size) { + CU_ASSERT_EQUAL(ptr_dst[i++], 0x22); + } + + r = amdgpu_bo_unmap_and_free(bo_dst, va_dst, mc_address_dst, bo_dst_size); + CU_ASSERT_EQUAL(r, 0); + } + + free(ptr); + + r = amdgpu_bo_unmap_and_free(bo_shader, va_shader, mc_address_shader, bo_shader_size); + CU_ASSERT_EQUAL(r, 0); + r = amdgpu_cs_ctx_free(context_handle); + CU_ASSERT_EQUAL(r, 0); +} + +static void amdgpu_dispatch_test(void) +{ + amdgpu_memset_dispatch_test(AMDGPU_HW_IP_GFX); + + amdgpu_memset_dispatch_test(AMDGPU_HW_IP_COMPUTE); +} From patchwork Thu Feb 28 05:43:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Flora Cui X-Patchwork-Id: 10832555 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 20B461575 for ; Thu, 28 Feb 2019 05:44:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 118172B24C for ; Thu, 28 Feb 2019 05:44:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F18862B660; Thu, 28 Feb 2019 05:44:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 877632B24C for ; Thu, 28 Feb 2019 05:44:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 456956E10B; Thu, 28 Feb 2019 05:44:00 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-eopbgr730042.outbound.protection.outlook.com [40.107.73.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3EAC26E0F9; Thu, 28 Feb 2019 05:43:58 +0000 (UTC) Received: from BYAPR12MB3301.namprd12.prod.outlook.com (20.179.93.222) by BYAPR12MB3432.namprd12.prod.outlook.com (20.178.196.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.15; Thu, 28 Feb 2019 05:43:55 +0000 Received: from BYAPR12MB3301.namprd12.prod.outlook.com ([fe80::9f9:5b52:f810:6b77]) by BYAPR12MB3301.namprd12.prod.outlook.com ([fe80::9f9:5b52:f810:6b77%5]) with mapi id 15.20.1643.019; Thu, 28 Feb 2019 05:43:55 +0000 From: "Cui, Flora" To: "amd-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Subject: [PATCH libdrm 2/2] tests/amdgpu: add memcpy dispatch test Thread-Topic: [PATCH libdrm 2/2] tests/amdgpu: add memcpy dispatch test Thread-Index: AQHUzyiX1fwVwhupIUa1U9icK6BNDA== Date: Thu, 28 Feb 2019 05:43:55 +0000 Message-ID: <1551332606-10141-2-git-send-email-flora.cui@amd.com> References: <1551332606-10141-1-git-send-email-flora.cui@amd.com> In-Reply-To: <1551332606-10141-1-git-send-email-flora.cui@amd.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [180.167.199.189] x-clientproxiedby: HK2PR04CA0090.apcprd04.prod.outlook.com (2603:1096:202:15::34) To BYAPR12MB3301.namprd12.prod.outlook.com (2603:10b6:a03:139::30) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b6e5e95-e8aa-4c0d-0597-08d69d3fba1f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:BYAPR12MB3432; x-ms-traffictypediagnostic: BYAPR12MB3432: x-microsoft-exchange-diagnostics: 1; BYAPR12MB3432; 20:MJ9s+N6k6Lr3eT525sd80IJrbgwJFZ7YTOZvoKygJ81SNWZ7VN1ydlvtaiuA/pqQNkSfkkh4GKmp1zlfYnDQNd75Lz5nzMNfzfPt/TLFH6RyuwX3XoniNCZIWZvaOBAXSL7tpvfsHPe3imge81tVI8wgBfDkRunLlU2+k4jUDE0ipG6KdHdKKA2pRYdh4iymu1J70v/WpeMtiWGzfuknjAfIbzL0DnyTR0zOQOEKHCacxcnrkP045KIJDWg/+9k8 x-microsoft-antispam-prvs: x-forefront-prvs: 0962D394D2 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(136003)(376002)(366004)(396003)(39860400002)(189003)(199004)(97736004)(71200400001)(81156014)(386003)(8676002)(6506007)(6116002)(86362001)(446003)(71190400001)(3846002)(450100002)(53936002)(110136005)(14454004)(305945005)(7736002)(2906002)(256004)(106356001)(102836004)(81166006)(5660300002)(2501003)(26005)(316002)(6512007)(14444005)(36756003)(6486002)(105586002)(6436002)(25786009)(66066001)(11346002)(476003)(72206003)(99286004)(68736007)(50226002)(4326008)(486006)(52116002)(478600001)(2616005)(76176011)(186003)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR12MB3432; H:BYAPR12MB3301.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: nnO9wNrbA9xvIRHTqijXAvOY7blcenSM2o3+kNuKb6DlhwlxJnuL82hpHHFS5+NOzMgWL/Z7o3G4jrU682Xs2Z6vKxqBO2VLthk9JcvnlVQTzhOH9k2IcrJknm5KG8MaqfP6uIWRFEBfelEniqdQ1szjSIqk1BGRyXlVhajuoDpa58+VmOeaXmQTsvUR6IBW9LYUhP9zv9PRkZZTvP/eNKKqqIkWTI/7U4LVnp53oj9AEMsn1UR09LJR6lbdL87EsL2JRQ/8bIA6vgQrD3UZ+uoRHqFr/PXbTR7VgA3LrvzgNZ5WJLfw1N0brhktqzgCx4cbsVeq0i36V8waVdpalEa+7eUl49TqATJrZVYDCjTI6F9m/HfIjn6a6Bbr7mIF/caokvnd9ZB9Y7NwJwu4EmD7oKuvh0iMXzWsGCKHQ2U= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b6e5e95-e8aa-4c0d-0597-08d69d3fba1f X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2019 05:43:54.1403 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3432 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QsqRuXy59R5aqRb9+y3gg2JSt9370BauLoQrMGgQrF8=; b=VdYSLPyTB7qwVY2FwyAjgIC5+nr1QoJpQoIwgZ49ZX9XVMOrzCOX7wksVcbrqAFutejm3y2P9+l504X1lecZKvalPJBo74zKMPTjy061oWtvBBpbllf05krll8GurqC8W8EOhKa6rFNb+qMGMbpVppdfdp0H62fud8nJNUTVOUI= X-Mailman-Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Flora.Cui@amd.com; X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Cui, Flora" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP add memcpy dispatch test for gfx9 Change-Id: If433434c5378f3b318209d4e28c19d7ce9cff1a2 Signed-off-by: Flora Cui Tested-by: Rui Teng Reviewed-by: Hawking Zhang Signed-off-by: Flora Cui Tested-by: Rui Teng --- tests/amdgpu/basic_tests.c | 129 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/tests/amdgpu/basic_tests.c b/tests/amdgpu/basic_tests.c index d4b0faf..9d2cc95 100644 --- a/tests/amdgpu/basic_tests.c +++ b/tests/amdgpu/basic_tests.c @@ -305,6 +305,11 @@ static const uint32_t bufferclear_cs_shader_registers_gfx9[][2] = { static const uint32_t bufferclear_cs_shader_registers_num_gfx9 = 5; +static const uint32_t buffercopy_cs_shader_gfx9[] = { + 0xD1FD0000, 0x04010C08, 0xE00C2000, 0x80000100, + 0xBF8C0F70, 0xE01C2000, 0x80010100, 0xBF810000 +}; + int amdgpu_bo_alloc_and_map_raw(amdgpu_device_handle dev, unsigned size, unsigned alignment, unsigned heap, uint64_t alloc_flags, uint64_t mapping_flags, amdgpu_bo_handle *bo, void **cpu, @@ -2084,6 +2089,128 @@ static void amdgpu_memset_dispatch_test(uint32_t ip_type) r = amdgpu_bo_unmap_and_free(bo_shader, va_shader, mc_address_shader, bo_shader_size); CU_ASSERT_EQUAL(r, 0); + + r = amdgpu_cs_ctx_free(context_handle); + CU_ASSERT_EQUAL(r, 0); +} + +static void amdgpu_memcpy_dispatch_test(uint32_t ip_type) +{ + amdgpu_context_handle context_handle; + amdgpu_bo_handle bo_src, bo_dst, bo_shader, resources[3]; + volatile unsigned char *ptr_dst; + void *ptr_shader; + void *ptr_src; + uint64_t mc_address_src, mc_address_dst, mc_address_shader; + amdgpu_va_handle va_src, va_dst, va_shader; + int i, j, r; + uint32_t *ptr; + int bo_dst_size = 16384; + int bo_shader_size = 4096; + struct amdgpu_cs_request ibs_request = {0}; + struct amdgpu_cs_ib_info ib_info= {0}; + uint32_t version, ring_id; + struct drm_amdgpu_info_hw_ip info; + + r = amdgpu_query_hw_ip_info(device_handle, ip_type, 0, &info); + CU_ASSERT_EQUAL(r, 0); + + version = info.hw_ip_version_major; + if (version != 9) { + printf("\tSkip...memcpy dispatch test is only supported with gfx9\n"); + return; + } + + ptr = calloc(256, sizeof(*ptr)); + CU_ASSERT_NOT_EQUAL(ptr, NULL); + + r = amdgpu_cs_ctx_create(device_handle, &context_handle); + CU_ASSERT_EQUAL(r, 0); + + r = amdgpu_bo_alloc_and_map(device_handle, bo_shader_size, 4096, + AMDGPU_GEM_DOMAIN_VRAM, 0, + &bo_shader, &ptr_shader, + &mc_address_shader, &va_shader); + CU_ASSERT_EQUAL(r, 0); + + memcpy(ptr_shader, buffercopy_cs_shader_gfx9, sizeof(buffercopy_cs_shader_gfx9)); + + for (ring_id = 0; (1 << ring_id) & info.available_rings; ring_id++) { + r = amdgpu_bo_alloc_and_map(device_handle, bo_dst_size, 4096, + AMDGPU_GEM_DOMAIN_VRAM, 0, + &bo_src, &ptr_src, + &mc_address_src, &va_src); + CU_ASSERT_EQUAL(r, 0); + + r = amdgpu_bo_alloc_and_map(device_handle, bo_dst_size, 4096, + AMDGPU_GEM_DOMAIN_VRAM, 0, + &bo_dst, &ptr_dst, + &mc_address_dst, &va_dst); + CU_ASSERT_EQUAL(r, 0); + + memset(ptr_src, 0x55, bo_dst_size); + + i = 0; + i += amdgpu_dispatch_init(ip_type, version, ptr + i); + + /* Issue commands to set cu mask used in current dispatch */ + i += amdgpu_dispatch_write_cumask(ip_type, version, ptr + i); + + /* Writes shader state to HW */ + i += amdgpu_dispatch_write2hw(ip_type, version, ptr + i, mc_address_shader); + + /* Write constant data */ + /* Writes the texture resource constants data to the SGPRs */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 4); + ptr[i++] = 0x240; + ptr[i++] = mc_address_src; + ptr[i++] = (mc_address_src > 32) | 0x100000; + ptr[i++] = 0x400; + ptr[i++] = 0x74fac; + /* Writes the UAV constant data to the SGPRs. */ + ptr[i++] = PACKET3_COMPUTE(PKT3_SET_SH_REG, 4); + ptr[i++] = 0x244; + ptr[i++] = mc_address_dst; + ptr[i++] = (mc_address_dst > 32) | 0x100000; + ptr[i++] = 0x400; + ptr[i++] = 0x74fac; + + /* dispatch direct command */ + ptr[i++] = PACKET3_COMPUTE(PACKET3_DISPATCH_DIRECT, 3); + ptr[i++] = 0x10; + ptr[i++] = 1; + ptr[i++] = 1; + ptr[i++] = 1; + + while (i & 7) + ptr[i++] = 0xffff1000; /* type3 nop packet */ + + resources[0] = bo_shader; + resources[1] = bo_src; + resources[2] = bo_dst; + amdgpu_test_exec_cs_helper(context_handle, + ip_type, ring_id, + i, ptr, + 3, resources, + &ib_info, &ibs_request); + + /* verify if memcpy test result meets with expected */ + i = 0; + while(i < bo_dst_size) { + CU_ASSERT_EQUAL(ptr_dst[i++], 0x55); + } + + r = amdgpu_bo_unmap_and_free(bo_src, va_src, mc_address_src, bo_dst_size); + CU_ASSERT_EQUAL(r, 0); + r = amdgpu_bo_unmap_and_free(bo_dst, va_dst, mc_address_dst, bo_dst_size); + CU_ASSERT_EQUAL(r, 0); + } + + free(ptr); + + r = amdgpu_bo_unmap_and_free(bo_shader, va_shader, mc_address_shader, bo_shader_size); + CU_ASSERT_EQUAL(r, 0); + r = amdgpu_cs_ctx_free(context_handle); CU_ASSERT_EQUAL(r, 0); } @@ -2091,6 +2218,8 @@ static void amdgpu_memset_dispatch_test(uint32_t ip_type) static void amdgpu_dispatch_test(void) { amdgpu_memset_dispatch_test(AMDGPU_HW_IP_GFX); + amdgpu_memcpy_dispatch_test(AMDGPU_HW_IP_GFX); amdgpu_memset_dispatch_test(AMDGPU_HW_IP_COMPUTE); + amdgpu_memcpy_dispatch_test(AMDGPU_HW_IP_COMPUTE); }