Rebase against fb4d36c66131d1c45ebdcb5d56151e8f7782ebd1.

This commit is contained in:
Alistair Leslie-Hughes
2023-07-12 08:54:04 +10:00
parent e5cf862a14
commit a88d536fba
5 changed files with 97 additions and 97 deletions

View File

@@ -1,4 +1,4 @@
From 4c505cb4e69ee0d1b44a115e7d1ce5d03e546283 Mon Sep 17 00:00:00 2001
From e7fcc9144f7244b87d44062263791350290f39b8 Mon Sep 17 00:00:00 2001
From: Andrew Wesie <awesie@gmail.com>
Date: Tue, 2 Oct 2018 23:28:01 -0500
Subject: [PATCH] wined3d: Use bindless textures for GLSL shaders.
@@ -19,7 +19,7 @@ Signed-off-by: Andrew Wesie <awesie@gmail.com>
10 files changed, 261 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 521e3a044bc..9c3c430194b 100644
index 4d55655e7bf..938fd4b4f02 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -56,6 +56,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
@@ -30,7 +30,7 @@ index 521e3a044bc..9c3c430194b 100644
{"GL_ARB_blend_func_extended", ARB_BLEND_FUNC_EXTENDED },
{"GL_ARB_buffer_storage", ARB_BUFFER_STORAGE },
{"GL_ARB_clear_buffer_object", ARB_CLEAR_BUFFER_OBJECT },
@@ -2120,6 +2121,11 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
@@ -2121,6 +2122,11 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
/* GL_ARB_base_instance */
USE_GL_FUNC(glDrawArraysInstancedBaseInstance)
USE_GL_FUNC(glDrawElementsInstancedBaseVertexBaseInstance)
@@ -43,10 +43,10 @@ index 521e3a044bc..9c3c430194b 100644
USE_GL_FUNC(glBindFragDataLocationIndexed)
USE_GL_FUNC(glGetFragDataIndex)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index db70a9853d4..82240b65019 100644
index 592216051c2..64782f7c286 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -5639,6 +5639,12 @@ static BOOL shader_arb_has_ffp_proj_control(void *shader_priv)
@@ -5631,6 +5631,12 @@ static BOOL shader_arb_has_ffp_proj_control(void *shader_priv)
return priv->ffp_proj_control;
}
@@ -59,7 +59,7 @@ index db70a9853d4..82240b65019 100644
static void shader_arb_precompile(void *shader_priv, struct wined3d_shader *shader) {}
static uint64_t shader_arb_shader_compile(struct wined3d_context *context, const struct wined3d_shader_desc *shader_desc,
@@ -5667,6 +5673,7 @@ const struct wined3d_shader_backend_ops arb_program_shader_backend =
@@ -5659,6 +5665,7 @@ const struct wined3d_shader_backend_ops arb_program_shader_backend =
shader_arb_get_caps,
shader_arb_color_fixup_supported,
shader_arb_has_ffp_proj_control,
@@ -68,10 +68,10 @@ index db70a9853d4..82240b65019 100644
};
diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c
index af46cd9dfd7..14a2e52bee8 100644
index a8c5160a5b3..3cf56c321d1 100644
--- a/dlls/wined3d/context_gl.c
+++ b/dlls/wined3d/context_gl.c
@@ -3986,6 +3986,12 @@ static void wined3d_context_gl_bind_shader_resources(struct wined3d_context_gl *
@@ -4006,6 +4006,12 @@ static void wined3d_context_gl_bind_shader_resources(struct wined3d_context_gl *
if (!(shader = state->shader[shader_type]))
return;
@@ -85,7 +85,7 @@ index af46cd9dfd7..14a2e52bee8 100644
&shader->reg_maps.shader_version, &base, &count);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 909b3f7961c..138e35883d7 100644
index ca3f9394342..d31dc4d9ff9 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -578,6 +578,59 @@ void wined3d_device_destroy_default_samplers(struct wined3d_device *device)
@@ -148,7 +148,7 @@ index 909b3f7961c..138e35883d7 100644
static bool wined3d_null_image_vk_init(struct wined3d_image_vk *image, struct wined3d_context_vk *context_vk,
VkCommandBuffer vk_command_buffer, VkImageType type, unsigned int layer_count, unsigned int sample_count)
{
@@ -1283,6 +1336,7 @@ void wined3d_device_gl_create_primary_opengl_context_cs(void *object)
@@ -1288,6 +1341,7 @@ void wined3d_device_gl_create_primary_opengl_context_cs(void *object)
wined3d_device_gl_create_dummy_textures(device_gl, context_gl);
wined3d_device_create_default_samplers(device, context);
@@ -157,10 +157,10 @@ index 909b3f7961c..138e35883d7 100644
}
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index abbbf407f33..d0be8f975db 100644
index 5d878857ae8..dc50dc1858c 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -744,6 +744,113 @@ static void shader_glsl_append_sampler_binding_qualifier(struct wined3d_string_b
@@ -742,6 +742,113 @@ static void shader_glsl_append_sampler_binding_qualifier(struct wined3d_string_b
ERR("Unmapped sampler %u.\n", sampler_idx);
}
@@ -274,7 +274,7 @@ index abbbf407f33..d0be8f975db 100644
/* Context activation is done by the caller. */
static void shader_glsl_load_samplers(const struct wined3d_context *context,
struct shader_glsl_priv *priv, GLuint program_id, const struct wined3d_shader_reg_maps *reg_maps)
@@ -2551,7 +2658,9 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
@@ -2549,7 +2656,9 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
break;
}
@@ -285,7 +285,7 @@ index abbbf407f33..d0be8f975db 100644
shader_glsl_append_sampler_binding_qualifier(buffer, &context_gl->c, version, entry->bind_idx);
shader_addline(buffer, "uniform %s%s %s_sampler%u;\n",
sampler_type_prefix, sampler_type, prefix, entry->bind_idx);
@@ -7652,6 +7761,8 @@ static void shader_glsl_generate_colour_key_test(struct wined3d_string_buffer *b
@@ -7631,6 +7740,8 @@ static void shader_glsl_generate_colour_key_test(struct wined3d_string_buffer *b
static void shader_glsl_enable_extensions(struct wined3d_string_buffer *buffer,
const struct wined3d_gl_info *gl_info)
{
@@ -294,7 +294,7 @@ index abbbf407f33..d0be8f975db 100644
if (gl_info->supported[ARB_CULL_DISTANCE])
shader_addline(buffer, "#extension GL_ARB_cull_distance : enable\n");
if (gl_info->supported[ARB_GPU_SHADER5])
@@ -11792,6 +11903,7 @@ const struct wined3d_shader_backend_ops glsl_shader_backend =
@@ -11771,6 +11882,7 @@ const struct wined3d_shader_backend_ops glsl_shader_backend =
shader_glsl_get_caps,
shader_glsl_color_fixup_supported,
shader_glsl_has_ffp_proj_control,
@@ -303,10 +303,10 @@ index abbbf407f33..d0be8f975db 100644
};
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 68f9fe4cb90..132a1213518 100644
index 3d60af16359..2d3614f67d5 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -3292,6 +3292,12 @@ static BOOL shader_none_has_ffp_proj_control(void *shader_priv)
@@ -2047,6 +2047,12 @@ static BOOL shader_none_has_ffp_proj_control(void *shader_priv)
return priv->ffp_proj_control;
}
@@ -319,7 +319,7 @@ index 68f9fe4cb90..132a1213518 100644
static uint64_t shader_none_shader_compile(struct wined3d_context *context, const struct wined3d_shader_desc *shader_desc,
enum wined3d_shader_type shader_type)
{
@@ -3317,6 +3323,7 @@ const struct wined3d_shader_backend_ops none_shader_backend =
@@ -2072,6 +2078,7 @@ const struct wined3d_shader_backend_ops none_shader_backend =
shader_none_get_caps,
shader_none_color_fixup_supported,
shader_none_has_ffp_proj_control,
@@ -328,7 +328,7 @@ index 68f9fe4cb90..132a1213518 100644
};
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index ae188ba4290..684d355bf8f 100644
index 32923349c6b..d422d6027cd 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -1258,7 +1258,7 @@ void wined3d_gl_texture_swizzle_from_color_fixup(GLint swizzle[4], struct color_
@@ -378,10 +378,10 @@ index ae188ba4290..684d355bf8f 100644
/* Context activation is done by the caller. */
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index 65d7bd67ada..90df50e2e7f 100644
index a95ff13410f..eedcf94377d 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -1248,6 +1248,36 @@ void wined3d_shader_resource_view_gl_bind(struct wined3d_shader_resource_view_gl
@@ -1259,6 +1259,36 @@ void wined3d_shader_resource_view_gl_bind(struct wined3d_shader_resource_view_gl
wined3d_sampler_gl_bind(sampler_gl, unit, texture_gl, context_gl);
}
@@ -431,18 +431,18 @@ index 75c4cd732ab..ccc1ce2f0ff 100644
ARB_BUFFER_STORAGE,
ARB_CLEAR_BUFFER_OBJECT,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index bb6dcf78ae6..8a5ea778b3e 100644
index 07a9c7978a3..70c5b9f4e1e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -88,6 +88,7 @@ struct wined3d_adapter;
struct wined3d_buffer_vk;
@@ -114,6 +114,7 @@ struct wined3d_fragment_pipe_ops;
struct wined3d_adapter;
struct wined3d_context;
struct wined3d_context_vk;
+struct wined3d_context_gl;
struct wined3d_gl_info;
struct wined3d_state;
struct wined3d_swapchain_gl;
@@ -1612,6 +1613,8 @@ struct wined3d_shader_backend_ops
@@ -1610,6 +1611,8 @@ struct wined3d_shader_backend_ops
void (*shader_get_caps)(const struct wined3d_adapter *adapter, struct shader_caps *caps);
BOOL (*shader_color_fixup_supported)(struct color_fixup_desc fixup);
BOOL (*shader_has_ffp_proj_control)(void *shader_priv);
@@ -451,7 +451,7 @@ index bb6dcf78ae6..8a5ea778b3e 100644
uint64_t (*shader_compile)(struct wined3d_context *context, const struct wined3d_shader_desc *shader_desc,
enum wined3d_shader_type shader_type);
};
@@ -3962,6 +3965,21 @@ struct wined3d_dummy_textures
@@ -3525,6 +3528,21 @@ struct wined3d_dummy_textures
GLuint tex_2d_ms_array;
};
@@ -473,7 +473,7 @@ index bb6dcf78ae6..8a5ea778b3e 100644
#define WINED3D_UNMAPPED_STAGE ~0u
/* Multithreaded flag. Removed from the public header to signal that
@@ -4037,6 +4055,9 @@ struct wined3d_device
@@ -3600,6 +3618,9 @@ struct wined3d_device
struct wined3d_sampler *default_sampler;
struct wined3d_sampler *null_sampler;
@@ -483,7 +483,7 @@ index bb6dcf78ae6..8a5ea778b3e 100644
/* Command stream */
struct wined3d_cs *cs;
@@ -4735,6 +4756,8 @@ void wined3d_texture_download_from_texture(struct wined3d_texture *dst_texture,
@@ -4178,6 +4199,8 @@ void wined3d_texture_download_from_texture(struct wined3d_texture *dst_texture,
void wined3d_texture_get_bo_address(const struct wined3d_texture *texture,
unsigned int sub_resource_idx, struct wined3d_bo_address *data, uint32_t location) DECLSPEC_HIDDEN;
GLenum wined3d_texture_get_gl_buffer(const struct wined3d_texture *texture) DECLSPEC_HIDDEN;
@@ -492,15 +492,15 @@ index bb6dcf78ae6..8a5ea778b3e 100644
void wined3d_texture_invalidate_location(struct wined3d_texture *texture,
unsigned int sub_resource_idx, uint32_t location) DECLSPEC_HIDDEN;
void wined3d_texture_load(struct wined3d_texture *texture,
@@ -5547,6 +5570,8 @@ HRESULT wined3d_shader_resource_view_gl_init(struct wined3d_shader_resource_view
@@ -4890,6 +4913,8 @@ HRESULT wined3d_shader_resource_view_gl_init(struct wined3d_shader_resource_view
void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
void wined3d_shader_resource_view_gl_update(struct wined3d_shader_resource_view_gl *srv_gl,
struct wined3d_context_gl *context_gl) DECLSPEC_HIDDEN;
+GLuint64 wined3d_shader_resource_view_handle(struct wined3d_shader_resource_view *view,
+ struct wined3d_sampler *sampler, struct wined3d_context_gl *context_gl) DECLSPEC_HIDDEN;
struct wined3d_view_vk
struct wined3d_unordered_access_view
{
--
2.38.1
2.40.1