blob: 0236b84f0b6e17c8a127211ecf9af1ae98275665 [file] [log] [blame]
Chia-I Wua5714e82014-08-11 15:33:42 +08001/*
2 * XGL
3 *
4 * Copyright (C) 2014 LunarG, Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
25#ifndef STATE_H
26#define STATE_H
27
28#include "intel.h"
29#include "obj.h"
30
31struct intel_viewport_state {
32 struct intel_obj obj;
33
34 /* SF_CLIP_VIEWPORTs, CC_VIEWPORTs, and SCISSOR_RECTs */
35 uint32_t *cmd;
36 XGL_SIZE size;
37};
38
39struct intel_raster_state {
40 struct intel_obj obj;
41
42 /* a part of 3DSTATE_SF? */
43 uint32_t cmd[6];
44};
45
46struct intel_msaa_state {
47 struct intel_obj obj;
48
49 /* 3DSTATE_MULTISAMPLE and 3DSTATE_SAMPLE_MASK */
50 uint32_t cmd[6];
51};
52
53struct intel_blend_state {
54 struct intel_obj obj;
55
56 /* BLEND_STATE */
57 uint32_t cmd[XGL_MAX_COLOR_ATTACHMENTS * 2];
58};
59
60struct intel_ds_state {
61 struct intel_obj obj;
62
63 /* DEPTH_STENCIL_STATE */
64 uint32_t cmd[2];
65};
66
67static inline struct intel_viewport_state *intel_viewport_state(XGL_VIEWPORT_STATE_OBJECT state)
68{
69 return (struct intel_viewport_state *) state;
70}
71
72static inline struct intel_viewport_state *intel_viewport_state_from_obj(struct intel_obj *obj)
73{
74 return (struct intel_viewport_state *) obj;
75}
76
77static inline struct intel_raster_state *intel_raster_state(XGL_RASTER_STATE_OBJECT state)
78{
79 return (struct intel_raster_state *) state;
80}
81
82static inline struct intel_raster_state *intel_raster_state_from_obj(struct intel_obj *obj)
83{
84 return (struct intel_raster_state *) obj;
85}
86
87static inline struct intel_msaa_state *intel_msaa_state(XGL_VIEWPORT_STATE_OBJECT state)
88{
89 return (struct intel_msaa_state *) state;
90}
91
92static inline struct intel_msaa_state *intel_msaa_state_from_obj(struct intel_obj *obj)
93{
94 return (struct intel_msaa_state *) obj;
95}
96
97static inline struct intel_blend_state *intel_blend_state(XGL_VIEWPORT_STATE_OBJECT state)
98{
99 return (struct intel_blend_state *) state;
100}
101
102static inline struct intel_blend_state *intel_blend_state_from_obj(struct intel_obj *obj)
103{
104 return (struct intel_blend_state *) obj;
105}
106
107static inline struct intel_ds_state *intel_ds_state(XGL_VIEWPORT_STATE_OBJECT state)
108{
109 return (struct intel_ds_state *) state;
110}
111
112static inline struct intel_ds_state *intel_ds_state_from_obj(struct intel_obj *obj)
113{
114 return (struct intel_ds_state *) obj;
115}
116
117XGL_RESULT intel_viewport_state_create(struct intel_dev *dev,
118 const XGL_VIEWPORT_STATE_CREATE_INFO *info,
119 struct intel_viewport_state **state_ret);
120void intel_viewport_state_destroy(struct intel_viewport_state *state);
121
122XGL_RESULT intel_raster_state_create(struct intel_dev *dev,
123 const XGL_RASTER_STATE_CREATE_INFO *info,
124 struct intel_raster_state **state_ret);
125void intel_raster_state_destroy(struct intel_raster_state *state);
126
127XGL_RESULT intel_msaa_state_create(struct intel_dev *dev,
128 const XGL_MSAA_STATE_CREATE_INFO *info,
129 struct intel_msaa_state **state_ret);
130void intel_msaa_state_destroy(struct intel_msaa_state *state);
131
132XGL_RESULT intel_blend_state_create(struct intel_dev *dev,
133 const XGL_COLOR_BLEND_STATE_CREATE_INFO *info,
134 struct intel_blend_state **state_ret);
135void intel_blend_state_destroy(struct intel_blend_state *state);
136
137XGL_RESULT intel_ds_state_create(struct intel_dev *dev,
138 const XGL_DEPTH_STENCIL_STATE_CREATE_INFO *info,
139 struct intel_ds_state **state_ret);
140void intel_ds_state_destroy(struct intel_ds_state *state);
141
142XGL_RESULT XGLAPI intelCreateViewportState(
143 XGL_DEVICE device,
144 const XGL_VIEWPORT_STATE_CREATE_INFO* pCreateInfo,
145 XGL_VIEWPORT_STATE_OBJECT* pState);
146
147XGL_RESULT XGLAPI intelCreateRasterState(
148 XGL_DEVICE device,
149 const XGL_RASTER_STATE_CREATE_INFO* pCreateInfo,
150 XGL_RASTER_STATE_OBJECT* pState);
151
152XGL_RESULT XGLAPI intelCreateMsaaState(
153 XGL_DEVICE device,
154 const XGL_MSAA_STATE_CREATE_INFO* pCreateInfo,
155 XGL_MSAA_STATE_OBJECT* pState);
156
157XGL_RESULT XGLAPI intelCreateColorBlendState(
158 XGL_DEVICE device,
159 const XGL_COLOR_BLEND_STATE_CREATE_INFO* pCreateInfo,
160 XGL_COLOR_BLEND_STATE_OBJECT* pState);
161
162XGL_RESULT XGLAPI intelCreateDepthStencilState(
163 XGL_DEVICE device,
164 const XGL_DEPTH_STENCIL_STATE_CREATE_INFO* pCreateInfo,
165 XGL_DEPTH_STENCIL_STATE_OBJECT* pState);
166
167#endif /* STATE_H */