X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fdrivers%2Fsvga%2Fsvga_resource.c;h=874cfa072235448daab64822f16360263a4d011e;hb=5d8359ff4d8c379fdf1a78758f405bb4cdf69459;hp=264ac335405b79ae97b6e9814540c345e6da890c;hpb=7f6a0cb29c89a03441be744680a2145445be3a3c;p=mesa.git diff --git a/src/gallium/drivers/svga/svga_resource.c b/src/gallium/drivers/svga/svga_resource.c index 264ac335405..874cfa07223 100644 --- a/src/gallium/drivers/svga/svga_resource.c +++ b/src/gallium/drivers/svga/svga_resource.c @@ -33,14 +33,27 @@ #include "svga_format.h" +/** + * This is the primary driver entrypoint for allocating graphics memory + * (vertex/index/constant buffers, textures, etc) + */ static struct pipe_resource * svga_resource_create(struct pipe_screen *screen, const struct pipe_resource *template) { + struct pipe_resource *r; + if (template->target == PIPE_BUFFER) - return svga_buffer_create(screen, template); + r = svga_buffer_create(screen, template); else - return svga_texture_create(screen, template); + r = svga_texture_create(screen, template); + + if (!r) { + struct svga_screen *svgascreen = svga_screen(screen); + svgascreen->hud.num_failed_allocations++; + } + + return r; } @@ -107,7 +120,8 @@ svga_init_resource_functions(struct svga_context *svga) svga->pipe.transfer_map = u_transfer_map_vtbl; svga->pipe.transfer_flush_region = u_transfer_flush_region_vtbl; svga->pipe.transfer_unmap = u_transfer_unmap_vtbl; - svga->pipe.transfer_inline_write = u_transfer_inline_write_vtbl; + svga->pipe.buffer_subdata = u_default_buffer_subdata; + svga->pipe.texture_subdata = u_default_texture_subdata; if (svga_have_vgpu10(svga)) { svga->pipe.generate_mipmap = svga_texture_generate_mipmap;