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); }