Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 1
/*
2
 * Copyright 2011 Adam Rak 
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a
5
 * copy of this software and associated documentation files (the "Software"),
6
 * to deal in the Software without restriction, including without limitation
7
 * on the rights to use, copy, modify, merge, publish, distribute, sub
8
 * license, and/or sell copies of the Software, and to permit persons to whom
9
 * the Software is furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice (including the next
12
 * paragraph) shall be included in all copies or substantial portions of the
13
 * Software.
14
 *
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
18
 * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
19
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
21
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
22
 *
23
 * Authors:
24
 *      Adam Rak 
25
 */
26
 
27
#ifndef EVERGREEN_COMPUTE_H
28
#define EVERGREEN_COMPUTE_H
29
 
30
#include "r600_pipe.h"
31
 
32
struct r600_atom;
33
struct evergreen_compute_resource;
34
struct compute_memory_item;
35
 
36
struct r600_resource_global {
37
	struct r600_resource base;
38
	struct compute_memory_item *chunk;
39
};
40
 
41
void *evergreen_create_compute_state(struct pipe_context *ctx, const struct pipe_compute_state *cso);
42
void evergreen_delete_compute_state(struct pipe_context *ctx, void *state);
43
void evergreen_compute_upload_input(struct pipe_context *context, const uint *block_layout, const uint *grid_layout, const void *input);
44
void evergreen_init_atom_start_compute_cs(struct r600_context *rctx);
45
void evergreen_init_compute_state_functions(struct r600_context *rctx);
46
void evergreen_emit_cs_shader(struct r600_context *rctx, struct r600_atom * atom);
47
 
48
struct r600_resource* r600_compute_buffer_alloc_vram(struct r600_screen *screen, unsigned size);
49
struct pipe_resource *r600_compute_global_buffer_create(struct pipe_screen *screen, const struct pipe_resource *templ);
50
void r600_compute_global_buffer_destroy(struct pipe_screen *screen, struct pipe_resource *res);
51
void *r600_compute_global_transfer_map(
52
	struct pipe_context *ctx_,
53
	struct pipe_resource *resource,
54
	unsigned level,
55
	unsigned usage,
56
	const struct pipe_box *box,
57
	struct pipe_transfer **ptransfer);
58
void r600_compute_global_transfer_unmap(struct pipe_context *ctx, struct pipe_transfer* transfer);
59
void r600_compute_global_transfer_flush_region( struct pipe_context *, struct pipe_transfer *, const struct pipe_box *);
60
void r600_compute_global_transfer_inline_write( struct pipe_context *, struct pipe_resource *, unsigned level,
61
                                                unsigned usage, const struct pipe_box *, const void *data, unsigned stride, unsigned layer_stride);
62
 
63
#endif