Home | History | Annotate | Download | only in vtest

Lines Matching refs:cbuf

398    struct virgl_vtest_cmd_buf *cbuf;
400 cbuf = CALLOC_STRUCT(virgl_vtest_cmd_buf);
401 if (!cbuf)
404 cbuf->nres = 512;
405 cbuf->res_bo = CALLOC(cbuf->nres, sizeof(struct virgl_hw_buf*));
406 if (!cbuf->res_bo) {
407 FREE(cbuf);
410 cbuf->ws = vws;
411 cbuf->base.buf = cbuf->buf;
412 return &cbuf->base;
417 struct virgl_vtest_cmd_buf *cbuf = virgl_vtest_cmd_buf(_cbuf);
419 FREE(cbuf->res_bo);
420 FREE(cbuf);
423 static boolean virgl_vtest_lookup_res(struct virgl_vtest_cmd_buf *cbuf,
426 unsigned hash = res->res_handle & (sizeof(cbuf->is_handle_added)-1);
429 if (cbuf->is_handle_added[hash]) {
430 i = cbuf->reloc_indices_hashlist[hash];
431 if (cbuf->res_bo[i] == res)
434 for (i = 0; i < cbuf->cres; i++) {
435 if (cbuf->res_bo[i] == res) {
436 cbuf->reloc_indices_hashlist[hash] = i;
445 struct virgl_vtest_cmd_buf *cbuf)
449 for (i = 0; i < cbuf->cres; i++) {
450 p_atomic_dec(&cbuf->res_bo[i]->num_cs_references);
451 virgl_vtest_resource_reference(vtws, &cbuf->res_bo[i], NULL);
453 cbuf->cres = 0;
457 struct virgl_vtest_cmd_buf *cbuf,
460 unsigned hash = res->res_handle & (sizeof(cbuf->is_handle_added)-1);
462 if (cbuf->cres > cbuf->nres) {
467 cbuf->res_bo[cbuf->cres] = NULL;
468 virgl_vtest_resource_reference(vtws, &cbuf->res_bo[cbuf->cres], res);
469 cbuf->is_handle_added[hash] = TRUE;
471 cbuf->reloc_indices_hashlist[hash] = cbuf->cres;
473 cbuf->cres++;
480 struct virgl_vtest_cmd_buf *cbuf = virgl_vtest_cmd_buf(_cbuf);
483 if (cbuf->base.cdw == 0)
486 ret = virgl_vtest_submit_cmd(vtws, cbuf);
488 virgl_vtest_release_all_res(vtws, cbuf);
489 memset(cbuf->is_handle_added, 0, sizeof(cbuf->is_handle_added));
490 cbuf->base.cdw = 0;
499 struct virgl_vtest_cmd_buf *cbuf = virgl_vtest_cmd_buf(_cbuf);
500 boolean already_in_list = virgl_vtest_lookup_res(cbuf, res);
503 cbuf->base.buf[cbuf->base.cdw++] = res->res_handle;
505 virgl_vtest_add_res(vtws, cbuf, res);