Lines Matching refs:vctx

68 virgl_can_rebind_resource(struct virgl_context *vctx,  in virgl_can_rebind_resource()  argument
88 virgl_rebind_resource(struct virgl_context *vctx, in virgl_rebind_resource() argument
101 assert(virgl_can_rebind_resource(vctx, res) && in virgl_rebind_resource()
105 for (i = 0; i < vctx->num_vertex_buffers; i++) { in virgl_rebind_resource()
106 if (vctx->vertex_buffer[i].buffer.resource == res) { in virgl_rebind_resource()
107 vctx->vertex_array_dirty = true; in virgl_rebind_resource()
114 uint32_t remaining_mask = vctx->atomic_buffer_enabled_mask; in virgl_rebind_resource()
117 if (vctx->atomic_buffers[i].buffer == res) { in virgl_rebind_resource()
118 const struct pipe_shader_buffer *abo = &vctx->atomic_buffers[i]; in virgl_rebind_resource()
119 virgl_encode_set_hw_atomic_buffers(vctx, i, 1, abo); in virgl_rebind_resource()
131 &vctx->shader_bindings[shader_type]; in virgl_rebind_resource()
139 virgl_encoder_set_uniform_buffer(vctx, shader_type, i, in virgl_rebind_resource()
153 virgl_encode_set_shader_buffers(vctx, shader_type, i, 1, in virgl_rebind_resource()
165 virgl_encode_set_shader_images(vctx, shader_type, i, 1, in virgl_rebind_resource()
174 static void virgl_attach_res_framebuffer(struct virgl_context *vctx) in virgl_attach_res_framebuffer() argument
176 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_framebuffer()
181 surf = vctx->framebuffer.zsbuf; in virgl_attach_res_framebuffer()
185 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_framebuffer()
189 for (i = 0; i < vctx->framebuffer.nr_cbufs; i++) { in virgl_attach_res_framebuffer()
190 surf = vctx->framebuffer.cbufs[i]; in virgl_attach_res_framebuffer()
194 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_framebuffer()
201 static void virgl_attach_res_sampler_views(struct virgl_context *vctx, in virgl_attach_res_sampler_views() argument
204 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_sampler_views()
206 &vctx->shader_bindings[shader_type]; in virgl_attach_res_sampler_views()
214 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_sampler_views()
218 static void virgl_attach_res_vertex_buffers(struct virgl_context *vctx) in virgl_attach_res_vertex_buffers() argument
220 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_vertex_buffers()
224 for (i = 0; i < vctx->num_vertex_buffers; i++) { in virgl_attach_res_vertex_buffers()
225 res = virgl_resource(vctx->vertex_buffer[i].buffer.resource); in virgl_attach_res_vertex_buffers()
227 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_vertex_buffers()
231 static void virgl_attach_res_index_buffer(struct virgl_context *vctx, in virgl_attach_res_index_buffer() argument
234 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_index_buffer()
239 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_index_buffer()
242 static void virgl_attach_res_so_targets(struct virgl_context *vctx) in virgl_attach_res_so_targets() argument
244 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_so_targets()
248 for (i = 0; i < vctx->num_so_targets; i++) { in virgl_attach_res_so_targets()
249 res = virgl_resource(vctx->so_targets[i].base.buffer); in virgl_attach_res_so_targets()
251 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_so_targets()
255 static void virgl_attach_res_uniform_buffers(struct virgl_context *vctx, in virgl_attach_res_uniform_buffers() argument
258 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_uniform_buffers()
260 &vctx->shader_bindings[shader_type]; in virgl_attach_res_uniform_buffers()
268 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_uniform_buffers()
272 static void virgl_attach_res_shader_buffers(struct virgl_context *vctx, in virgl_attach_res_shader_buffers() argument
275 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_shader_buffers()
277 &vctx->shader_bindings[shader_type]; in virgl_attach_res_shader_buffers()
285 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_shader_buffers()
289 static void virgl_attach_res_shader_images(struct virgl_context *vctx, in virgl_attach_res_shader_images() argument
292 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_shader_images()
294 &vctx->shader_bindings[shader_type]; in virgl_attach_res_shader_images()
302 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_shader_images()
306 static void virgl_attach_res_atomic_buffers(struct virgl_context *vctx) in virgl_attach_res_atomic_buffers() argument
308 struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws; in virgl_attach_res_atomic_buffers()
309 uint32_t remaining_mask = vctx->atomic_buffer_enabled_mask; in virgl_attach_res_atomic_buffers()
314 res = virgl_resource(vctx->atomic_buffers[i].buffer); in virgl_attach_res_atomic_buffers()
316 vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE); in virgl_attach_res_atomic_buffers()
324 static void virgl_reemit_draw_resources(struct virgl_context *vctx) in virgl_reemit_draw_resources() argument
330 virgl_attach_res_framebuffer(vctx); in virgl_reemit_draw_resources()
333 virgl_attach_res_sampler_views(vctx, shader_type); in virgl_reemit_draw_resources()
334 virgl_attach_res_uniform_buffers(vctx, shader_type); in virgl_reemit_draw_resources()
335 virgl_attach_res_shader_buffers(vctx, shader_type); in virgl_reemit_draw_resources()
336 virgl_attach_res_shader_images(vctx, shader_type); in virgl_reemit_draw_resources()
338 virgl_attach_res_atomic_buffers(vctx); in virgl_reemit_draw_resources()
339 virgl_attach_res_vertex_buffers(vctx); in virgl_reemit_draw_resources()
340 virgl_attach_res_so_targets(vctx); in virgl_reemit_draw_resources()
343 static void virgl_reemit_compute_resources(struct virgl_context *vctx) in virgl_reemit_compute_resources() argument
345 virgl_attach_res_sampler_views(vctx, PIPE_SHADER_COMPUTE); in virgl_reemit_compute_resources()
346 virgl_attach_res_uniform_buffers(vctx, PIPE_SHADER_COMPUTE); in virgl_reemit_compute_resources()
347 virgl_attach_res_shader_buffers(vctx, PIPE_SHADER_COMPUTE); in virgl_reemit_compute_resources()
348 virgl_attach_res_shader_images(vctx, PIPE_SHADER_COMPUTE); in virgl_reemit_compute_resources()
350 virgl_attach_res_atomic_buffers(vctx); in virgl_reemit_compute_resources()
357 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_surface() local
389 virgl_encoder_create_surface(vctx, handle, res, &surf->base); in virgl_create_surface()
397 struct virgl_context *vctx = virgl_context(ctx); in virgl_surface_destroy() local
401 virgl_encode_delete_object(vctx, surf->handle, VIRGL_OBJECT_SURFACE); in virgl_surface_destroy()
408 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_blend_state() local
412 virgl_encode_blend_state(vctx, handle, blend_state); in virgl_create_blend_state()
420 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_blend_state() local
422 virgl_encode_bind_object(vctx, handle, VIRGL_OBJECT_BLEND); in virgl_bind_blend_state()
428 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_blend_state() local
430 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_BLEND); in virgl_delete_blend_state()
436 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_depth_stencil_alpha_state() local
440 virgl_encode_dsa_state(vctx, handle, blend_state); in virgl_create_depth_stencil_alpha_state()
447 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_depth_stencil_alpha_state() local
449 virgl_encode_bind_object(vctx, handle, VIRGL_OBJECT_DSA); in virgl_bind_depth_stencil_alpha_state()
455 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_depth_stencil_alpha_state() local
457 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_DSA); in virgl_delete_depth_stencil_alpha_state()
463 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_rasterizer_state() local
474 virgl_encode_rasterizer_state(vctx, vrs->handle, rs_state); in virgl_create_rasterizer_state()
481 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_rasterizer_state() local
485 vctx->rs_state = *vrs; in virgl_bind_rasterizer_state()
488 virgl_encode_bind_object(vctx, handle, VIRGL_OBJECT_RASTERIZER); in virgl_bind_rasterizer_state()
494 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_rasterizer_state() local
496 virgl_encode_delete_object(vctx, vrs->handle, VIRGL_OBJECT_RASTERIZER); in virgl_delete_rasterizer_state()
503 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_framebuffer_state() local
505 vctx->framebuffer = *state; in virgl_set_framebuffer_state()
506 virgl_encoder_set_framebuffer_state(vctx, state); in virgl_set_framebuffer_state()
507 virgl_attach_res_framebuffer(vctx); in virgl_set_framebuffer_state()
515 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_viewport_states() local
516 virgl_encoder_set_viewport_states(vctx, start_slot, num_viewports, state); in virgl_set_viewport_states()
524 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_vertex_elements_state() local
546 virgl_encoder_create_vertex_elements(vctx, state->handle, in virgl_create_vertex_elements_state()
554 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_vertex_elements_state() local
557 virgl_encode_delete_object(vctx, state->handle, VIRGL_OBJECT_VERTEX_ELEMENTS); in virgl_delete_vertex_elements_state()
564 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_vertex_elements_state() local
567 vctx->vertex_elements = state; in virgl_bind_vertex_elements_state()
568 virgl_encode_bind_object(vctx, state ? state->handle : 0, in virgl_bind_vertex_elements_state()
570 vctx->vertex_array_dirty = TRUE; in virgl_bind_vertex_elements_state()
580 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_vertex_buffers() local
582 util_set_vertex_buffers_count(vctx->vertex_buffer, in virgl_set_vertex_buffers()
583 &vctx->num_vertex_buffers, in virgl_set_vertex_buffers()
597 vctx->vertex_array_dirty = TRUE; in virgl_set_vertex_buffers()
600 static void virgl_hw_set_vertex_buffers(struct virgl_context *vctx) in virgl_hw_set_vertex_buffers() argument
602 if (vctx->vertex_array_dirty) { in virgl_hw_set_vertex_buffers()
603 struct virgl_vertex_elements_state *ve = vctx->vertex_elements; in virgl_hw_set_vertex_buffers()
608 vertex_buffers[i] = vctx->vertex_buffer[ve->binding_map[i]]; in virgl_hw_set_vertex_buffers()
610 virgl_encoder_set_vertex_buffers(vctx, ve->num_bindings, vertex_buffers); in virgl_hw_set_vertex_buffers()
612 virgl_encoder_set_vertex_buffers(vctx, vctx->num_vertex_buffers, vctx->vertex_buffer); in virgl_hw_set_vertex_buffers()
614 virgl_attach_res_vertex_buffers(vctx); in virgl_hw_set_vertex_buffers()
616 vctx->vertex_array_dirty = FALSE; in virgl_hw_set_vertex_buffers()
623 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_stencil_ref() local
624 virgl_encoder_set_stencil_ref(vctx, &ref); in virgl_set_stencil_ref()
630 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_blend_color() local
631 virgl_encoder_set_blend_color(vctx, color); in virgl_set_blend_color()
634 static void virgl_hw_set_index_buffer(struct virgl_context *vctx, in virgl_hw_set_index_buffer() argument
637 virgl_encoder_set_index_buffer(vctx, ib); in virgl_hw_set_index_buffer()
638 virgl_attach_res_index_buffer(vctx, ib); in virgl_hw_set_index_buffer()
646 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_constant_buffer() local
648 &vctx->shader_bindings[shader]; in virgl_set_constant_buffer()
654 virgl_encoder_set_uniform_buffer(vctx, shader, index, in virgl_set_constant_buffer()
670 virgl_encoder_write_constant_buffer(vctx, shader, index, in virgl_set_constant_buffer()
683 struct virgl_context *vctx = virgl_context(ctx); in virgl_shader_encoder() local
692 ntt_tokens = tokens = nir_to_tgsi(s, vctx->base.screen); /* takes ownership */ in virgl_shader_encoder()
697 new_tokens = virgl_tgsi_transform((struct virgl_screen *)vctx->base.screen, tokens); in virgl_shader_encoder()
703 ret = virgl_encode_shader_state(vctx, handle, type, in virgl_shader_encoder()
751 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_fs_state() local
753 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SHADER); in virgl_delete_fs_state()
761 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_gs_state() local
763 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SHADER); in virgl_delete_gs_state()
771 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_vs_state() local
773 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SHADER); in virgl_delete_vs_state()
781 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_tcs_state() local
783 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SHADER); in virgl_delete_tcs_state()
791 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_tes_state() local
793 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SHADER); in virgl_delete_tes_state()
800 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_vs_state() local
802 virgl_encode_bind_shader(vctx, handle, PIPE_SHADER_VERTEX); in virgl_bind_vs_state()
809 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_tcs_state() local
811 virgl_encode_bind_shader(vctx, handle, PIPE_SHADER_TESS_CTRL); in virgl_bind_tcs_state()
818 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_tes_state() local
820 virgl_encode_bind_shader(vctx, handle, PIPE_SHADER_TESS_EVAL); in virgl_bind_tes_state()
827 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_gs_state() local
829 virgl_encode_bind_shader(vctx, handle, PIPE_SHADER_GEOMETRY); in virgl_bind_gs_state()
837 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_fs_state() local
839 virgl_encode_bind_shader(vctx, handle, PIPE_SHADER_FRAGMENT); in virgl_bind_fs_state()
848 struct virgl_context *vctx = virgl_context(ctx); in virgl_clear() local
850 if (!vctx->num_draws) in virgl_clear()
851 virgl_reemit_draw_resources(vctx); in virgl_clear()
852 vctx->num_draws++; in virgl_clear()
854 virgl_encode_clear(vctx, buffers, color, depth, stencil); in virgl_clear()
863 struct virgl_context *vctx = virgl_context(ctx); in virgl_clear_texture() local
866 virgl_encode_clear_texture(vctx, vres, level, box, data); in virgl_clear_texture()
890 struct virgl_context *vctx = virgl_context(ctx); in virgl_draw_vbo() local
901 util_primconvert_save_rasterizer_state(vctx->primconvert, &vctx->rs_state.rs); in virgl_draw_vbo()
902 … util_primconvert_draw_vbo(vctx->primconvert, dinfo, drawid_offset, indirect, draws, num_draws); in virgl_draw_vbo()
913 u_upload_data(vctx->uploader, start_offset, in virgl_draw_vbo()
922 if (!vctx->num_draws) in virgl_draw_vbo()
923 virgl_reemit_draw_resources(vctx); in virgl_draw_vbo()
924 vctx->num_draws++; in virgl_draw_vbo()
926 virgl_hw_set_vertex_buffers(vctx); in virgl_draw_vbo()
928 virgl_hw_set_index_buffer(vctx, &ib); in virgl_draw_vbo()
930 virgl_encoder_draw_vbo(vctx, &info, drawid_offset, indirect, &draws[0]); in virgl_draw_vbo()
991 struct virgl_context *vctx = virgl_context(ctx); in virgl_flush_from_st() local
993 virgl_flush_eq(vctx, vctx, fence); in virgl_flush_from_st()
1000 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_sampler_view() local
1014 virgl_encode_sampler_view(vctx, handle, res, state); in virgl_create_sampler_view()
1034 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_sampler_views() local
1036 &vctx->shader_bindings[shader_type]; in virgl_set_sampler_views()
1057 virgl_encode_set_sampler_views(vctx, shader_type, in virgl_set_sampler_views()
1059 virgl_attach_res_sampler_views(vctx, shader_type); in virgl_set_sampler_views()
1070 struct virgl_context *vctx = virgl_context(ctx); in virgl_texture_barrier() local
1076 virgl_encode_texture_barrier(vctx, flags); in virgl_texture_barrier()
1082 struct virgl_context *vctx = virgl_context(ctx); in virgl_destroy_sampler_view() local
1085 virgl_encode_delete_object(vctx, grview->handle, VIRGL_OBJECT_SAMPLER_VIEW); in virgl_destroy_sampler_view()
1093 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_sampler_state() local
1098 virgl_encode_sampler_state(vctx, handle, state); in virgl_create_sampler_state()
1105 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_sampler_state() local
1108 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SAMPLER_STATE); in virgl_delete_sampler_state()
1117 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_sampler_states() local
1123 virgl_encode_bind_sampler_states(vctx, shader, start_slot, num_samplers, handles); in virgl_bind_sampler_states()
1129 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_polygon_stipple() local
1130 virgl_encoder_set_polygon_stipple(vctx, ps); in virgl_set_polygon_stipple()
1138 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_scissor_states() local
1139 virgl_encoder_set_scissor_state(vctx, start_slot, num_scissor, ss); in virgl_set_scissor_states()
1145 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_sample_mask() local
1146 virgl_encoder_set_sample_mask(vctx, sample_mask); in virgl_set_sample_mask()
1152 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_min_samples() local
1157 virgl_encoder_set_min_samples(vctx, min_samples); in virgl_set_min_samples()
1163 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_clip_state() local
1164 virgl_encoder_set_clip_state(vctx, clip); in virgl_set_clip_state()
1171 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_tess_state() local
1176 virgl_encode_set_tess_state(vctx, default_outer_level, default_inner_level); in virgl_set_tess_state()
1181 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_patch_vertices() local
1183 vctx->patch_vertices = patch_vertices; in virgl_set_patch_vertices()
1194 struct virgl_context *vctx = virgl_context(ctx); in virgl_resource_copy_region() local
1202 virgl_encode_resource_copy_region(vctx, dres, in virgl_resource_copy_region()
1217 struct virgl_context *vctx = virgl_context(ctx); in virgl_blit() local
1227 virgl_encode_blit(vctx, dres, sres, in virgl_blit()
1236 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_hw_atomic_buffers() local
1238 vctx->atomic_buffer_enabled_mask &= ~u_bit_consecutive(start_slot, count); in virgl_set_hw_atomic_buffers()
1245 pipe_resource_reference(&vctx->atomic_buffers[idx].buffer, in virgl_set_hw_atomic_buffers()
1247 vctx->atomic_buffers[idx] = buffers[i]; in virgl_set_hw_atomic_buffers()
1248 vctx->atomic_buffer_enabled_mask |= 1 << idx; in virgl_set_hw_atomic_buffers()
1250 pipe_resource_reference(&vctx->atomic_buffers[idx].buffer, NULL); in virgl_set_hw_atomic_buffers()
1254 virgl_encode_set_hw_atomic_buffers(vctx, start_slot, count, buffers); in virgl_set_hw_atomic_buffers()
1263 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_shader_buffers() local
1266 &vctx->shader_bindings[shader]; in virgl_set_shader_buffers()
1288 virgl_encode_set_shader_buffers(vctx, shader, start_slot, count, buffers); in virgl_set_shader_buffers()
1306 struct virgl_context *vctx = virgl_context(ctx); in virgl_fence_server_sync() local
1310 rs->vws->fence_server_sync(rs->vws, vctx->cbuf, fence); in virgl_fence_server_sync()
1319 struct virgl_context *vctx = virgl_context(ctx); in virgl_set_shader_images() local
1322 &vctx->shader_bindings[shader]; in virgl_set_shader_images()
1345 virgl_encode_set_shader_images(vctx, shader, start_slot, count, images); in virgl_set_shader_images()
1356 struct virgl_context *vctx = virgl_context(ctx); in virgl_memory_barrier() local
1361 virgl_encode_memory_barrier(vctx, flags); in virgl_memory_barrier()
1367 struct virgl_context *vctx = virgl_context(ctx); in virgl_create_compute_state() local
1376 ntt_tokens = tokens = nir_to_tgsi(s, vctx->base.screen); /* takes ownership */ in virgl_create_compute_state()
1382 ret = virgl_encode_shader_state(vctx, handle, PIPE_SHADER_COMPUTE, in virgl_create_compute_state()
1399 struct virgl_context *vctx = virgl_context(ctx); in virgl_bind_compute_state() local
1401 virgl_encode_bind_shader(vctx, handle, PIPE_SHADER_COMPUTE); in virgl_bind_compute_state()
1407 struct virgl_context *vctx = virgl_context(ctx); in virgl_delete_compute_state() local
1409 virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_SHADER); in virgl_delete_compute_state()
1415 struct virgl_context *vctx = virgl_context(ctx); in virgl_launch_grid() local
1417 if (!vctx->num_compute) in virgl_launch_grid()
1418 virgl_reemit_compute_resources(vctx); in virgl_launch_grid()
1419 vctx->num_compute++; in virgl_launch_grid()
1421 virgl_encode_launch_grid(vctx, info); in virgl_launch_grid()
1425 virgl_release_shader_binding(struct virgl_context *vctx, in virgl_release_shader_binding() argument
1429 &vctx->shader_bindings[shader_type]; in virgl_release_shader_binding()
1456 struct virgl_context *vctx = virgl_context(ctx); in virgl_emit_string_marker() local
1457 virgl_encode_emit_string_marker(vctx, message, len); in virgl_emit_string_marker()
1463 struct virgl_context *vctx = virgl_context(ctx); in virgl_context_destroy() local
1467 vctx->framebuffer.zsbuf = NULL; in virgl_context_destroy()
1468 vctx->framebuffer.nr_cbufs = 0; in virgl_context_destroy()
1469 virgl_encoder_destroy_sub_ctx(vctx, vctx->hw_sub_ctx_id); in virgl_context_destroy()
1470 virgl_flush_eq(vctx, vctx, NULL); in virgl_context_destroy()
1473 virgl_release_shader_binding(vctx, shader_type); in virgl_context_destroy()
1475 while (vctx->atomic_buffer_enabled_mask) { in virgl_context_destroy()
1476 int i = u_bit_scan(&vctx->atomic_buffer_enabled_mask); in virgl_context_destroy()
1477 pipe_resource_reference(&vctx->atomic_buffers[i].buffer, NULL); in virgl_context_destroy()
1480 rs->vws->cmd_buf_destroy(vctx->cbuf); in virgl_context_destroy()
1481 if (vctx->uploader) in virgl_context_destroy()
1482 u_upload_destroy(vctx->uploader); in virgl_context_destroy()
1483 if (vctx->supports_staging) in virgl_context_destroy()
1484 virgl_staging_destroy(&vctx->staging); in virgl_context_destroy()
1485 util_primconvert_destroy(vctx->primconvert); in virgl_context_destroy()
1486 virgl_transfer_queue_fini(&vctx->queue); in virgl_context_destroy()
1488 slab_destroy_child(&vctx->transfer_pool); in virgl_context_destroy()
1489 FREE(vctx); in virgl_context_destroy()
1497 struct virgl_context *vctx = virgl_context(ctx); in virgl_get_sample_position() local
1498 struct virgl_screen *vs = virgl_screen(vctx->base.screen); in virgl_get_sample_position()
1530 static void virgl_send_tweaks(struct virgl_context *vctx, struct virgl_screen *rs) in virgl_send_tweaks() argument
1533 virgl_encode_tweak(vctx, virgl_tweak_gles_brga_emulate, 1); in virgl_send_tweaks()
1536 virgl_encode_tweak(vctx, virgl_tweak_gles_brga_apply_dest_swizzle, 1); in virgl_send_tweaks()
1539 virgl_encode_tweak(vctx, virgl_tweak_gles_tf3_samples_passes_multiplier, in virgl_send_tweaks()
1547 struct virgl_context *vctx; in virgl_context_create() local
1549 vctx = CALLOC_STRUCT(virgl_context); in virgl_context_create()
1552 vctx->cbuf = rs->vws->cmd_buf_create(rs->vws, VIRGL_MAX_CMDBUF_DWORDS); in virgl_context_create()
1553 if (!vctx->cbuf) { in virgl_context_create()
1554 FREE(vctx); in virgl_context_create()
1558 vctx->base.destroy = virgl_context_destroy; in virgl_context_create()
1559 vctx->base.create_surface = virgl_create_surface; in virgl_context_create()
1560 vctx->base.surface_destroy = virgl_surface_destroy; in virgl_context_create()
1561 vctx->base.set_framebuffer_state = virgl_set_framebuffer_state; in virgl_context_create()
1562 vctx->base.create_blend_state = virgl_create_blend_state; in virgl_context_create()
1563 vctx->base.bind_blend_state = virgl_bind_blend_state; in virgl_context_create()
1564 vctx->base.delete_blend_state = virgl_delete_blend_state; in virgl_context_create()
1565 vctx->base.create_depth_stencil_alpha_state = virgl_create_depth_stencil_alpha_state; in virgl_context_create()
1566 vctx->base.bind_depth_stencil_alpha_state = virgl_bind_depth_stencil_alpha_state; in virgl_context_create()
1567 vctx->base.delete_depth_stencil_alpha_state = virgl_delete_depth_stencil_alpha_state; in virgl_context_create()
1568 vctx->base.create_rasterizer_state = virgl_create_rasterizer_state; in virgl_context_create()
1569 vctx->base.bind_rasterizer_state = virgl_bind_rasterizer_state; in virgl_context_create()
1570 vctx->base.delete_rasterizer_state = virgl_delete_rasterizer_state; in virgl_context_create()
1572 vctx->base.set_viewport_states = virgl_set_viewport_states; in virgl_context_create()
1573 vctx->base.create_vertex_elements_state = virgl_create_vertex_elements_state; in virgl_context_create()
1574 vctx->base.bind_vertex_elements_state = virgl_bind_vertex_elements_state; in virgl_context_create()
1575 vctx->base.delete_vertex_elements_state = virgl_delete_vertex_elements_state; in virgl_context_create()
1576 vctx->base.set_vertex_buffers = virgl_set_vertex_buffers; in virgl_context_create()
1577 vctx->base.set_constant_buffer = virgl_set_constant_buffer; in virgl_context_create()
1579 vctx->base.set_tess_state = virgl_set_tess_state; in virgl_context_create()
1580 vctx->base.set_patch_vertices = virgl_set_patch_vertices; in virgl_context_create()
1581 vctx->base.create_vs_state = virgl_create_vs_state; in virgl_context_create()
1582 vctx->base.create_tcs_state = virgl_create_tcs_state; in virgl_context_create()
1583 vctx->base.create_tes_state = virgl_create_tes_state; in virgl_context_create()
1584 vctx->base.create_gs_state = virgl_create_gs_state; in virgl_context_create()
1585 vctx->base.create_fs_state = virgl_create_fs_state; in virgl_context_create()
1587 vctx->base.bind_vs_state = virgl_bind_vs_state; in virgl_context_create()
1588 vctx->base.bind_tcs_state = virgl_bind_tcs_state; in virgl_context_create()
1589 vctx->base.bind_tes_state = virgl_bind_tes_state; in virgl_context_create()
1590 vctx->base.bind_gs_state = virgl_bind_gs_state; in virgl_context_create()
1591 vctx->base.bind_fs_state = virgl_bind_fs_state; in virgl_context_create()
1593 vctx->base.delete_vs_state = virgl_delete_vs_state; in virgl_context_create()
1594 vctx->base.delete_tcs_state = virgl_delete_tcs_state; in virgl_context_create()
1595 vctx->base.delete_tes_state = virgl_delete_tes_state; in virgl_context_create()
1596 vctx->base.delete_gs_state = virgl_delete_gs_state; in virgl_context_create()
1597 vctx->base.delete_fs_state = virgl_delete_fs_state; in virgl_context_create()
1599 vctx->base.create_compute_state = virgl_create_compute_state; in virgl_context_create()
1600 vctx->base.bind_compute_state = virgl_bind_compute_state; in virgl_context_create()
1601 vctx->base.delete_compute_state = virgl_delete_compute_state; in virgl_context_create()
1602 vctx->base.launch_grid = virgl_launch_grid; in virgl_context_create()
1604 vctx->base.clear = virgl_clear; in virgl_context_create()
1605 vctx->base.clear_texture = virgl_clear_texture; in virgl_context_create()
1606 vctx->base.draw_vbo = virgl_draw_vbo; in virgl_context_create()
1607 vctx->base.flush = virgl_flush_from_st; in virgl_context_create()
1608 vctx->base.screen = pscreen; in virgl_context_create()
1609 vctx->base.create_sampler_view = virgl_create_sampler_view; in virgl_context_create()
1610 vctx->base.sampler_view_destroy = virgl_destroy_sampler_view; in virgl_context_create()
1611 vctx->base.set_sampler_views = virgl_set_sampler_views; in virgl_context_create()
1612 vctx->base.texture_barrier = virgl_texture_barrier; in virgl_context_create()
1614 vctx->base.create_sampler_state = virgl_create_sampler_state; in virgl_context_create()
1615 vctx->base.delete_sampler_state = virgl_delete_sampler_state; in virgl_context_create()
1616 vctx->base.bind_sampler_states = virgl_bind_sampler_states; in virgl_context_create()
1618 vctx->base.set_polygon_stipple = virgl_set_polygon_stipple; in virgl_context_create()
1619 vctx->base.set_scissor_states = virgl_set_scissor_states; in virgl_context_create()
1620 vctx->base.set_sample_mask = virgl_set_sample_mask; in virgl_context_create()
1621 vctx->base.set_min_samples = virgl_set_min_samples; in virgl_context_create()
1622 vctx->base.set_stencil_ref = virgl_set_stencil_ref; in virgl_context_create()
1623 vctx->base.set_clip_state = virgl_set_clip_state; in virgl_context_create()
1625 vctx->base.set_blend_color = virgl_set_blend_color; in virgl_context_create()
1627 vctx->base.get_sample_position = virgl_get_sample_position; in virgl_context_create()
1629 vctx->base.resource_copy_region = virgl_resource_copy_region; in virgl_context_create()
1630 vctx->base.flush_resource = virgl_flush_resource; in virgl_context_create()
1631 vctx->base.blit = virgl_blit; in virgl_context_create()
1632 vctx->base.create_fence_fd = virgl_create_fence_fd; in virgl_context_create()
1633 vctx->base.fence_server_sync = virgl_fence_server_sync; in virgl_context_create()
1635 vctx->base.set_shader_buffers = virgl_set_shader_buffers; in virgl_context_create()
1636 vctx->base.set_hw_atomic_buffers = virgl_set_hw_atomic_buffers; in virgl_context_create()
1637 vctx->base.set_shader_images = virgl_set_shader_images; in virgl_context_create()
1638 vctx->base.memory_barrier = virgl_memory_barrier; in virgl_context_create()
1639 vctx->base.emit_string_marker = virgl_emit_string_marker; in virgl_context_create()
1641 virgl_init_context_resource_functions(&vctx->base); in virgl_context_create()
1642 virgl_init_query_functions(vctx); in virgl_context_create()
1643 virgl_init_so_functions(vctx); in virgl_context_create()
1645 slab_create_child(&vctx->transfer_pool, &rs->transfer_pool); in virgl_context_create()
1646 virgl_transfer_queue_init(&vctx->queue, vctx); in virgl_context_create()
1647 vctx->encoded_transfers = (rs->vws->supports_encoded_transfers && in virgl_context_create()
1651 if (vctx->encoded_transfers) in virgl_context_create()
1652 vctx->cbuf->cdw = VIRGL_MAX_TBUF_DWORDS; in virgl_context_create()
1654 vctx->primconvert = util_primconvert_create(&vctx->base, rs->caps.caps.v1.prim_mask); in virgl_context_create()
1655 vctx->uploader = u_upload_create(&vctx->base, 1024 * 1024, in virgl_context_create()
1657 if (!vctx->uploader) in virgl_context_create()
1659 vctx->base.stream_uploader = vctx->uploader; in virgl_context_create()
1660 vctx->base.const_uploader = vctx->uploader; in virgl_context_create()
1664 vctx->encoded_transfers) { in virgl_context_create()
1665 virgl_staging_init(&vctx->staging, &vctx->base, 1024 * 1024); in virgl_context_create()
1666 vctx->supports_staging = true; in virgl_context_create()
1669 vctx->hw_sub_ctx_id = p_atomic_inc_return(&rs->sub_ctx_id); in virgl_context_create()
1670 virgl_encoder_create_sub_ctx(vctx, vctx->hw_sub_ctx_id); in virgl_context_create()
1672 virgl_encoder_set_sub_ctx(vctx, vctx->hw_sub_ctx_id); in virgl_context_create()
1677 virgl_encode_host_debug_flagstring(vctx, host_debug_flagstring); in virgl_context_create()
1681 virgl_send_tweaks(vctx, rs); in virgl_context_create()
1683 return &vctx->base; in virgl_context_create()
1685 virgl_context_destroy(&vctx->base); in virgl_context_create()