Пример #1
0
static void si_destroy_screen(struct pipe_screen* pscreen)
{
	struct si_screen *sscreen = (struct si_screen *)pscreen;

	if (sscreen == NULL)
		return;

	if (!radeon_winsys_unref(sscreen->b.ws))
		return;

	r600_destroy_common_screen(&sscreen->b);
}
Пример #2
0
static void r300_destroy_screen(struct pipe_screen* pscreen)
{
    struct r300_screen* r300screen = r300_screen(pscreen);
    struct radeon_winsys *rws = radeon_winsys(pscreen);

    if (rws && !radeon_winsys_unref(rws))
      return;

    pipe_mutex_destroy(r300screen->cmask_mutex);

    if (rws)
      rws->destroy(rws);

    FREE(r300screen);
}
Пример #3
0
static void r600_destroy_screen(struct pipe_screen* pscreen)
{
	struct r600_screen *rscreen = (struct r600_screen *)pscreen;

	if (rscreen == NULL)
		return;

	if (!radeon_winsys_unref(rscreen->b.ws))
		return;

	r600_common_screen_cleanup(&rscreen->b);

#if R600_TRACE_CS
	if (rscreen->trace_bo) {
		rscreen->ws->buffer_unmap(rscreen->trace_bo->cs_buf);
		pipe_resource_reference((struct pipe_resource**)&rscreen->trace_bo, NULL);
	}
#endif

	rscreen->b.ws->destroy(rscreen->b.ws);
	FREE(rscreen);
}