mesa: add KHR_no_error support for glPixelStore*()
[mesa.git] / src / gallium / state_trackers / hgl / hgl_context.h
1 /*
2 * Copyright 2009-2014, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 * Alexander von Gluck IV, kallisti5@unixzen.com
7 */
8 #ifndef HGL_CONTEXT_H
9 #define HGL_CONTEXT_H
10
11
12 #include "state_tracker/st_api.h"
13 #include "state_tracker/st_manager.h"
14 #include "pipe/p_compiler.h"
15 #include "pipe/p_screen.h"
16 #include "postprocess/filters.h"
17 #include "os/os_thread.h"
18
19 #include "bitmap_wrapper.h"
20
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26
27 #define CONTEXT_MAX 32
28
29 typedef int64 context_id;
30
31
32 struct hgl_buffer
33 {
34 struct st_framebuffer_iface *stfbi;
35 struct st_visual* visual;
36
37 unsigned width;
38 unsigned height;
39 unsigned mask;
40
41 struct pipe_screen* screen;
42 enum pipe_texture_target target;
43 struct pipe_resource* textures[ST_ATTACHMENT_COUNT];
44
45 void *map;
46
47 //struct hgl_buffer *next; /**< next in linked list */
48 };
49
50
51 struct hgl_context
52 {
53 struct st_api* api;
54 // State Tracker API
55 struct st_manager* manager;
56 // State Tracker Manager
57 struct st_context_iface* st;
58 // State Tracker Interface Object
59 struct st_visual* stVisual;
60 // State Tracker Visual
61
62 struct pipe_screen* screen;
63
64 //struct pipe_resource* textures[ST_ATTACHMENT_COUNT];
65
66 // Post processing
67 struct pp_queue_t* postProcess;
68 unsigned int postProcessEnable[PP_FILTERS];
69
70 // Desired viewport size
71 unsigned width;
72 unsigned height;
73
74 Bitmap* bitmap;
75 color_space colorSpace;
76
77 mtx_t fbMutex;
78
79 struct hgl_buffer* draw;
80 struct hgl_buffer* read;
81 };
82
83
84 // hgl state_tracker api
85 struct st_api* hgl_create_st_api(void);
86
87 // hgl state_tracker framebuffer
88 struct hgl_buffer* hgl_create_st_framebuffer(struct hgl_context* context);
89
90 // hgl state_tracker manager
91 struct st_manager* hgl_create_st_manager(struct hgl_context* screen);
92 void hgl_destroy_st_manager(struct st_manager *manager);
93
94 // hgl state_tracker visual
95 struct st_visual* hgl_create_st_visual(ulong options);
96 void hgl_destroy_st_visual(struct st_visual* visual);
97
98
99 #ifdef __cplusplus
100 }
101 #endif
102
103 #endif /* HGL_CONTEXT_H */