1*61046927SAndroid Build Coastguard Worker /************************************************************************** 2*61046927SAndroid Build Coastguard Worker * 3*61046927SAndroid Build Coastguard Worker * Copyright (C) 2015 Red Hat Inc. 4*61046927SAndroid Build Coastguard Worker * 5*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 6*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 7*61046927SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 8*61046927SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9*61046927SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 10*61046927SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 11*61046927SAndroid Build Coastguard Worker * 12*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included 13*61046927SAndroid Build Coastguard Worker * in all copies or substantial portions of the Software. 14*61046927SAndroid Build Coastguard Worker * 15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16*61046927SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*61046927SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*61046927SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 19*61046927SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 20*61046927SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 21*61046927SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 22*61046927SAndroid Build Coastguard Worker * 23*61046927SAndroid Build Coastguard Worker **************************************************************************/ 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker #ifndef VTEST_PROTOCOL 26*61046927SAndroid Build Coastguard Worker #define VTEST_PROTOCOL 27*61046927SAndroid Build Coastguard Worker 28*61046927SAndroid Build Coastguard Worker #define VTEST_DEFAULT_SOCKET_NAME "/tmp/.virgl_test" 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard Worker #ifdef VIRGL_RENDERER_UNSTABLE_APIS 31*61046927SAndroid Build Coastguard Worker #define VTEST_PROTOCOL_VERSION 3 32*61046927SAndroid Build Coastguard Worker #else 33*61046927SAndroid Build Coastguard Worker #define VTEST_PROTOCOL_VERSION 2 34*61046927SAndroid Build Coastguard Worker #endif 35*61046927SAndroid Build Coastguard Worker 36*61046927SAndroid Build Coastguard Worker /* 32-bit length field */ 37*61046927SAndroid Build Coastguard Worker /* 32-bit cmd field */ 38*61046927SAndroid Build Coastguard Worker #define VTEST_HDR_SIZE 2 39*61046927SAndroid Build Coastguard Worker #define VTEST_CMD_LEN 0 /* length of data */ 40*61046927SAndroid Build Coastguard Worker #define VTEST_CMD_ID 1 41*61046927SAndroid Build Coastguard Worker #define VTEST_CMD_DATA_START 2 42*61046927SAndroid Build Coastguard Worker 43*61046927SAndroid Build Coastguard Worker /* vtest cmds */ 44*61046927SAndroid Build Coastguard Worker #define VCMD_GET_CAPS 1 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Worker #define VCMD_RESOURCE_CREATE 2 47*61046927SAndroid Build Coastguard Worker #define VCMD_RESOURCE_UNREF 3 48*61046927SAndroid Build Coastguard Worker 49*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_GET 4 50*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_PUT 5 51*61046927SAndroid Build Coastguard Worker 52*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD 6 53*61046927SAndroid Build Coastguard Worker 54*61046927SAndroid Build Coastguard Worker #define VCMD_RESOURCE_BUSY_WAIT 7 55*61046927SAndroid Build Coastguard Worker 56*61046927SAndroid Build Coastguard Worker /* pass the process cmd line for debugging */ 57*61046927SAndroid Build Coastguard Worker #define VCMD_CREATE_RENDERER 8 58*61046927SAndroid Build Coastguard Worker 59*61046927SAndroid Build Coastguard Worker #define VCMD_GET_CAPS2 9 60*61046927SAndroid Build Coastguard Worker /* get caps */ 61*61046927SAndroid Build Coastguard Worker /* 0 length cmd */ 62*61046927SAndroid Build Coastguard Worker /* resp VCMD_GET_CAPS + caps */ 63*61046927SAndroid Build Coastguard Worker 64*61046927SAndroid Build Coastguard Worker #define VCMD_PING_PROTOCOL_VERSION 10 65*61046927SAndroid Build Coastguard Worker 66*61046927SAndroid Build Coastguard Worker #define VCMD_PROTOCOL_VERSION 11 67*61046927SAndroid Build Coastguard Worker 68*61046927SAndroid Build Coastguard Worker /* since protocol version 2 */ 69*61046927SAndroid Build Coastguard Worker #define VCMD_RESOURCE_CREATE2 12 70*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_GET2 13 71*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_PUT2 14 72*61046927SAndroid Build Coastguard Worker 73*61046927SAndroid Build Coastguard Worker #ifdef VIRGL_RENDERER_UNSTABLE_APIS 74*61046927SAndroid Build Coastguard Worker /* since protocol version 3 */ 75*61046927SAndroid Build Coastguard Worker #define VCMD_GET_PARAM 15 76*61046927SAndroid Build Coastguard Worker #define VCMD_GET_CAPSET 16 77*61046927SAndroid Build Coastguard Worker #define VCMD_CONTEXT_INIT 17 78*61046927SAndroid Build Coastguard Worker #define VCMD_RESOURCE_CREATE_BLOB 18 79*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_CREATE 19 80*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_UNREF 20 81*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_READ 21 82*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WRITE 22 83*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT 23 84*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2 24 85*61046927SAndroid Build Coastguard Worker #endif /* VIRGL_RENDERER_UNSTABLE_APIS */ 86*61046927SAndroid Build Coastguard Worker 87*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_SIZE 10 88*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_RES_HANDLE 0 /* must be 0 since protocol version 3 */ 89*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_TARGET 1 90*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_FORMAT 2 91*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BIND 3 92*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_WIDTH 4 93*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_HEIGHT 5 94*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_DEPTH 6 95*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_ARRAY_SIZE 7 96*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_LAST_LEVEL 8 97*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_NR_SAMPLES 9 98*61046927SAndroid Build Coastguard Worker /* resp res_id since protocol version 3 */ 99*61046927SAndroid Build Coastguard Worker 100*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_SIZE 11 101*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_RES_HANDLE 0 /* must be 0 since protocol version 3 */ 102*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_TARGET 1 103*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_FORMAT 2 104*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_BIND 3 105*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_WIDTH 4 106*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_HEIGHT 5 107*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_DEPTH 6 108*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_ARRAY_SIZE 7 109*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_LAST_LEVEL 8 110*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_NR_SAMPLES 9 111*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE2_DATA_SIZE 10 112*61046927SAndroid Build Coastguard Worker /* resp res_id since protocol version 3, and fd if data_size >0 */ 113*61046927SAndroid Build Coastguard Worker 114*61046927SAndroid Build Coastguard Worker #define VCMD_RES_UNREF_SIZE 1 115*61046927SAndroid Build Coastguard Worker #define VCMD_RES_UNREF_RES_HANDLE 0 116*61046927SAndroid Build Coastguard Worker 117*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_HDR_SIZE 11 118*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_RES_HANDLE 0 119*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_LEVEL 1 120*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_STRIDE 2 121*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_LAYER_STRIDE 3 122*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_X 4 123*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_Y 5 124*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_Z 6 125*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_WIDTH 7 126*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_HEIGHT 8 127*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_DEPTH 9 128*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER_DATA_SIZE 10 129*61046927SAndroid Build Coastguard Worker 130*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_HDR_SIZE 10 131*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_RES_HANDLE 0 132*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_LEVEL 1 133*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_X 2 134*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_Y 3 135*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_Z 4 136*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_WIDTH 5 137*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_HEIGHT 6 138*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_DEPTH 7 139*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_DATA_SIZE 8 140*61046927SAndroid Build Coastguard Worker #define VCMD_TRANSFER2_OFFSET 9 141*61046927SAndroid Build Coastguard Worker 142*61046927SAndroid Build Coastguard Worker #define VCMD_BUSY_WAIT_FLAG_WAIT 1 143*61046927SAndroid Build Coastguard Worker 144*61046927SAndroid Build Coastguard Worker #define VCMD_BUSY_WAIT_SIZE 2 145*61046927SAndroid Build Coastguard Worker #define VCMD_BUSY_WAIT_HANDLE 0 146*61046927SAndroid Build Coastguard Worker #define VCMD_BUSY_WAIT_FLAGS 1 147*61046927SAndroid Build Coastguard Worker 148*61046927SAndroid Build Coastguard Worker #define VCMD_PING_PROTOCOL_VERSION_SIZE 0 149*61046927SAndroid Build Coastguard Worker 150*61046927SAndroid Build Coastguard Worker #define VCMD_PROTOCOL_VERSION_SIZE 1 151*61046927SAndroid Build Coastguard Worker #define VCMD_PROTOCOL_VERSION_VERSION 0 152*61046927SAndroid Build Coastguard Worker 153*61046927SAndroid Build Coastguard Worker #ifdef VIRGL_RENDERER_UNSTABLE_APIS 154*61046927SAndroid Build Coastguard Worker 155*61046927SAndroid Build Coastguard Worker enum vcmd_param { 156*61046927SAndroid Build Coastguard Worker VCMD_PARAM_MAX_TIMELINE_COUNT = 1, 157*61046927SAndroid Build Coastguard Worker }; 158*61046927SAndroid Build Coastguard Worker #define VCMD_GET_PARAM_SIZE 1 159*61046927SAndroid Build Coastguard Worker #define VCMD_GET_PARAM_PARAM 0 160*61046927SAndroid Build Coastguard Worker /* resp param validity and value */ 161*61046927SAndroid Build Coastguard Worker 162*61046927SAndroid Build Coastguard Worker #define VCMD_GET_CAPSET_SIZE 2 163*61046927SAndroid Build Coastguard Worker #define VCMD_GET_CAPSET_ID 0 164*61046927SAndroid Build Coastguard Worker #define VCMD_GET_CAPSET_VERSION 1 165*61046927SAndroid Build Coastguard Worker /* resp capset validity and contents */ 166*61046927SAndroid Build Coastguard Worker 167*61046927SAndroid Build Coastguard Worker #define VCMD_CONTEXT_INIT_SIZE 1 168*61046927SAndroid Build Coastguard Worker #define VCMD_CONTEXT_INIT_CAPSET_ID 0 169*61046927SAndroid Build Coastguard Worker 170*61046927SAndroid Build Coastguard Worker enum vcmd_blob_type { 171*61046927SAndroid Build Coastguard Worker VCMD_BLOB_TYPE_GUEST = 1, 172*61046927SAndroid Build Coastguard Worker VCMD_BLOB_TYPE_HOST3D = 2, 173*61046927SAndroid Build Coastguard Worker VCMD_BLOB_TYPE_HOST3D_GUEST = 3, 174*61046927SAndroid Build Coastguard Worker }; 175*61046927SAndroid Build Coastguard Worker 176*61046927SAndroid Build Coastguard Worker enum vcmd_blob_flag { 177*61046927SAndroid Build Coastguard Worker VCMD_BLOB_FLAG_MAPPABLE = 1 << 0, 178*61046927SAndroid Build Coastguard Worker VCMD_BLOB_FLAG_SHAREABLE = 1 << 1, 179*61046927SAndroid Build Coastguard Worker VCMD_BLOB_FLAG_CROSS_DEVICE = 1 << 2, 180*61046927SAndroid Build Coastguard Worker }; 181*61046927SAndroid Build Coastguard Worker 182*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_SIZE 6 183*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_TYPE 0 184*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_FLAGS 1 185*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_SIZE_LO 2 186*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_SIZE_HI 3 187*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_ID_LO 4 188*61046927SAndroid Build Coastguard Worker #define VCMD_RES_CREATE_BLOB_ID_HI 5 189*61046927SAndroid Build Coastguard Worker /* resp res_id and mmap'able fd */ 190*61046927SAndroid Build Coastguard Worker 191*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_CREATE_SIZE 2 192*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_CREATE_VALUE_LO 0 193*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_CREATE_VALUE_HI 1 194*61046927SAndroid Build Coastguard Worker /* resp sync id */ 195*61046927SAndroid Build Coastguard Worker 196*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_UNREF_SIZE 1 197*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_UNREF_ID 0 198*61046927SAndroid Build Coastguard Worker 199*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_READ_SIZE 1 200*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_READ_ID 0 201*61046927SAndroid Build Coastguard Worker /* resp sync value */ 202*61046927SAndroid Build Coastguard Worker 203*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WRITE_SIZE 3 204*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WRITE_ID 0 205*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WRITE_VALUE_LO 1 206*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WRITE_VALUE_HI 2 207*61046927SAndroid Build Coastguard Worker 208*61046927SAndroid Build Coastguard Worker enum vcmd_sync_wait_flag { 209*61046927SAndroid Build Coastguard Worker VCMD_SYNC_WAIT_FLAG_ANY = 1 << 0, 210*61046927SAndroid Build Coastguard Worker }; 211*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT_SIZE(count) (2 + 3 * count) 212*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT_FLAGS 0 213*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT_TIMEOUT 1 214*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT_ID(n) (2 + 3 * (n) + 0) 215*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT_VALUE_LO(n) (2 + 3 * (n) + 1) 216*61046927SAndroid Build Coastguard Worker #define VCMD_SYNC_WAIT_VALUE_HI(n) (2 + 3 * (n) + 2) 217*61046927SAndroid Build Coastguard Worker /* resp poll'able fd */ 218*61046927SAndroid Build Coastguard Worker 219*61046927SAndroid Build Coastguard Worker enum vcmd_submit_cmd2_flag { 220*61046927SAndroid Build Coastguard Worker VCMD_SUBMIT_CMD2_FLAG_RING_IDX = 1 << 0, 221*61046927SAndroid Build Coastguard Worker }; 222*61046927SAndroid Build Coastguard Worker 223*61046927SAndroid Build Coastguard Worker struct vcmd_submit_cmd2_batch { 224*61046927SAndroid Build Coastguard Worker uint32_t flags; 225*61046927SAndroid Build Coastguard Worker 226*61046927SAndroid Build Coastguard Worker uint32_t cmd_offset; 227*61046927SAndroid Build Coastguard Worker uint32_t cmd_size; 228*61046927SAndroid Build Coastguard Worker 229*61046927SAndroid Build Coastguard Worker /* sync_count pairs of (id, val) starting at sync_offset */ 230*61046927SAndroid Build Coastguard Worker uint32_t sync_offset; 231*61046927SAndroid Build Coastguard Worker uint32_t sync_count; 232*61046927SAndroid Build Coastguard Worker 233*61046927SAndroid Build Coastguard Worker /* ignored unless VCMD_SUBMIT_CMD2_FLAG_RING_IDX is set */ 234*61046927SAndroid Build Coastguard Worker uint32_t ring_idx; 235*61046927SAndroid Build Coastguard Worker }; 236*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_COUNT 0 237*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_FLAGS(n) (1 + 8 * (n) + 0) 238*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_CMD_OFFSET(n) (1 + 8 * (n) + 1) 239*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_CMD_SIZE(n) (1 + 8 * (n) + 2) 240*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_SYNC_OFFSET(n) (1 + 8 * (n) + 3) 241*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_SYNC_COUNT(n) (1 + 8 * (n) + 4) 242*61046927SAndroid Build Coastguard Worker #define VCMD_SUBMIT_CMD2_BATCH_RING_IDX(n) (1 + 8 * (n) + 5) 243*61046927SAndroid Build Coastguard Worker 244*61046927SAndroid Build Coastguard Worker #endif /* VIRGL_RENDERER_UNSTABLE_APIS */ 245*61046927SAndroid Build Coastguard Worker 246*61046927SAndroid Build Coastguard Worker #endif /* VTEST_PROTOCOL */ 247