Path: blob/21.2-virgl/src/gallium/drivers/i915/i915_resource.c
4570 views
#include "util/u_debug.h"12#include "i915_context.h"3#include "i915_resource.h"4#include "i915_screen.h"56static struct pipe_resource *7i915_resource_create(struct pipe_screen *screen,8const struct pipe_resource *template)9{10if (template->target == PIPE_BUFFER)11return i915_buffer_create(screen, template);12else {13if (!(template->bind & PIPE_BIND_LINEAR))14return i915_texture_create(screen, template, false);15else16return i915_texture_create(screen, template, true);17}18}1920static struct pipe_resource *21i915_resource_from_handle(struct pipe_screen *screen,22const struct pipe_resource *template,23struct winsys_handle *whandle, unsigned usage)24{25if (template->target == PIPE_BUFFER)26return NULL;27else28return i915_texture_from_handle(screen, template, whandle);29}3031void32i915_init_resource_functions(struct i915_context *i915)33{34i915->base.buffer_map = i915_buffer_transfer_map;35i915->base.texture_map = i915_texture_transfer_map;36i915->base.transfer_flush_region = u_default_transfer_flush_region;37i915->base.buffer_unmap = i915_buffer_transfer_unmap;38i915->base.texture_unmap = i915_texture_transfer_unmap;39i915->base.buffer_subdata = i915_buffer_subdata;40i915->base.texture_subdata = u_default_texture_subdata;41}4243void44i915_init_screen_resource_functions(struct i915_screen *is)45{46is->base.resource_create = i915_resource_create;47is->base.resource_from_handle = i915_resource_from_handle;48is->base.resource_get_handle = i915_resource_get_handle;49is->base.resource_destroy = i915_resource_destroy;50}515253