[PATCH 2/5] wined3d: Explicitly pass d3d_info and gl_info to context_stream_info_from_declaration().
Henri Verbeet
hverbeet at codeweavers.com
Mon Mar 6 03:45:23 CST 2017
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/wined3d/context.c | 13 +--
dlls/wined3d/device.c | 5 +-
dlls/wined3d/wined3d_private.h | 174 +++++++++++++++++++++--------------------
3 files changed, 96 insertions(+), 96 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 784307c..c7f5c66 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -3045,12 +3045,13 @@ static BOOL fixed_get_input(BYTE usage, BYTE usage_idx, unsigned int *regnum)
}
/* Context activation is done by the caller. */
-void context_stream_info_from_declaration(struct wined3d_context *context,
- const struct wined3d_state *state, struct wined3d_stream_info *stream_info)
+void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_info,
+ const struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
+ const struct wined3d_d3d_info *d3d_info)
{
/* We need to deal with frequency data! */
struct wined3d_vertex_declaration *declaration = state->vertex_declaration;
- BOOL generic_attributes = context->d3d_info->ffp_generic_attributes;
+ BOOL generic_attributes = d3d_info->ffp_generic_attributes;
BOOL use_vshader = use_vs(state);
unsigned int i;
@@ -3142,7 +3143,7 @@ void context_stream_info_from_declaration(struct wined3d_context *context,
stream_info->elements[idx].divisor = 0;
}
- if (!context->gl_info->supported[ARB_VERTEX_ARRAY_BGRA]
+ if (!gl_info->supported[ARB_VERTEX_ARRAY_BGRA]
&& element->format->id == WINED3DFMT_B8G8R8A8_UNORM)
{
stream_info->swizzle_map |= 1u << idx;
@@ -3162,7 +3163,7 @@ static void context_update_stream_info(struct wined3d_context *context, const st
unsigned int i;
WORD map;
- context_stream_info_from_declaration(context, state, stream_info);
+ wined3d_stream_info_from_declaration(stream_info, state, gl_info, d3d_info);
stream_info->all_vbo = 1;
context->num_buffer_queries = 0;
@@ -3510,7 +3511,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context,
context_load_unordered_access_resources(context, state->shader[WINED3D_SHADER_TYPE_PIXEL],
state->unordered_access_view[WINED3D_PIPELINE_GRAPHICS]);
/* TODO: Right now the dependency on the vertex shader is necessary
- * since context_stream_info_from_declaration depends on the reg_maps of
+ * since wined3d_stream_info_from_declaration() depends on the reg_maps of
* the current VS but maybe it's possible to relax the coupling in some
* situations at least. */
if (isStateDirty(context, STATE_VDECL) || isStateDirty(context, STATE_STREAMSRC)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 6092db4..7a377f4 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3080,7 +3080,6 @@ HRESULT CDECL wined3d_device_process_vertices(struct wined3d_device *device,
struct wined3d_state *state = &device->state;
struct wined3d_stream_info stream_info;
struct wined3d_resource *resource;
- struct wined3d_context *context;
struct wined3d_box box = {0};
struct wined3d_shader *vs;
unsigned int i;
@@ -3097,9 +3096,7 @@ HRESULT CDECL wined3d_device_process_vertices(struct wined3d_device *device,
vs = state->shader[WINED3D_SHADER_TYPE_VERTEX];
state->shader[WINED3D_SHADER_TYPE_VERTEX] = NULL;
- context = context_acquire(device, NULL, 0);
- context_stream_info_from_declaration(context, state, &stream_info);
- context_release(context);
+ wined3d_stream_info_from_declaration(&stream_info, state, &device->adapter->gl_info, &device->adapter->d3d_info);
state->shader[WINED3D_SHADER_TYPE_VERTEX] = vs;
/* We can't convert FROM a VBO, and vertex buffers used to source into
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d329f11..8d589e5 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -72,6 +72,49 @@
#define WINED3D_QUIRK_LIMITED_TEX_FILTERING 0x00000100
#define WINED3D_QUIRK_BROKEN_ARB_FOG 0x00000200
+enum wined3d_ffp_idx
+{
+ WINED3D_FFP_POSITION = 0,
+ WINED3D_FFP_BLENDWEIGHT = 1,
+ WINED3D_FFP_BLENDINDICES = 2,
+ WINED3D_FFP_NORMAL = 3,
+ WINED3D_FFP_PSIZE = 4,
+ WINED3D_FFP_DIFFUSE = 5,
+ WINED3D_FFP_SPECULAR = 6,
+ WINED3D_FFP_TEXCOORD0 = 7,
+ WINED3D_FFP_TEXCOORD1 = 8,
+ WINED3D_FFP_TEXCOORD2 = 9,
+ WINED3D_FFP_TEXCOORD3 = 10,
+ WINED3D_FFP_TEXCOORD4 = 11,
+ WINED3D_FFP_TEXCOORD5 = 12,
+ WINED3D_FFP_TEXCOORD6 = 13,
+ WINED3D_FFP_TEXCOORD7 = 14,
+ WINED3D_FFP_ATTRIBS_COUNT = 15,
+};
+
+enum wined3d_ffp_emit_idx
+{
+ WINED3D_FFP_EMIT_FLOAT1,
+ WINED3D_FFP_EMIT_FLOAT2,
+ WINED3D_FFP_EMIT_FLOAT3,
+ WINED3D_FFP_EMIT_FLOAT4,
+ WINED3D_FFP_EMIT_D3DCOLOR,
+ WINED3D_FFP_EMIT_UBYTE4,
+ WINED3D_FFP_EMIT_SHORT2,
+ WINED3D_FFP_EMIT_SHORT4,
+ WINED3D_FFP_EMIT_UBYTE4N,
+ WINED3D_FFP_EMIT_SHORT2N,
+ WINED3D_FFP_EMIT_SHORT4N,
+ WINED3D_FFP_EMIT_USHORT2N,
+ WINED3D_FFP_EMIT_USHORT4N,
+ WINED3D_FFP_EMIT_UDEC3,
+ WINED3D_FFP_EMIT_DEC3N,
+ WINED3D_FFP_EMIT_FLOAT16_2,
+ WINED3D_FFP_EMIT_FLOAT16_4,
+ WINED3D_FFP_EMIT_INVALID,
+ WINED3D_FFP_EMIT_COUNT,
+};
+
/* Texture format fixups */
enum fixup_channel_source
@@ -110,6 +153,47 @@ struct color_fixup_desc
};
#include <poppack.h>
+struct wined3d_d3d_limits
+{
+ unsigned int vs_version, hs_version, ds_version, gs_version, ps_version, cs_version;
+ DWORD vs_uniform_count;
+ DWORD ps_uniform_count;
+ unsigned int varying_count;
+ unsigned int ffp_textures;
+ unsigned int ffp_blend_stages;
+ unsigned int ffp_vertex_blend_matrices;
+ unsigned int active_light_count;
+};
+
+typedef void (WINE_GLAPI *wined3d_ffp_attrib_func)(const void *data);
+typedef void (WINE_GLAPI *wined3d_ffp_texcoord_func)(GLenum unit, const void *data);
+typedef void (WINE_GLAPI *wined3d_generic_attrib_func)(GLuint idx, const void *data);
+extern wined3d_ffp_attrib_func specular_func_3ubv DECLSPEC_HIDDEN;
+
+struct wined3d_ffp_attrib_ops
+{
+ wined3d_ffp_attrib_func position[WINED3D_FFP_EMIT_COUNT];
+ wined3d_ffp_attrib_func diffuse[WINED3D_FFP_EMIT_COUNT];
+ wined3d_ffp_attrib_func specular[WINED3D_FFP_EMIT_COUNT];
+ wined3d_ffp_attrib_func normal[WINED3D_FFP_EMIT_COUNT];
+ wined3d_ffp_texcoord_func texcoord[WINED3D_FFP_EMIT_COUNT];
+ wined3d_generic_attrib_func generic[WINED3D_FFP_EMIT_COUNT];
+};
+
+struct wined3d_d3d_info
+{
+ struct wined3d_d3d_limits limits;
+ struct wined3d_ffp_attrib_ops ffp_attrib_ops;
+ BOOL xyzrhw;
+ BOOL emulated_flatshading;
+ BOOL ffp_generic_attributes;
+ BOOL vs_clipping;
+ BOOL shader_color_key;
+ DWORD valid_rt_mask;
+ DWORD wined3d_creation_flags;
+ BOOL shader_double_precision;
+};
+
static const struct color_fixup_desc COLOR_FIXUP_IDENTITY =
{0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_Z, 0, CHANNEL_SOURCE_W};
@@ -1288,49 +1372,6 @@ do { \
#define checkGLcall(A) do {} while(0)
#endif
-enum wined3d_ffp_idx
-{
- WINED3D_FFP_POSITION = 0,
- WINED3D_FFP_BLENDWEIGHT = 1,
- WINED3D_FFP_BLENDINDICES = 2,
- WINED3D_FFP_NORMAL = 3,
- WINED3D_FFP_PSIZE = 4,
- WINED3D_FFP_DIFFUSE = 5,
- WINED3D_FFP_SPECULAR = 6,
- WINED3D_FFP_TEXCOORD0 = 7,
- WINED3D_FFP_TEXCOORD1 = 8,
- WINED3D_FFP_TEXCOORD2 = 9,
- WINED3D_FFP_TEXCOORD3 = 10,
- WINED3D_FFP_TEXCOORD4 = 11,
- WINED3D_FFP_TEXCOORD5 = 12,
- WINED3D_FFP_TEXCOORD6 = 13,
- WINED3D_FFP_TEXCOORD7 = 14,
- WINED3D_FFP_ATTRIBS_COUNT = 15,
-};
-
-enum wined3d_ffp_emit_idx
-{
- WINED3D_FFP_EMIT_FLOAT1,
- WINED3D_FFP_EMIT_FLOAT2,
- WINED3D_FFP_EMIT_FLOAT3,
- WINED3D_FFP_EMIT_FLOAT4,
- WINED3D_FFP_EMIT_D3DCOLOR,
- WINED3D_FFP_EMIT_UBYTE4,
- WINED3D_FFP_EMIT_SHORT2,
- WINED3D_FFP_EMIT_SHORT4,
- WINED3D_FFP_EMIT_UBYTE4N,
- WINED3D_FFP_EMIT_SHORT2N,
- WINED3D_FFP_EMIT_SHORT4N,
- WINED3D_FFP_EMIT_USHORT2N,
- WINED3D_FFP_EMIT_USHORT4N,
- WINED3D_FFP_EMIT_UDEC3,
- WINED3D_FFP_EMIT_DEC3N,
- WINED3D_FFP_EMIT_FLOAT16_2,
- WINED3D_FFP_EMIT_FLOAT16_4,
- WINED3D_FFP_EMIT_INVALID,
- WINED3D_FFP_EMIT_COUNT
-};
-
struct wined3d_bo_address
{
GLuint buffer_object;
@@ -1366,6 +1407,10 @@ struct wined3d_stream_info
WORD use_map; /* MAX_ATTRIBS, 16 */
};
+void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_info,
+ const struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
+ const struct wined3d_d3d_info *d3d_info) DECLSPEC_HIDDEN;
+
void draw_primitive(struct wined3d_device *device, const struct wined3d_state *state,
int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
@@ -1887,8 +1932,6 @@ void context_state_drawbuf(struct wined3d_context *context,
void context_state_fb(struct wined3d_context *context,
const struct wined3d_state *state, DWORD state_id) DECLSPEC_HIDDEN;
void context_surface_update(struct wined3d_context *context, const struct wined3d_surface *surface) DECLSPEC_HIDDEN;
-void context_stream_info_from_declaration(struct wined3d_context *context,
- const struct wined3d_state *state, struct wined3d_stream_info *stream_info) DECLSPEC_HIDDEN;
/*****************************************************************************
* Internal representation of a light
@@ -2287,47 +2330,6 @@ struct wined3d_driver_info
DWORD version_low;
};
-struct wined3d_d3d_limits
-{
- unsigned int vs_version, hs_version, ds_version, gs_version, ps_version, cs_version;
- DWORD vs_uniform_count;
- DWORD ps_uniform_count;
- UINT varying_count;
- UINT ffp_textures;
- UINT ffp_blend_stages;
- UINT ffp_vertex_blend_matrices;
- unsigned int active_light_count;
-};
-
-typedef void (WINE_GLAPI *wined3d_ffp_attrib_func)(const void *data);
-typedef void (WINE_GLAPI *wined3d_ffp_texcoord_func)(GLenum unit, const void *data);
-typedef void (WINE_GLAPI *wined3d_generic_attrib_func)(GLuint idx, const void *data);
-extern wined3d_ffp_attrib_func specular_func_3ubv DECLSPEC_HIDDEN;
-
-struct wined3d_ffp_attrib_ops
-{
- wined3d_ffp_attrib_func position[WINED3D_FFP_EMIT_COUNT];
- wined3d_ffp_attrib_func diffuse[WINED3D_FFP_EMIT_COUNT];
- wined3d_ffp_attrib_func specular[WINED3D_FFP_EMIT_COUNT];
- wined3d_ffp_attrib_func normal[WINED3D_FFP_EMIT_COUNT];
- wined3d_ffp_texcoord_func texcoord[WINED3D_FFP_EMIT_COUNT];
- wined3d_generic_attrib_func generic[WINED3D_FFP_EMIT_COUNT];
-};
-
-struct wined3d_d3d_info
-{
- struct wined3d_d3d_limits limits;
- struct wined3d_ffp_attrib_ops ffp_attrib_ops;
- BOOL xyzrhw;
- BOOL emulated_flatshading;
- BOOL ffp_generic_attributes;
- BOOL vs_clipping;
- BOOL shader_color_key;
- DWORD valid_rt_mask;
- DWORD wined3d_creation_flags;
- BOOL shader_double_precision;
-};
-
/* The adapter structure */
struct wined3d_adapter
{
--
2.1.4
More information about the wine-patches
mailing list