Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/gallium/frontends/hgl/hgl_context.h
4561 views
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, [email protected]
7
*/
8
#ifndef HGL_CONTEXT_H
9
#define HGL_CONTEXT_H
10
11
#include "os/os_thread.h"
12
#include "pipe/p_format.h"
13
#include "pipe/p_compiler.h"
14
#include "pipe/p_screen.h"
15
#include "postprocess/filters.h"
16
17
#include "frontend/api.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
void* winsysContext;
43
44
enum pipe_texture_target target;
45
struct pipe_resource* textures[ST_ATTACHMENT_COUNT];
46
47
void *map;
48
};
49
50
51
struct hgl_display
52
{
53
mtx_t mutex;
54
55
struct st_api* api;
56
struct st_manager* manager;
57
};
58
59
60
struct hgl_context
61
{
62
struct hgl_display* display;
63
struct st_context_iface* st;
64
struct st_visual* stVisual;
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
mtx_t fbMutex;
75
76
struct hgl_buffer* buffer;
77
};
78
79
// hgl_buffer from statetracker interface
80
struct hgl_buffer* hgl_st_framebuffer(struct st_framebuffer_iface *stfbi);
81
82
// hgl frontend
83
struct st_api* hgl_create_st_api(void);
84
85
// hgl framebuffer
86
struct hgl_buffer* hgl_create_st_framebuffer(struct hgl_context* context, void *winsysContext);
87
void hgl_destroy_st_framebuffer(struct hgl_buffer *buffer);
88
89
// hgl manager
90
struct st_manager* hgl_create_st_manager(struct hgl_context* screen);
91
void hgl_destroy_st_manager(struct st_manager *manager);
92
93
// hgl visual
94
struct st_visual* hgl_create_st_visual(ulong options);
95
void hgl_destroy_st_visual(struct st_visual* visual);
96
97
// hgl display
98
struct hgl_display* hgl_create_display(struct pipe_screen* screen);
99
void hgl_destroy_display(struct hgl_display *display);
100
101
102
#ifdef __cplusplus
103
}
104
#endif
105
106
#endif /* HGL_CONTEXT_H */
107
108