55 checkGLcall(
"glPolygonMode(GL_FRONT_AND_BACK, GL_POINT)");
59 checkGLcall(
"glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)");
63 checkGLcall(
"glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)");
66 FIXME(
"Unrecognized fill mode %#x.\n",
mode);
95 FIXME(
"Unrecognized cull mode %#x.\n",
mode);
117 FIXME(
"Unrecognized shade mode %#x.\n",
160 WARN(
"Unrecognized compare function %#x.\n",
f);
162 FIXME(
"Unrecognized compare function %#x.\n",
f);
183 WARN(
"Unhandled blend op %#x.\n",
op);
185 FIXME(
"Unhandled blend op %#x.\n",
op);
198 WARN(
"Unsupported in local OpenGL implementation: glBlendEquation.\n");
205 WARN(
"Unsupported in local OpenGL implementation: glBlendEquationSeparate.\n");
209 blend_equation =
gl_blend_op(gl_info,
b->desc.rt[0].op);
210 blend_equation_alpha =
gl_blend_op(gl_info,
b->desc.rt[0].op_alpha);
211 TRACE(
"blend_equation %#x, blend_equation_alpha %#x.\n", blend_equation, blend_equation_alpha);
213 if (
b->desc.rt[0].op !=
b->desc.rt[0].op_alpha)
215 GL_EXTCALL(glBlendEquationSeparate(blend_equation, blend_equation_alpha));
271 WARN(
"Unhandled blend factor %#x.\n",
factor);
304 WARN(
"Unsupported in local OpenGL implementation: glBlendColor.\n");
325 if (!
b->desc.rt[
index].enable)
342 GLenum src_blend, dst_blend;
347 if (
b &&
b->desc.alpha_to_coverage)
351 checkGLcall(
"glEnable GL_SAMPLE_ALPHA_TO_COVERAGE");
354 if (
b &&
b->desc.independent)
355 WARN(
"Independent blend is not supported by this GL implementation.\n");
357 mask =
b ?
b->desc.rt[0].writemask : 0xf;
375 rt_format =
state->fb.render_targets[0]->format;
377 gl_blend_from_d3d(&src_blend, &dst_blend,
b->desc.rt[0].src,
b->desc.rt[0].dst, rt_format);
381 if (
b->desc.rt[0].src !=
b->desc.rt[0].src_alpha ||
b->desc.rt[0].dst !=
b->desc.rt[0].dst_alpha)
383 GLenum src_blend_alpha, dst_blend_alpha;
388 WARN(
"Unsupported in local OpenGL implementation: glBlendFuncSeparate.\n");
392 gl_blend_from_d3d(&src_blend_alpha, &dst_blend_alpha,
b->desc.rt[0].src_alpha,
b->desc.rt[0].dst_alpha, rt_format);
394 GL_EXTCALL(glBlendFuncSeparate(src_blend, dst_blend, src_blend_alpha, dst_blend_alpha));
399 TRACE(
"glBlendFunc src=%x, dst=%x.\n", src_blend, dst_blend);
400 gl_info->
gl_ops.gl.p_glBlendFunc(src_blend, dst_blend);
418 GLenum src_blend, dst_blend, src_blend_alpha, dst_blend_alpha;
421 BOOL dual_source =
b &&
b->dual_source;
424 if (
b &&
b->desc.alpha_to_coverage)
428 checkGLcall(
"glEnable GL_SAMPLE_ALPHA_TO_COVERAGE");
430 if (
context->last_was_dual_source_blend != dual_source)
434 context->last_was_dual_source_blend = dual_source;
437 if (!
b || !
b->desc.independent)
443 rt_format =
state->fb.render_targets[0]->format;
444 gl_blend_from_d3d(&src_blend, &dst_blend,
b->desc.rt[0].src,
b->desc.rt[0].dst, rt_format);
445 gl_blend_from_d3d(&src_blend_alpha, &dst_blend_alpha,
b->desc.rt[0].src_alpha,
b->desc.rt[0].dst_alpha, rt_format);
447 GL_EXTCALL(glBlendFuncSeparate(src_blend, dst_blend, src_blend_alpha, dst_blend_alpha));
468 if (
b->desc.rt[
i].src !=
b->desc.rt[0].src
469 ||
b->desc.rt[
i].dst !=
b->desc.rt[0].dst
470 ||
b->desc.rt[
i].op !=
b->desc.rt[0].op
471 ||
b->desc.rt[
i].src_alpha !=
b->desc.rt[0].src_alpha
472 ||
b->desc.rt[
i].dst_alpha !=
b->desc.rt[0].dst_alpha
473 ||
b->desc.rt[
i].op_alpha !=
b->desc.rt[0].op_alpha)
474 WARN(
"Independent blend equations and blend functions are not supported by this GL implementation.\n");
485 if (
b &&
b->desc.alpha_to_coverage)
489 checkGLcall(
"glEnable GL_SAMPLE_ALPHA_TO_COVERAGE");
498 if (!
b || !
b->desc.independent)
506 GLenum src_blend, dst_blend, src_blend_alpha, dst_blend_alpha;
521 rt_format =
state->fb.render_targets[
i]->format;
524 b->desc.rt[
i].src_alpha,
b->desc.rt[
i].dst_alpha, rt_format);
526 GL_EXTCALL(glBlendFuncSeparatei(
i, src_blend, dst_blend, src_blend_alpha, dst_blend_alpha));
560 checkGLcall(
"glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)");
565 gl_info->
gl_ops.gl.p_glStencilOp(stencilFail, depthFail, stencilPass);
591 WARN(
"Unrecognized stencil op %#x.\n",
op);
593 FIXME(
"Unrecognized stencil op %#x.\n",
op);
607 GLint stencilFail_back;
609 GLint stencilPass_back;
611 GLint depthFail_back;
614 if (!
state->fb.depth_stencil || !
d || !
d->desc.stencil)
625 mask =
d->desc.stencil_read_mask;
634 TRACE(
"(ref %x, mask %x, "
635 "GL_FRONT: func: %x, fail %x, zfail %x, zpass %x "
636 "GL_BACK: func: %x, fail %x, zfail %x, zpass %x)\n",
638 func, stencilFail, depthFail, stencilPass,
639 func_back, stencilFail_back, depthFail_back, stencilPass_back);
641 if (
memcmp(&
d->desc.front, &
d->desc.back,
sizeof(
d->desc.front)))
651 GL_EXTCALL(glStencilOpSeparate(
GL_BACK, stencilFail_back, depthFail_back, stencilPass_back));
663 func_back,
ref,
mask, stencilFail_back, depthFail_back, stencilPass_back);
665 func,
ref,
mask, stencilFail, depthFail, stencilPass);
672 checkGLcall(
"glStencilOpSeparateATI(GL_FRONT, ...)");
673 GL_EXTCALL(glStencilOpSeparateATI(
GL_BACK, stencilFail_back, depthFail_back, stencilPass_back));
674 checkGLcall(
"glStencilOpSeparateATI(GL_BACK, ...)");
678 FIXME(
"Separate (two sided) stencil not supported on this version of OpenGL. Caps weren't honored?\n");
686 checkGLcall(
"glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT)");
696 gl_info->
gl_ops.gl.p_glStencilOp(stencilFail, depthFail, stencilPass);
708 if (!
state->fb.depth_stencil)
710 TRACE(
"No depth/stencil buffer is attached; disabling depth test.\n");
711 enable_depth =
FALSE;
725 if (!
d ||
d->desc.depth_write)
740 gl_info->
gl_ops.gl.p_glDepthFunc(depth_func);
748 if (
state->depth_bounds_enable &&
state->depth_bounds_min <=
state->depth_bounds_max)
758 checkGLcall(
"glDisable(GL_DEPTH_BOUNDS_TEST_EXT)");
762 if (
context->stream_info.position_transformed)
770 GLuint stencil_write_mask = 0;
775 if (
state->fb.depth_stencil)
776 stencil_write_mask =
d ?
d->desc.stencil_write_mask : ~0
u;
778 gl_info->
gl_ops.gl.p_glStencilMask(stencil_write_mask);
786 GLuint stencil_write_mask = 0;
791 if (
state->fb.depth_stencil)
792 stencil_write_mask =
d ?
d->desc.stencil_write_mask : ~0
u;
796 gl_info->
gl_ops.gl.p_glStencilMask(stencil_write_mask);
800 gl_info->
gl_ops.gl.p_glStencilMask(stencil_write_mask);
813 TRACE(
"Line pattern: repeat %d bits %x.\n", tmppattern.lp.repeat_factor, tmppattern.lp.line_pattern);
815 if (tmppattern.lp.repeat_factor)
817 gl_info->
gl_ops.gl.p_glLineStipple(tmppattern.lp.repeat_factor, tmppattern.lp.line_pattern);
831 static unsigned int once;
834 FIXME(
"Setting line patterns is not supported in OpenGL core contexts.\n");
840 WARN(
"Multisample antialiasing not supported by GL.\n");
861 if (
r &&
r->desc.line_antialias)
875 if (
r &&
r->desc.scissor)
906 float scale_bias =
r ?
r->desc.scale_bias : 0.0f;
913 const_bias.f =
r ?
r->desc.depth_bias : 0.0f;
915 if (scale_bias || const_bias.f)
920 clamp =
r ?
r->desc.depth_bias_clamp : 0.0f;
932 TRACE(
"Depth format %s, using depthbias scale of %.8e.\n",
938 TRACE(
"No depth stencil, using depth bias scale of 0.0.\n");
954 WARN(
"Ignoring depth bias clamp %.8e.\n",
clamp);
969 unsigned int sample_mask =
state->sample_mask;
971 TRACE(
"Setting sample mask to %#x.\n", sample_mask);
972 if (sample_mask != 0xffffffff)
988 WARN(
"Unsupported in local OpenGL implementation: glSampleMaski.\n");
1009 for (
unsigned int i = 0;
i < gl_info->
limits.user_clip_distances; ++
i)
1014 gl_info->
gl_ops.gl.p_glPushMatrix();
1015 gl_info->
gl_ops.gl.p_glLoadIdentity();
1025 gl_info->
gl_ops.gl.p_glPopMatrix();
1051 unsigned int i, reset_count = 0;
1053 for (
i = 0;
i <
state->viewport_count; ++
i)
1056 depth_ranges[
i * 2] = min_z;
1057 depth_ranges[
i * 2 + 1] = max_z;
1059 viewports[
i * 4] =
state->viewports[
i].x;
1060 viewports[
i * 4 + 1] =
state->viewports[
i].y;
1061 viewports[
i * 4 + 2] =
state->viewports[
i].width;
1062 viewports[
i * 4 + 3] =
state->viewports[
i].height;
1072 if (!
context->d3d_info->subpixel_viewport)
1074 viewports[
i * 4] =
floor(viewports[
i * 4]);
1075 viewports[
i * 4 + 1] =
floor(viewports[
i * 4 + 1]);
1076 viewports[
i * 4 + 2] =
floor(viewports[
i * 4 + 2]);
1077 viewports[
i * 4 + 3] =
floor(viewports[
i * 4 + 3]);
1082 reset_count =
context->viewport_count -
state->viewport_count;
1086 memset(&depth_ranges[
state->viewport_count * 2], 0, reset_count * 2 *
sizeof(*depth_ranges));
1087 memset(&viewports[
state->viewport_count * 4], 0, reset_count * 4 *
sizeof(*viewports));
1090 GL_EXTCALL(glDepthRangeArrayv(0,
state->viewport_count + reset_count, depth_ranges));
1091 GL_EXTCALL(glViewportArrayv(0,
state->viewport_count + reset_count, viewports));
1097 gl_info->
gl_ops.gl.p_glDepthRange(min_z, max_z);
1098 gl_info->
gl_ops.gl.p_glViewport(
state->viewports[0].x,
state->viewports[0].y,
1099 state->viewports[0].width,
state->viewports[0].height);
1109 float pixel_center_offset =
context->d3d_info->wined3d_creation_flags
1113 unsigned int i, reset_count = 0;
1116 pixel_center_offset +=
context->d3d_info->filling_convention_offset / 2.0f;
1120 for (
i = 0;
i <
state->viewport_count; ++
i)
1123 depth_ranges[
i * 2] = min_z;
1124 depth_ranges[
i * 2 + 1] = max_z;
1126 viewports[
i * 4] =
state->viewports[
i].x + pixel_center_offset;
1127 viewports[
i * 4 + 1] =
state->viewports[
i].y + pixel_center_offset;
1128 viewports[
i * 4 + 2] =
state->viewports[
i].width;
1129 viewports[
i * 4 + 3] =
state->viewports[
i].height;
1133 reset_count =
context->viewport_count -
state->viewport_count;
1137 memset(&depth_ranges[
state->viewport_count * 2], 0, reset_count * 2 *
sizeof(*depth_ranges));
1138 memset(&viewports[
state->viewport_count * 4], 0, reset_count * 4 *
sizeof(*viewports));
1141 GL_EXTCALL(glDepthRangeArrayv(0,
state->viewport_count + reset_count, depth_ranges));
1142 GL_EXTCALL(glViewportArrayv(0,
state->viewport_count + reset_count, viewports));
1160 unsigned int i, reset_count = 0;
1162 for (
i = 0;
i <
state->scissor_rect_count; ++
i)
1166 sr[
i * 4] =
r->left;
1167 sr[
i * 4 + 1] =
r->top;
1168 sr[
i * 4 + 2] =
r->right -
r->left;
1169 sr[
i * 4 + 3] =
r->bottom -
r->top;
1172 if (
context->scissor_rect_count >
state->scissor_rect_count)
1173 reset_count =
context->scissor_rect_count -
state->scissor_rect_count;
1176 memset(&sr[
state->scissor_rect_count * 4], 0, reset_count * 4 *
sizeof(
GLint));
1178 GL_EXTCALL(glScissorArrayv(0,
state->scissor_rect_count + reset_count, sr));
1180 context->scissor_rect_count =
state->scissor_rect_count;
1184 r = &
state->scissor_rects[0];
1185 gl_info->
gl_ops.gl.p_glScissor(
r->left,
r->top,
r->right -
r->left,
r->bottom -
r->top);
1203 if (
buffer->buffer_object)
1218 if (
r && !
r->desc.depth_clip)
1219 FIXME(
"Depth clamp not supported by this GL implementation.\n");
1223 if (
r && !
r->desc.depth_clip)
1331 context->update_shader_resource_bindings = 1;
1338 context->update_compute_shader_resource_bindings = 1;
1345 context->update_unordered_access_view_bindings = 1;
1352 context->update_compute_unordered_access_view_bindings = 1;
1357 WARN(
"ARB_shader_image_load_store is not supported by this OpenGL implementation.\n");
1374 if (!
state->stream_output[
i].buffer)
1385 FIXME(
"Appending to stream output buffers not implemented.\n");
1398 WARN(
"Transform feedback not supported.\n");
1481 memset(caps, 0,
sizeof(*caps));
1501 memset(caps, 0,
sizeof(*caps));
1587 static const unsigned int simple_states[] =
1637 ERR(
"State %s (%#x) should have a representative.\n",
1648 ERR(
"State %s (%#x) has invalid representative %s (%#x).\n",
1676 memset(multistate_funcs, 0,
sizeof(multistate_funcs));
1689 case 0:
cur = misc;
break;
1701 for (
i = 0;
cur[
i].state; ++
i)
1734 if (!(dev_multistate_funcs[
cur[
i].
state] =
calloc(2,
sizeof(**dev_multistate_funcs))))
1737 dev_multistate_funcs[
cur[
i].state][0] = multistate_funcs[
cur[
i].state][0];
1738 dev_multistate_funcs[
cur[
i].state][1] = multistate_funcs[
cur[
i].state][1];
1743 sizeof(**dev_multistate_funcs) * 3)))
1746 dev_multistate_funcs[
cur[
i].state] = funcs_array;
1747 dev_multistate_funcs[
cur[
i].state][2] = multistate_funcs[
cur[
i].state][2];
1750 ERR(
"Unexpected amount of state handlers for state %u: %u.\n",
1757 FIXME(
"State %s (%#x) has different representatives in different pipeline parts.\n",
1772 free(dev_multistate_funcs[
i]);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void wined3d_context_gl_enable_clip_distances(struct wined3d_context_gl *context_gl, uint32_t enable_mask)
void context_state_fb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
void wined3d_context_gl_end_transform_feedback(struct wined3d_context_gl *context_gl)
void wined3d_context_gl_update_stream_sources(struct wined3d_context_gl *context_gl, const struct wined3d_state *state)
void context_state_drawbuf(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static const struct @282 state_table[]
const char * debug_d3dformat(enum wined3d_format_id format_id)
const char * debug_d3dstate(uint32_t state)
void wined3d_gl_limits_get_uniform_block_range(const struct wined3d_gl_limits *gl_limits, enum wined3d_shader_type shader_type, unsigned int *base, unsigned int *count)
const char * debug_color(const struct wined3d_color *color)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP double __cdecl floor(double)
static xmlCharEncodingHandlerPtr * handlers
static void vdecl_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void blend(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static BOOL is_blend_enabled(struct wined3d_context *context, const struct wined3d_state *state, UINT index)
static void state_cb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_msaa_w(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
void state_nop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
const struct wined3d_vertex_pipe_ops none_vertex_pipe
static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_msaa(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void prune_invalid_states(struct wined3d_state_entry *state_table, const struct wined3d_d3d_info *d3d_info)
static void state_sample_mask(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static GLenum gl_blend_op(const struct wined3d_gl_info *gl_info, enum wined3d_blend_op op)
static void scissor(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
void ffp_vertex_update_clip_plane_constants(const struct wined3d_gl_info *gl_info, const struct wined3d_state *state)
static void state_blend_factor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void blend_db2(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void none_pipe_disable(const struct wined3d_context *context)
static void blend_dbb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_uav_warn(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_cs_resource_binding(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_stencil(struct wined3d_context *context, const struct wined3d_state *state)
static void multistate_apply_2(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_shader_resource_binding(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
const struct wined3d_fragment_pipe_ops none_fragment_pipe
static void none_free(struct wined3d_device *device, struct wined3d_context *context)
static void fp_none_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps)
static void state_ditherenable(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void depthbias(struct wined3d_context *context, const struct wined3d_state *state)
static void state_undefined(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void scissorrect(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_cs_uav_binding(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void line_antialias(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DWORD mask)
static void * none_alloc(const struct wined3d_shader_backend_ops *shader_backend, void *shader_priv)
static void indexbuffer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void blendop(const struct wined3d_state *state, const struct wined3d_gl_info *gl_info)
static BOOL ffp_none_context_alloc(struct wined3d_context *context)
static void state_sample_mask_w(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_so_warn(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_blend_factor_w(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void cullmode(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
static BOOL fp_none_color_fixup_supported(struct color_fixup_desc fixup)
static void multistate_apply_3(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void viewport_miscpart_cc(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
const struct wined3d_state_entry_template misc_state_template_gl[]
static void gl_blend_from_d3d(GLenum *src_blend, GLenum *dst_blend, enum wined3d_blend d3d_src_blend, enum wined3d_blend d3d_dst_blend, const struct wined3d_format *rt_format)
static void streamsrc(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static unsigned int vp_none_get_emul_mask(const struct wined3d_adapter *adapter)
static void state_compute_shader(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void renderstate_stencil_twosided(struct wined3d_context *context, GLint face, GLint func, GLint ref, GLuint mask, GLint stencilFail, GLint depthFail, GLint stencilPass)
static unsigned int fp_none_get_emul_mask(const struct wined3d_adapter *adapter)
static void depth_stencil_2s(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void rasterizer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void none_pipe_apply_draw_state(struct wined3d_context *context, const struct wined3d_state *state)
static void state_uav_binding(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static GLenum gl_blend_factor(enum wined3d_blend factor, const struct wined3d_format *dst_format)
static void ffp_none_context_free(struct wined3d_context *context)
static void rasterizer_cc(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
void state_clipping(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_linepattern(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void depth_stencil(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_cb_warn(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void validate_state_table(struct wined3d_state_entry *state_table)
static void depth_clip(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
static void state_shader(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
void clipplane(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static unsigned int num_handlers(const APPLYSTATEFUNC *funcs)
static void fillmode(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
static void state_so(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void state_linepattern_w(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
GLenum wined3d_gl_compare_func(enum wined3d_cmp_func f)
static void vp_none_get_caps(const struct wined3d_adapter *adapter, struct wined3d_vertex_caps *caps)
static GLenum gl_stencil_op(enum wined3d_stencil_op op)
HRESULT compile_state_table(struct wined3d_state_entry *state_table, APPLYSTATEFUNC **dev_multistate_funcs, const struct wined3d_d3d_info *d3d_info, const BOOL *supported_extensions, const struct wined3d_vertex_pipe_ops *vertex, const struct wined3d_fragment_pipe_ops *fragment, const struct wined3d_state_entry_template *misc)
void state_shademode(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
GLint GLint GLsizei GLsizei GLsizei depth
GLAPI void GLAPIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
#define GL_FRONT_AND_BACK
#define GL_SRC_ALPHA_SATURATE
#define GL_POLYGON_OFFSET_FILL
#define GL_ONE_MINUS_DST_ALPHA
GLuint GLuint GLsizei count
#define GL_ONE_MINUS_DST_COLOR
GLuint GLuint GLsizei GLenum type
#define GL_FUNC_REVERSE_SUBTRACT
#define GL_SAMPLE_ALPHA_TO_COVERAGE
#define GL_ONE_MINUS_SRC_ALPHA
GLAPI void GLAPIENTRY glBlendEquation(GLenum mode)
GLdouble GLdouble GLdouble r
#define GL_ONE_MINUS_SRC_COLOR
#define GL_UNIFORM_BUFFER
GLenum GLenum GLenum GLenum GLenum scale
#define GL_CONSTANT_COLOR_EXT
#define GL_ONE_MINUS_CONSTANT_COLOR_EXT
#define GL_FRAMEBUFFER_SRGB
GLenum GLuint GLint GLenum face
GLboolean GLboolean GLboolean b
#define GL_ONE_MINUS_SRC1_COLOR
#define GL_STENCIL_TEST_TWO_SIDE_EXT
#define GL_TRANSFORM_FEEDBACK_BUFFER
#define GL_ONE_MINUS_SRC1_ALPHA
#define GL_ELEMENT_ARRAY_BUFFER
#define GL_MULTISAMPLE_ARB
#define GL_DEPTH_BOUNDS_TEST_EXT
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint factor
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum GLint const GLfloat GLenum GLint const GLushort GLint GLint GLsizei GLsizei GLenum GLsizei GLsizei GLenum GLenum const GLvoid GLenum plane
struct task_struct * current
static const char * dst_format
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
static void stream_info(IStream *stream, HGLOBAL *hmem, int *size, int *pos)
static float(__cdecl *square_half_float)(float x
static struct __wine_debug_functions funcs
const struct wined3d_gl_info * gl_info
struct fragment_caps ffp_fragment_caps
const struct wined3d_state_entry_template * states
BOOL supported[WINED3D_GL_EXT_COUNT]
struct opengl_funcs gl_ops
struct wined3d_gl_limits limits
@ WINED3D_BLEND_OP_SUBTRACT
@ WINED3D_BLEND_OP_REVSUBTRACT
@ WINED3D_RS_DITHERENABLE
@ WINED3D_RS_CLIPPLANEENABLE
@ WINED3D_RS_MULTISAMPLEANTIALIAS
#define WINED3DCOLORWRITEENABLE_RED
#define WINED3DCOLORWRITEENABLE_BLUE
#define WINED3D_MAX_VIEWPORTS
#define WINED3D_MAX_RENDER_TARGETS
@ WINED3D_CMP_GREATEREQUAL
@ WINED3D_BLEND_INVDESTCOLOR
@ WINED3D_BLEND_DESTCOLOR
@ WINED3D_BLEND_INVSRCALPHA
@ WINED3D_BLEND_INVSRCCOLOR
@ WINED3D_BLEND_INVDESTALPHA
@ WINED3D_BLEND_INVBLENDFACTOR
@ WINED3D_BLEND_INVSRC1COLOR
@ WINED3D_BLEND_SRC1ALPHA
@ WINED3D_BLEND_SRC1COLOR
@ WINED3D_BLEND_BOTHINVSRCALPHA
@ WINED3D_BLEND_BOTHSRCALPHA
@ WINED3D_BLEND_SRCALPHASAT
@ WINED3D_BLEND_BLENDFACTOR
@ WINED3D_BLEND_INVSRC1ALPHA
@ WINED3D_BLEND_DESTALPHA
@ WINED3D_SHADER_TYPE_HULL
@ WINED3D_SHADER_TYPE_PIXEL
@ WINED3D_SHADER_TYPE_GEOMETRY
@ WINED3D_SHADER_TYPE_DOMAIN
@ WINED3D_SHADER_TYPE_COMPUTE
@ WINED3D_SHADER_TYPE_VERTEX
#define WINED3D_LEGACY_DEPTH_BIAS
#define WINED3DCOLORWRITEENABLE_ALPHA
#define WINED3D_HIGHEST_TEXTURE_STATE
#define WINED3D_MAX_FFP_TEXTURES
@ WINED3D_STENCIL_OP_INCR
@ WINED3D_STENCIL_OP_KEEP
@ WINED3D_STENCIL_OP_REPLACE
@ WINED3D_STENCIL_OP_INVERT
@ WINED3D_STENCIL_OP_DECR_SAT
@ WINED3D_STENCIL_OP_DECR
@ WINED3D_STENCIL_OP_ZERO
@ WINED3D_STENCIL_OP_INCR_SAT
#define WINED3DCOLORWRITEENABLE_GREEN
#define WINED3D_PIXEL_CENTER_INTEGER
#define WINEHIGHEST_RENDER_STATE
@ EXT_BLEND_EQUATION_SEPARATE
@ ARB_DRAW_ELEMENTS_BASE_VERTEX
@ WINED3D_GL_BLEND_EQUATION
@ ARB_VERTEX_BUFFER_OBJECT
@ ARB_POLYGON_OFFSET_CLAMP
@ ARB_TEXTURE_MULTISAMPLE
@ EXT_BLEND_FUNC_SEPARATE
@ ARB_UNIFORM_BUFFER_OBJECT
@ WINED3D_GL_LEGACY_CONTEXT
@ ARB_SHADER_IMAGE_LOAD_STORE
#define STATE_BASEVERTEXINDEX
#define STATE_IS_GRAPHICS_CONSTANT_BUFFER(a)
#define STATE_DEPTH_STENCIL
static bool isStateDirty(const struct wined3d_context *context, unsigned int state_id)
#define STATE_STENCIL_REF
#define STATE_CONSTANT_BUFFER(a)
#define STATE_GRAPHICS_SHADER_RESOURCE_BINDING
#define STATE_STREAM_OUTPUT
#define STATE_DEPTH_BOUNDS
static void wined3d_buffer_validate_user(struct wined3d_buffer *buffer)
#define STATE_BLEND_FACTOR
static uint32_t wined3d_mask_from_size(unsigned int size)
#define STATE_SAMPLE_MASK
#define STATE_SCISSORRECT
static BOOL is_identity_fixup(struct color_fixup_desc fixup)
#define STATE_COMPUTE_SHADER_RESOURCE_BINDING
#define WINED3D_FORMAT_CAP_POSTPIXELSHADER_BLENDING
#define STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING
static BOOL needs_srgb_write(const struct wined3d_d3d_info *d3d_info, const struct wined3d_state *state, const struct wined3d_fb_state *fb)
#define WINED3D_SHADER_CONST_FFP_PROJ
#define STATE_TEXTURESTAGE(stage, num)
#define STATE_GRAPHICS_CONSTANT_BUFFER(a)
static void wined3d_viewport_get_z_range(const struct wined3d_viewport *vp, float *min_z, float *max_z)
#define STATE_INDEXBUFFER
void(* APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id)
#define STATE_FRAMEBUFFER
#define WINED3D_SHADER_CONST_VS_CLIP_PLANES
#define STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING