diff --git a/gfx/common/d3d11_common.c b/gfx/common/d3d11_common.c index 329671e3ba..a9fe8aa4e8 100644 --- a/gfx/common/d3d11_common.c +++ b/gfx/common/d3d11_common.c @@ -173,8 +173,8 @@ void d3d11_update_texture( if (!texture || !texture->staging) return; - D3D11MapTexture2D(ctx, texture->staging, - 0, D3D11_MAP_WRITE, 0, &mapped_texture); + ctx->lpVtbl->Map( + ctx, (D3D11Resource)texture->staging, 0, D3D11_MAP_WRITE, 0, &mapped_texture); #if 0 conv_rgb565_argb8888(mapped_texture.pData, data, width, height, @@ -186,10 +186,10 @@ void d3d11_update_texture( mapped_texture.pData); #endif - D3D11UnmapTexture2D(ctx, texture->staging, 0); + ctx->lpVtbl->Unmap(ctx, (D3D11Resource)texture->staging, 0); - D3D11CopyTexture2DSubresourceRegion( - ctx, texture->handle, 0, 0, 0, 0, texture->staging, 0, &frame_box); + ctx->lpVtbl->CopySubresourceRegion( + ctx, (D3D11Resource)texture->handle, 0, 0, 0, 0, (D3D11Resource)texture->staging, 0, &frame_box); if (texture->desc.MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS) D3D11GenerateMips(ctx, texture->view); diff --git a/gfx/common/d3d11_common.h b/gfx/common/d3d11_common.h index 173d20c619..6cdfaa1319 100644 --- a/gfx/common/d3d11_common.h +++ b/gfx/common/d3d11_common.h @@ -319,14 +319,6 @@ static INLINE void D3D11SetVShaderResources( device_context, start_slot, num_views, shader_resource_views); } -static INLINE void D3D11Begin(D3D11DeviceContext device_context, D3D11Asynchronous async) -{ - device_context->lpVtbl->Begin(device_context, async); -} -static INLINE void D3D11End(D3D11DeviceContext device_context, D3D11Asynchronous async) -{ - device_context->lpVtbl->End(device_context, async); -} static INLINE HRESULT D3D11GetData( D3D11DeviceContext device_context, D3D11Asynchronous async, @@ -382,13 +374,6 @@ static INLINE void D3D11SetRenderTargetsAndUnorderedAccessViews( unordered_access_views, uavinitial_counts); } -static INLINE void D3D11SetDepthStencilState( - D3D11DeviceContext device_context, - D3D11DepthStencilState depth_stencil_state, - UINT stencil_ref) -{ - device_context->lpVtbl->OMSetDepthStencilState(device_context, depth_stencil_state, stencil_ref); -} static INLINE void D3D11SOSetTargets( D3D11DeviceContext device_context, UINT num_buffers, @@ -477,13 +462,7 @@ static INLINE void D3D11CopyStructureCount( device_context->lpVtbl->CopyStructureCount( device_context, dst_buffer, dst_aligned_byte_offset, src_view); } -static INLINE void D3D11ClearRenderTargetView( - D3D11DeviceContext device_context, - D3D11RenderTargetView render_target_view, - FLOAT color_rgba[4]) -{ - device_context->lpVtbl->ClearRenderTargetView(device_context, render_target_view, color_rgba); -} + static INLINE void D3D11ClearUnorderedAccessViewUint( D3D11DeviceContext device_context, D3D11UnorderedAccessView unordered_access_view, @@ -671,15 +650,7 @@ static INLINE void D3D11GetPShaderResources( device_context->lpVtbl->PSGetShaderResources( device_context, start_slot, num_views, shader_resource_views); } -static INLINE void D3D11GetPShader( - D3D11DeviceContext device_context, - D3D11PixelShader* pixel_shader, - D3D11ClassInstance* class_instances, - UINT* num_class_instances) -{ - device_context->lpVtbl->PSGetShader( - device_context, pixel_shader, class_instances, num_class_instances); -} + static INLINE void D3D11GetPShaderSamplers( D3D11DeviceContext device_context, UINT start_slot, @@ -688,15 +659,7 @@ static INLINE void D3D11GetPShaderSamplers( { device_context->lpVtbl->PSGetSamplers(device_context, start_slot, num_samplers, samplers); } -static INLINE void D3D11GetVShader( - D3D11DeviceContext device_context, - D3D11VertexShader* vertex_shader, - D3D11ClassInstance* class_instances, - UINT* num_class_instances) -{ - device_context->lpVtbl->VSGetShader( - device_context, vertex_shader, class_instances, num_class_instances); -} + static INLINE void D3D11GetPShaderConstantBuffers( D3D11DeviceContext device_context, UINT start_slot, @@ -814,14 +777,7 @@ static INLINE void D3D11GetRenderTargetsAndUnorderedAccessViews( device_context, num_rtvs, render_target_views, depth_stencil_view, uavstart_slot, num_uavs, unordered_access_views); } -static INLINE void D3D11GetBlendState( - D3D11DeviceContext device_context, - D3D11BlendState* blend_state, - FLOAT blend_factor[4], - UINT* sample_mask) -{ - device_context->lpVtbl->OMGetBlendState(device_context, blend_state, blend_factor, sample_mask); -} + static INLINE void D3D11GetDepthStencilState( D3D11DeviceContext device_context, D3D11DepthStencilState* depth_stencil_state, @@ -2275,37 +2231,6 @@ static INLINE BOOL D3D11GetMuteDebugOutput(D3D11InfoQueue info_queue) /* end of auto-generated */ -static INLINE HRESULT D3D11MapTexture2D( - D3D11DeviceContext device_context, - D3D11Texture2D texture, - UINT subresource, - D3D11_MAP map_type, - UINT map_flags, - D3D11_MAPPED_SUBRESOURCE* mapped_resource) -{ - return device_context->lpVtbl->Map( - device_context, (D3D11Resource)texture, subresource, map_type, map_flags, mapped_resource); -} -static INLINE void -D3D11UnmapTexture2D(D3D11DeviceContext device_context, D3D11Texture2D texture, UINT subresource) -{ - device_context->lpVtbl->Unmap(device_context, (D3D11Resource)texture, subresource); -} -static INLINE void D3D11CopyTexture2DSubresourceRegion( - D3D11DeviceContext device_context, - D3D11Texture2D dst_texture, - UINT dst_subresource, - UINT dst_x, - UINT dst_y, - UINT dst_z, - D3D11Texture2D src_texture, - UINT src_subresource, - D3D11_BOX* src_box) -{ - device_context->lpVtbl->CopySubresourceRegion( - device_context, (D3D11Resource)dst_texture, dst_subresource, dst_x, dst_y, dst_z, - (D3D11Resource)src_texture, src_subresource, src_box); -} static INLINE HRESULT D3D11CreateTexture2DRenderTargetView( D3D11Device device, D3D11Texture2D texture, @@ -2334,11 +2259,6 @@ static INLINE HRESULT D3D11MapBuffer( return device_context->lpVtbl->Map( device_context, (D3D11Resource)buffer, subresource, map_type, map_flags, mapped_resource); } -static INLINE void -D3D11UnmapBuffer(D3D11DeviceContext device_context, D3D11Buffer buffer, UINT subresource) -{ - device_context->lpVtbl->Unmap(device_context, (D3D11Resource)buffer, subresource); -} #endif /* internal */ diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 91fba83fb1..8b4a99b573 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -115,8 +115,8 @@ static void d3d11_overlay_vertex_geom( if (!d3d11) return; - D3D11MapBuffer( - d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); { d3d11_sprite_t* sprites = (d3d11_sprite_t*)mapped_vbo.pData; sprites[index].pos.x = x; @@ -124,7 +124,7 @@ static void d3d11_overlay_vertex_geom( sprites[index].pos.w = w; sprites[index].pos.h = h; } - D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0); } static void d3d11_overlay_tex_geom( @@ -137,8 +137,8 @@ static void d3d11_overlay_tex_geom( if (!d3d11) return; - D3D11MapBuffer( - d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); { d3d11_sprite_t* sprites = (d3d11_sprite_t*)mapped_vbo.pData; sprites[index].coords.u = u; @@ -146,7 +146,7 @@ static void d3d11_overlay_tex_geom( sprites[index].coords.w = w; sprites[index].coords.h = h; } - D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0); } static void d3d11_overlay_set_alpha(void* data, unsigned index, float mod) @@ -157,8 +157,8 @@ static void d3d11_overlay_set_alpha(void* data, unsigned index, float mod) if (!d3d11) return; - D3D11MapBuffer( - d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); { d3d11_sprite_t* sprites = (d3d11_sprite_t*)mapped_vbo.pData; sprites[index].colors[0] = DXGI_COLOR_RGBA(0xFF, 0xFF, 0xFF, mod * 0xFF); @@ -166,7 +166,7 @@ static void d3d11_overlay_set_alpha(void* data, unsigned index, float mod) sprites[index].colors[2] = sprites[index].colors[0]; sprites[index].colors[3] = sprites[index].colors[0]; } - D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0); } static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_images) @@ -194,7 +194,8 @@ static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_ desc.StructureByteStride = 0; D3D11CreateBuffer(d3d11->device, &desc, NULL, &d3d11->overlays.vbo); - D3D11MapBuffer(d3d11->context, d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_vbo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_vbo); sprites = (d3d11_sprite_t*)mapped_vbo.pData; for (i = 0; i < num_images; i++) @@ -229,7 +230,7 @@ static bool d3d11_overlay_load(void* data, const void* image_data, unsigned num_ sprites[i].colors[2] = sprites[i].colors[0]; sprites[i].colors[3] = sprites[i].colors[0]; } - D3D11UnmapBuffer(d3d11->context, d3d11->overlays.vbo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->overlays.vbo, 0); return true; } @@ -314,13 +315,13 @@ static void d3d11_set_hdr_max_nits(void *data, float max_nits) d3d11->hdr.max_output_nits = max_nits; d3d11->hdr.ubo_values.max_nits = max_nits; - D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, - 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_ubo); { dxgi_hdr_uniform_t *ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData; *ubo = d3d11->hdr.ubo_values; } - D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0); dxgi_set_hdr_metadata( d3d11->swapChain, @@ -341,11 +342,11 @@ static void d3d11_set_hdr_paper_white_nits(void* data, float paper_white_nits) d3d11->hdr.ubo_values.paper_white_nits = paper_white_nits; - D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, - 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData; *ubo = d3d11->hdr.ubo_values; - D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0); } static void d3d11_set_hdr_contrast(void* data, float contrast) @@ -356,11 +357,11 @@ static void d3d11_set_hdr_contrast(void* data, float contrast) d3d11->hdr.ubo_values.contrast = contrast; - D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, - 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData; *ubo = d3d11->hdr.ubo_values; - D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0); } static void d3d11_set_hdr_expand_gamut(void* data, bool expand_gamut) @@ -371,10 +372,11 @@ static void d3d11_set_hdr_expand_gamut(void* data, bool expand_gamut) d3d11->hdr.ubo_values.expand_gamut = expand_gamut ? 1.0f : 0.0f; - D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData; *ubo = d3d11->hdr.ubo_values; - D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0); } static void d3d11_set_hdr_inverse_tonemap(d3d11_video_t* d3d11, bool inverse_tonemap) @@ -384,10 +386,11 @@ static void d3d11_set_hdr_inverse_tonemap(d3d11_video_t* d3d11, bool inverse_ton d3d11->hdr.ubo_values.inverse_tonemap = inverse_tonemap ? 1.0f : 0.0f; - D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData; *ubo = d3d11->hdr.ubo_values; - D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0); } static void d3d11_set_hdr10(d3d11_video_t* d3d11, bool hdr10) @@ -397,10 +400,11 @@ static void d3d11_set_hdr10(d3d11_video_t* d3d11, bool hdr10) d3d11->hdr.ubo_values.hdr10 = hdr10 ? 1.0f : 0.0f; - D3D11MapBuffer(d3d11->context, d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); ubo = (dxgi_hdr_uniform_t*)mapped_ubo.pData; *ubo = d3d11->hdr.ubo_values; - D3D11UnmapBuffer(d3d11->context, d3d11->hdr.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->hdr.ubo, 0); } #endif @@ -435,9 +439,10 @@ static void d3d11_gfx_set_rotation(void* data, unsigned rotation) matrix_4x4_rotate_z(rot, rotation * (M_PI / 2.0f)); matrix_4x4_multiply(d3d11->mvp, rot, d3d11->ubo_values.mvp); - D3D11MapBuffer(d3d11->context, d3d11->frame.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->frame.ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); *(math_matrix_4x4*)mapped_ubo.pData = d3d11->mvp; - D3D11UnmapBuffer(d3d11->context, d3d11->frame.ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->frame.ubo, 0); } static void d3d11_update_viewport(void* data, bool force_full) @@ -1972,8 +1977,12 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer); if (hw_texture) { D3D11_BOX frame_box = { 0, 0, 0, width, height, 1 }; - D3D11CopyTexture2DSubresourceRegion( - context, d3d11->frame.texture[0].handle, 0, 0, 0, 0, hw_texture, 0, &frame_box); + context->lpVtbl->CopySubresourceRegion( + context, + (D3D11Resource)d3d11->frame.texture[0].handle, + 0, 0, 0, 0, + (D3D11Resource)hw_texture, 0, &frame_box); + Release(hw_texture); hw_texture = NULL; } @@ -1983,7 +1992,8 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer); } context->lpVtbl->RSSetState(context, d3d11->scissor_disabled); - d3d11->context->lpVtbl->OMSetBlendState(d3d11->context, d3d11->blend_disable, + d3d11->context->lpVtbl->OMSetBlendState( + d3d11->context, d3d11->blend_disable, NULL, D3D11_DEFAULT_SAMPLE_MASK); context->lpVtbl->IASetPrimitiveTopology(context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); { @@ -2041,14 +2051,15 @@ uuidof(ID3D11Texture2D), (void**)&back_buffer); D3D11_MAPPED_SUBRESOURCE res; uniform_sem_t* uniform = buffer_sem->uniforms; - D3D11MapBuffer(context, buffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &res); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)buffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &res); while (uniform->size) { if (uniform->data) memcpy((uint8_t*)res.pData + uniform->offset, uniform->data, uniform->size); uniform++; } - D3D11UnmapBuffer(context, buffer, 0); + context->lpVtbl->Unmap(context, (D3D11Resource)buffer, 0); if (buffer_sem->stage_mask & SLANG_STAGE_VERTEX_MASK) D3D11SetVShaderConstantBuffers(context, buffer_sem->binding, 1, &buffer); diff --git a/gfx/drivers_display/gfx_display_d3d11.c b/gfx/drivers_display/gfx_display_d3d11.c index 50747abf30..78f0b79a05 100644 --- a/gfx/drivers_display/gfx_display_d3d11.c +++ b/gfx/drivers_display/gfx_display_d3d11.c @@ -97,8 +97,8 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw, D3D11_MAPPED_SUBRESOURCE mapped_vbo; d3d11_sprite_t* sprite = NULL; - D3D11MapBuffer( - d3d11->context, d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); sprite = (d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset; @@ -167,7 +167,7 @@ static void gfx_display_d3d11_draw(gfx_display_ctx_draw_t *draw, d3d11->context->lpVtbl->IASetPrimitiveTopology(d3d11->context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); } - D3D11UnmapBuffer(d3d11->context, d3d11->sprites.vbo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0); } { @@ -254,9 +254,10 @@ static void gfx_display_d3d11_draw_pipeline(gfx_display_ctx_draw_t *draw, { D3D11_MAPPED_SUBRESOURCE mapped_ubo; - D3D11MapBuffer(d3d11->context, d3d11->ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->ubo, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped_ubo); *(d3d11_uniform_t*)mapped_ubo.pData = d3d11->ubo_values; - D3D11UnmapBuffer(d3d11->context, d3d11->ubo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->ubo, 0); } } diff --git a/gfx/drivers_font/d3d11_font.c b/gfx/drivers_font/d3d11_font.c index 07f23652aa..0a59f9d24e 100644 --- a/gfx/drivers_font/d3d11_font.c +++ b/gfx/drivers_font/d3d11_font.c @@ -153,7 +153,8 @@ static void d3d11_font_render_line( break; } - D3D11MapBuffer(d3d11->context, d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); + d3d11->context->lpVtbl->Map( + d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0, D3D11_MAP_WRITE_NO_OVERWRITE, 0, &mapped_vbo); v = (d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset; for (i = 0; i < msg_len; i++) @@ -199,7 +200,7 @@ static void d3d11_font_render_line( } count = v - ((d3d11_sprite_t*)mapped_vbo.pData + d3d11->sprites.offset); - D3D11UnmapBuffer(d3d11->context, d3d11->sprites.vbo, 0); + d3d11->context->lpVtbl->Unmap(d3d11->context, (D3D11Resource)d3d11->sprites.vbo, 0); if (!count) return;