Get rid of the last few places in common code that read it.
From: Zebediah Figura zfigura@codeweavers.com
These two fields are always identical. --- dlls/wined3d/shader.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index 2728929045f..96b47db9ed6 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -3052,7 +3052,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3 static HRESULT pixel_shader_init(struct wined3d_shader *shader, struct wined3d_device *device, const struct wined3d_shader_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_d3d_info *d3d_info = &device->adapter->d3d_info; unsigned int i, highest_reg_used = 0, num_regs_used = 0; HRESULT hr;
@@ -3060,7 +3060,7 @@ static HRESULT pixel_shader_init(struct wined3d_shader *shader, struct wined3d_d return hr;
if (FAILED(hr = shader_set_function(shader, device, - WINED3D_SHADER_TYPE_PIXEL, device->adapter->d3d_info.limits.ps_uniform_count))) + WINED3D_SHADER_TYPE_PIXEL, d3d_info->limits.ps_uniform_count))) { shader_cleanup(shader); return hr; @@ -3077,11 +3077,11 @@ static HRESULT pixel_shader_init(struct wined3d_shader *shader, struct wined3d_d
/* Don't do any register mapping magic if it is not needed, or if we can't * achieve anything anyway */ - if (highest_reg_used < (gl_info->limits.glsl_varyings / 4) - || num_regs_used > (gl_info->limits.glsl_varyings / 4) + if (highest_reg_used < (d3d_info->limits.varying_count / 4) + || num_regs_used > (d3d_info->limits.varying_count / 4) || shader->reg_maps.shader_version.major >= 4) { - if (num_regs_used > (gl_info->limits.glsl_varyings / 4)) + if (num_regs_used > (d3d_info->limits.varying_count / 4)) { /* This happens with relative addressing. The input mapper function * warns about this if the higher registers are declared too, so
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 1 + dlls/wined3d/adapter_vk.c | 1 + dlls/wined3d/resource.c | 4 +--- dlls/wined3d/wined3d_private.h | 1 + 4 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index 8cd8a883975..e1cc1119e85 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5215,6 +5215,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->texture_npot = !!gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO]; d3d_info->texture_npot_conditional = gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT] || gl_info->supported[ARB_TEXTURE_RECTANGLE]; + d3d_info->normalized_texrect = gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT]; d3d_info->draw_base_vertex_offset = !!gl_info->supported[ARB_DRAW_ELEMENTS_BASE_VERTEX]; d3d_info->vertex_bgra = !!gl_info->supported[ARB_VERTEX_ARRAY_BGRA]; d3d_info->texture_swizzle = !!gl_info->supported[ARB_TEXTURE_SWIZZLE]; diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 3dcf2230643..bc1039e0358 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2330,6 +2330,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->viewport_array_index_any_shader = false; /* VK_EXT_shader_viewport_index_layer */ d3d_info->texture_npot = true; d3d_info->texture_npot_conditional = true; + d3d_info->normalized_texrect = false; d3d_info->draw_base_vertex_offset = true; d3d_info->vertex_bgra = true; d3d_info->texture_swizzle = true; diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c index 6d4dbb75ef6..03a755391ee 100644 --- a/dlls/wined3d/resource.c +++ b/dlls/wined3d/resource.c @@ -60,7 +60,6 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device * const struct wined3d_d3d_info *d3d_info = &device->adapter->d3d_info; enum wined3d_gl_resource_type base_type = WINED3D_GL_RES_TYPE_COUNT; enum wined3d_gl_resource_type gl_type = WINED3D_GL_RES_TYPE_COUNT; - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; BOOL tex_2d_ok = FALSE; unsigned int i;
@@ -143,8 +142,7 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device * continue; } if (((width & (width - 1)) || (height & (height - 1))) - && !d3d_info->texture_npot - && !gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT] + && !d3d_info->texture_npot && !d3d_info->normalized_texrect && gl_type == WINED3D_GL_RES_TYPE_TEX_2D) { TRACE("Skipping 2D texture type to try texture rectangle.\n"); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 6e2bdc8aaf1..a02ae956598 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -250,6 +250,7 @@ struct wined3d_d3d_info uint32_t viewport_array_index_any_shader : 1; uint32_t texture_npot : 1; uint32_t texture_npot_conditional : 1; + uint32_t normalized_texrect : 1; uint32_t draw_base_vertex_offset : 1; uint32_t vertex_bgra : 1; uint32_t texture_swizzle : 1;
From: Zebediah Figura zfigura@codeweavers.com
Read that in wined3d_swapchain_apply_sample_count_override(). --- dlls/wined3d/adapter_gl.c | 1 + dlls/wined3d/adapter_vk.c | 6 ++++++ dlls/wined3d/swapchain.c | 4 +--- dlls/wined3d/wined3d_private.h | 1 + 4 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index e1cc1119e85..d253a8d70bb 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5195,6 +5195,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->limits.max_rt_count = gl_info->limits.buffers; d3d_info->limits.max_clip_distances = gl_info->limits.user_clip_distances; d3d_info->limits.texture_size = gl_info->limits.texture_size; + d3d_info->limits.sample_count = gl_info->limits.samples;
gl_info->gl_ops.gl.p_glGetFloatv(gl_info->supported[WINED3D_GL_LEGACY_CONTEXT] ? GL_ALIASED_POINT_SIZE_RANGE : GL_POINT_SIZE_RANGE, f); diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index bc1039e0358..a27e8e41d88 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2290,6 +2290,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ struct wined3d_physical_device_info device_info; struct wined3d_vertex_caps vertex_caps; struct fragment_caps fragment_caps; + unsigned int sample_counts_mask; struct shader_caps shader_caps;
get_physical_device_info(adapter_vk, &device_info); @@ -2316,6 +2317,11 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->limits.max_clip_distances = WINED3D_MAX_CLIP_DISTANCES; d3d_info->limits.texture_size = adapter_vk->device_limits.maxImageDimension2D; d3d_info->limits.pointsize_max = adapter_vk->device_limits.pointSizeRange[1]; + sample_counts_mask = adapter_vk->device_limits.framebufferColorSampleCounts + | adapter_vk->device_limits.framebufferDepthSampleCounts + | adapter_vk->device_limits.framebufferStencilSampleCounts + | adapter_vk->device_limits.framebufferNoAttachmentsSampleCounts; + d3d_info->limits.sample_count = (1u << wined3d_log2i(sample_counts_mask));
d3d_info->wined3d_creation_flags = wined3d_creation_flags;
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index ac6f9ea6222..f8179e2a70d 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -1353,7 +1353,6 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s enum wined3d_format_id format_id, enum wined3d_multisample_type *type, unsigned int *quality) { const struct wined3d_adapter *adapter; - const struct wined3d_gl_info *gl_info; const struct wined3d_format *format; enum wined3d_multisample_type t;
@@ -1361,11 +1360,10 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s return;
adapter = swapchain->device->adapter; - gl_info = &adapter->gl_info; if (!(format = wined3d_get_format(adapter, format_id, WINED3D_BIND_RENDER_TARGET))) return;
- if ((t = min(wined3d_settings.sample_count, gl_info->limits.samples))) + if ((t = min(wined3d_settings.sample_count, adapter->d3d_info.limits.sample_count))) while (!(format->multisample_types & 1u << (t - 1))) ++t; TRACE("Using sample count %u.\n", t); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index a02ae956598..d9ac9a52b86 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -215,6 +215,7 @@ struct wined3d_d3d_limits unsigned int max_rt_count; unsigned int max_clip_distances; unsigned int texture_size; + unsigned int sample_count; float pointsize_max; };
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 36 +++++++++++++++------------- dlls/wined3d/arb_program_shader.c | 6 ++--- dlls/wined3d/buffer.c | 2 +- dlls/wined3d/context_gl.c | 4 ++-- dlls/wined3d/device.c | 2 +- dlls/wined3d/directx.c | 4 +++- dlls/wined3d/glsl_shader.c | 8 +++---- dlls/wined3d/nvidia_texture_shader.c | 2 +- dlls/wined3d/query.c | 14 +++++------ dlls/wined3d/sampler.c | 2 +- dlls/wined3d/state.c | 4 ++-- dlls/wined3d/texture.c | 2 +- dlls/wined3d/utils.c | 2 +- dlls/wined3d/view.c | 4 ++-- dlls/wined3d/wined3d_private.h | 3 ++- 15 files changed, 50 insertions(+), 45 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index d253a8d70bb..f1216ddd89b 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -304,7 +304,7 @@ static BOOL wined3d_caps_gl_ctx_create_attribs(struct wined3d_caps_gl_ctx *caps_ return TRUE; }
-static BOOL wined3d_caps_gl_ctx_create(struct wined3d_adapter *adapter, struct wined3d_caps_gl_ctx *ctx) +static BOOL wined3d_caps_gl_ctx_create(struct wined3d_adapter_gl *adapter_gl, struct wined3d_caps_gl_ctx *ctx) { PIXELFORMATDESCRIPTOR pfd; int iPixelFormat; @@ -362,7 +362,7 @@ static BOOL wined3d_caps_gl_ctx_create(struct wined3d_adapter *adapter, struct w goto fail; }
- ctx->gl_info = &adapter->gl_info; + ctx->gl_info = &adapter_gl->gl_info; return TRUE;
fail: @@ -3249,7 +3249,7 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) }
/* Context activation is done by the caller. */ -static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, +static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter_gl *adapter_gl, struct wined3d_caps_gl_ctx *caps_gl_ctx, unsigned int wined3d_creation_flags) { static const struct @@ -3394,7 +3394,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, {ARB_TEXTURE_FILTER_ANISOTROPIC, MAKEDWORD_VERSION(4, 6)}, }; const char *gl_vendor_str, *gl_renderer_str, *gl_version_str; - struct wined3d_gl_info *gl_info = &adapter->gl_info; + struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; + struct wined3d_adapter *adapter = &adapter_gl->a; unsigned int gl_version; DWORD gl_ext_emul_mask; const char *WGL_Extensions = NULL; @@ -3403,7 +3404,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, unsigned int i, j; HDC hdc;
- TRACE("adapter %p.\n", adapter); + TRACE("adapter_gl %p.\n", adapter_gl);
gl_renderer_str = (const char *)gl_info->gl_ops.gl.p_glGetString(GL_RENDERER); TRACE("GL_RENDERER: %s.\n", debugstr_a(gl_renderer_str)); @@ -4015,10 +4016,10 @@ static void WINE_GLAPI generic_float16_4(GLuint idx, const void *data) gl_info->gl_ops.ext.p_glVertexAttrib4f(idx, x, y, z, w); }
-static void wined3d_adapter_init_ffp_attrib_ops(struct wined3d_adapter *adapter) +static void wined3d_adapter_init_ffp_attrib_ops(struct wined3d_adapter_gl *adapter_gl) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; - struct wined3d_d3d_info *d3d_info = &adapter->d3d_info; + const struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; + struct wined3d_d3d_info *d3d_info = &adapter_gl->a.d3d_info; struct wined3d_ffp_attrib_ops *ops = &d3d_info->ffp_attrib_ops; unsigned int i;
@@ -4112,7 +4113,7 @@ static void wined3d_adapter_init_ffp_attrib_ops(struct wined3d_adapter *adapter)
static void wined3d_adapter_init_fb_cfgs(struct wined3d_adapter_gl *adapter_gl, HDC dc) { - const struct wined3d_gl_info *gl_info = &adapter_gl->a.gl_info; + const struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; int i;
if (gl_info->supported[WGL_ARB_PIXEL_FORMAT]) @@ -4263,7 +4264,8 @@ static HRESULT adapter_gl_create_device(struct wined3d *wined3d, const struct wi device_gl->current_fence_id = 1;
if (FAILED(hr = wined3d_device_init(&device_gl->d, wined3d, adapter->ordinal, device_type, focus_window, - flags, surface_alignment, levels, level_count, adapter->gl_info.supported, device_parent))) + flags, surface_alignment, levels, level_count, + wined3d_adapter_gl_const(adapter)->gl_info.supported, device_parent))) { WARN("Failed to initialize device, hr %#lx.\n", hr); heap_free(device_gl); @@ -4300,8 +4302,8 @@ static void adapter_gl_release_context(struct wined3d_context *context)
static void adapter_gl_get_wined3d_caps(const struct wined3d_adapter *adapter, struct wined3d_caps *caps) { + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info; const struct wined3d_d3d_info *d3d_info = &adapter->d3d_info; - const struct wined3d_gl_info *gl_info = &adapter->gl_info;
caps->ddraw_caps.dds_caps |= WINEDDSCAPS_BACKBUFFER | WINEDDSCAPS_COMPLEX @@ -4612,7 +4614,7 @@ static void adapter_gl_flush_bo_address(struct wined3d_context *context, static bool adapter_gl_alloc_bo(struct wined3d_device *device, struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_bo_address *addr) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_device_gl *device_gl = wined3d_device_gl(device); struct wined3d_bo_gl *bo_gl; GLenum binding, usage; @@ -5165,7 +5167,7 @@ static const struct wined3d_adapter_ops wined3d_adapter_gl_ops =
static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_gl, uint32_t wined3d_creation_flags) { - const struct wined3d_gl_info *gl_info = &adapter_gl->a.gl_info; + const struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; struct wined3d_d3d_info *d3d_info = &adapter_gl->a.d3d_info; struct wined3d_vertex_caps vertex_caps; struct fragment_caps fragment_caps; @@ -5295,7 +5297,7 @@ static BOOL wined3d_adapter_gl_init(struct wined3d_adapter_gl *adapter_gl, MAKEDWORD_VERSION(1, 0), }; struct wined3d_driver_info *driver_info = &adapter_gl->a.driver_info; - struct wined3d_gl_info *gl_info = &adapter_gl->a.gl_info; + struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; struct wined3d_caps_gl_ctx caps_gl_ctx = {0}; LUID primary_luid, *luid = NULL; unsigned int i; @@ -5322,7 +5324,7 @@ static BOOL wined3d_adapter_gl_init(struct wined3d_adapter_gl *adapter_gl, gl_info->p_glEnableWINE = gl_info->gl_ops.gl.p_glEnable; gl_info->p_glDisableWINE = gl_info->gl_ops.gl.p_glDisable;
- if (!wined3d_caps_gl_ctx_create(&adapter_gl->a, &caps_gl_ctx)) + if (!wined3d_caps_gl_ctx_create(adapter_gl, &caps_gl_ctx)) { ERR("Failed to get a GL context for adapter %p.\n", adapter_gl); return FALSE; @@ -5351,7 +5353,7 @@ static BOOL wined3d_adapter_gl_init(struct wined3d_adapter_gl *adapter_gl, supported_gl_versions[i] >> 16, supported_gl_versions[i] & 0xffff); }
- if (!wined3d_adapter_init_gl_caps(&adapter_gl->a, &caps_gl_ctx, wined3d_creation_flags)) + if (!wined3d_adapter_init_gl_caps(adapter_gl, &caps_gl_ctx, wined3d_creation_flags)) { ERR("Failed to initialize GL caps for adapter %p.\n", adapter_gl); wined3d_caps_gl_ctx_destroy(&caps_gl_ctx); @@ -5404,7 +5406,7 @@ static BOOL wined3d_adapter_gl_init(struct wined3d_adapter_gl *adapter_gl,
wined3d_caps_gl_ctx_destroy(&caps_gl_ctx);
- wined3d_adapter_init_ffp_attrib_ops(&adapter_gl->a); + wined3d_adapter_init_ffp_attrib_ops(adapter_gl);
return TRUE; } diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 592216051c2..221eea3c23f 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -4855,7 +4855,7 @@ static void shader_arb_init_context_state(struct wined3d_context *context) {}
static void shader_arb_get_caps(const struct wined3d_adapter *adapter, struct shader_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
if (gl_info->supported[ARB_VERTEX_PROGRAM]) { @@ -5741,7 +5741,7 @@ static void arbfp_free(struct wined3d_device *device, struct wined3d_context *co
static void arbfp_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL | WINED3D_FRAGMENT_CAP_SRGB_WRITE @@ -7949,7 +7949,7 @@ static const struct wined3d_blitter_ops arbfp_blitter_ops =
void wined3d_arbfp_blitter_create(struct wined3d_blitter **next, const struct wined3d_device *device) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_arbfp_blitter *blitter;
if (device->shader_backend != &arb_program_shader_backend diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index a3881438976..42ec9013c4d 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -1426,7 +1426,7 @@ HRESULT wined3d_buffer_gl_init(struct wined3d_buffer_gl *buffer_gl, struct wined const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info;
TRACE("buffer_gl %p, device %p, desc %p, data %p, parent %p, parent_ops %p.\n", buffer_gl, device, desc, data, parent, parent_ops); diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index a8c5160a5b3..df317b07db8 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -1940,7 +1940,7 @@ static BOOL wined3d_context_gl_create_wgl_ctx(struct wined3d_context_gl *context
device = context->device; adapter = device->adapter; - gl_info = &adapter->gl_info; + gl_info = &wined3d_adapter_gl(adapter)->gl_info;
target = &context->current_rt.texture->resource; target_bind_flags = target->bind_flags; @@ -2101,7 +2101,7 @@ HRESULT wined3d_context_gl_init(struct wined3d_context_gl *context_gl, struct wi wined3d_context_init(&context_gl->c, &swapchain_gl->s);
device = context->device; - gl_info = &device->adapter->gl_info; + gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; context_gl->gl_info = gl_info; d3d_info = context->d3d_info;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index deb6d3dc210..a20a5bfafa6 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1114,8 +1114,8 @@ static bool use_buffer_chunk_suballocation(struct wined3d_device_gl *device_gl, bool wined3d_device_gl_create_bo(struct wined3d_device_gl *device_gl, struct wined3d_context_gl *context_gl, GLsizeiptr size, GLenum binding, GLenum usage, bool coherent, GLbitfield flags, struct wined3d_bo_gl *bo) { + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device_gl->d.adapter)->gl_info; unsigned int memory_type_idx = wined3d_device_gl_find_memory_type(flags); - const struct wined3d_gl_info *gl_info = &device_gl->d.adapter->gl_info; struct wined3d_allocator_block *memory = NULL; GLsizeiptr buffer_offset = 0; GLuint id = 0; diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index b77c1f4e133..85c71ed14ba 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2856,6 +2856,8 @@ static HRESULT adapter_no3d_create_device(struct wined3d *wined3d, const struct const enum wined3d_feature_level *levels, unsigned int level_count, struct wined3d_device_parent *device_parent, struct wined3d_device **device) { + /* No extensions in the state table, only extension 0, which is implicitly supported. */ + static const BOOL supported_extensions[] = {TRUE}; struct wined3d_device_no3d *device_no3d; HRESULT hr;
@@ -2863,7 +2865,7 @@ static HRESULT adapter_no3d_create_device(struct wined3d *wined3d, const struct return E_OUTOFMEMORY;
if (FAILED(hr = wined3d_device_init(&device_no3d->d, wined3d, adapter->ordinal, device_type, focus_window, - flags, surface_alignment, levels, level_count, adapter->gl_info.supported, device_parent))) + flags, surface_alignment, levels, level_count, supported_extensions, device_parent))) { WARN("Failed to initialize device, hr %#lx.\n", hr); heap_free(device_no3d); diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 7dc0de1b596..efdf28adcbf 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11173,7 +11173,7 @@ static unsigned int shader_glsl_get_shader_model(const struct wined3d_gl_info *g
static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct shader_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info; unsigned int shader_model = shader_glsl_get_shader_model(gl_info);
TRACE("Shader model %u.\n", shader_model); @@ -11526,7 +11526,7 @@ static void glsl_vertex_pipe_vp_enable(const struct wined3d_context *context, BO
static void glsl_vertex_pipe_vp_get_caps(const struct wined3d_adapter *adapter, struct wined3d_vertex_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
caps->xyzrhw = TRUE; caps->emulated_flatshading = !needs_legacy_glsl_syntax(gl_info); @@ -12023,7 +12023,7 @@ static void glsl_fragment_pipe_enable(const struct wined3d_context *context, BOO
static void glsl_fragment_pipe_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL | WINED3D_FRAGMENT_CAP_SRGB_WRITE @@ -13287,7 +13287,7 @@ static const struct wined3d_blitter_ops glsl_blitter_ops = struct wined3d_blitter *wined3d_glsl_blitter_create(struct wined3d_blitter **next, const struct wined3d_device *device) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_glsl_blitter *blitter;
if (device->shader_backend != &glsl_shader_backend) diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index d25a314e2cb..e3d9f4fbf30 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -694,7 +694,7 @@ static void nvts_enable(const struct wined3d_context *context, BOOL enable)
static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
caps->wined3d_caps = 0; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP; diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c index 8e5f60cc7fc..6894dc050a9 100644 --- a/dlls/wined3d/query.c +++ b/dlls/wined3d/query.c @@ -388,7 +388,7 @@ static HRESULT wined3d_fence_init(struct wined3d_fence *fence, const struct wine
HRESULT wined3d_fence_create(struct wined3d_device *device, struct wined3d_fence **fence) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_fence *object; HRESULT hr;
@@ -1038,7 +1038,7 @@ static HRESULT wined3d_event_query_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_event_query *object; HRESULT hr;
@@ -1084,7 +1084,7 @@ static HRESULT wined3d_occlusion_query_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_occlusion_query *object;
TRACE("device %p, type %#x, parent %p, parent_ops %p, query %p.\n", @@ -1128,7 +1128,7 @@ static HRESULT wined3d_timestamp_query_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_timestamp_query *object;
TRACE("device %p, type %#x, parent %p, parent_ops %p, query %p.\n", @@ -1168,7 +1168,7 @@ static HRESULT wined3d_timestamp_disjoint_query_create(struct wined3d_device *de enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_query *object;
TRACE("device %p, type %#x, parent %p, parent_ops %p, query %p.\n", @@ -1224,7 +1224,7 @@ static HRESULT wined3d_so_statistics_query_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_so_statistics_query *object; unsigned int stream_idx;
@@ -1281,7 +1281,7 @@ static HRESULT wined3d_pipeline_query_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; struct wined3d_pipeline_statistics_query *object;
TRACE("device %p, type %#x, parent %p, parent_ops %p, query %p.\n", diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c index e6c226af1af..b4b169a59d4 100644 --- a/dlls/wined3d/sampler.c +++ b/dlls/wined3d/sampler.c @@ -134,7 +134,7 @@ void wined3d_sampler_gl_init(struct wined3d_sampler_gl *sampler_gl, struct wined
wined3d_sampler_init(&sampler_gl->s, device, desc, parent, parent_ops);
- if (device->adapter->gl_info.supported[ARB_SAMPLER_OBJECTS]) + if (wined3d_adapter_gl(device->adapter)->gl_info.supported[ARB_SAMPLER_OBJECTS]) wined3d_cs_init_object(device->cs, wined3d_sampler_gl_cs_init, sampler_gl); }
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 6262df2090d..26cae888345 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5109,7 +5109,7 @@ static void ffp_free(struct wined3d_device *device, struct wined3d_context *cont
static void vp_ffp_get_caps(const struct wined3d_adapter *adapter, struct wined3d_vertex_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
caps->xyzrhw = FALSE; caps->ffp_generic_attributes = FALSE; @@ -5147,7 +5147,7 @@ const struct wined3d_vertex_pipe_ops ffp_vertex_pipe =
static void ffp_fragment_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps) { - const struct wined3d_gl_info *gl_info = &adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
caps->wined3d_caps = 0; caps->PrimitiveMiscCaps = 0; diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 78b1f52221c..186110f4d12 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -4303,7 +4303,7 @@ HRESULT wined3d_texture_gl_init(struct wined3d_texture_gl *texture_gl, struct wi const struct wined3d_resource_desc *desc, unsigned int layer_count, unsigned int level_count, uint32_t flags, void *parent, const struct wined3d_parent_ops *parent_ops) { - const struct wined3d_gl_info *gl_info = &device->adapter->gl_info; + const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(device->adapter)->gl_info; HRESULT hr;
TRACE("texture_gl %p, device %p, desc %p, layer_count %u, " diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 3618490b1c7..2734a193e1f 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -4218,7 +4218,7 @@ BOOL wined3d_adapter_no3d_init_format_info(struct wined3d_adapter *adapter) /* Context activation is done by the caller. */ BOOL wined3d_adapter_gl_init_format_info(struct wined3d_adapter *adapter, struct wined3d_caps_gl_ctx *ctx) { - struct wined3d_gl_info *gl_info = &adapter->gl_info; + struct wined3d_gl_info *gl_info = &wined3d_adapter_gl(adapter)->gl_info;
if (!wined3d_adapter_init_format_info(adapter, sizeof(struct wined3d_format_gl))) return FALSE; diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index d318318d2b3..05d607649bc 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -1014,7 +1014,7 @@ static void wined3d_shader_resource_view_gl_cs_init(void *object) TRACE("view_gl %p.\n", view_gl);
view_format = view_gl->v.format; - gl_info = &resource->device->adapter->gl_info; + gl_info = &wined3d_adapter_gl(resource->device->adapter)->gl_info; desc = &view_gl->v.desc;
if (resource->type == WINED3D_RTYPE_BUFFER) @@ -1725,7 +1725,7 @@ static void wined3d_unordered_access_view_gl_cs_init(void *object)
TRACE("view_gl %p.\n", view_gl);
- gl_info = &resource->device->adapter->gl_info; + gl_info = &wined3d_adapter_gl(resource->device->adapter)->gl_info;
if (resource->type == WINED3D_RTYPE_BUFFER) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index d9ac9a52b86..dfd31673ce7 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -3158,7 +3158,6 @@ struct wined3d_adapter { unsigned int ordinal;
- struct wined3d_gl_info gl_info; struct wined3d_d3d_info d3d_info; struct wined3d_driver_info driver_info; struct wined3d_output *outputs; @@ -3193,6 +3192,8 @@ struct wined3d_adapter_gl { struct wined3d_adapter a;
+ struct wined3d_gl_info gl_info; + struct wined3d_pixel_format *pixel_formats; unsigned int pixel_format_count; };
This merge request was approved by Jan Sikorski.