示例#1
0
void evergreen_delete_compute_state(struct pipe_context *ctx_, void* state)
{
	struct r600_context *ctx = (struct r600_context *)ctx_;
	COMPUTE_DBG(ctx->screen, "*** evergreen_delete_compute_state\n");
	struct r600_pipe_compute *shader = state;

	if (!shader)
		return;

#ifdef HAVE_OPENCL
#if HAVE_LLVM < 0x0306
	for (unsigned i = 0; i < shader->num_kernels; i++) {
		struct r600_kernel *kernel = &shader->kernels[i];
		LLVMDisposeModule(module);
	}
	FREE(shader->kernels);
	LLVMContextDispose(shader->llvm_ctx);
#else
	radeon_shader_binary_clean(&shader->binary);
	r600_destroy_shader(&shader->bc);

	/* TODO destroy shader->code_bo, shader->const_bo
	 * we'll need something like r600_buffer_free */
#endif
#endif
	FREE(shader);
}
示例#2
0
static void evergreen_delete_compute_state(struct pipe_context *ctx, void *state)
{
	struct r600_context *rctx = (struct r600_context *)ctx;
	struct r600_pipe_compute *shader = state;

	COMPUTE_DBG(rctx->screen, "*** evergreen_delete_compute_state\n");

	if (!shader)
		return;

	radeon_shader_binary_clean(&shader->binary);
	r600_destroy_shader(&shader->bc);

	/* TODO destroy shader->code_bo, shader->const_bo
	 * we'll need something like r600_buffer_free */
	FREE(shader);
}