summarylogtreecommitdiffstats
path: root/sample_c_lz-stub.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sample_c_lz-stub.patch')
-rw-r--r--sample_c_lz-stub.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/sample_c_lz-stub.patch b/sample_c_lz-stub.patch
new file mode 100644
index 000000000000..e5482074297d
--- /dev/null
+++ b/sample_c_lz-stub.patch
@@ -0,0 +1,37 @@
+--- a/dlls/wined3d/glsl_shader.c
++++ a/dlls/wined3d/glsl_shader.c
+@@ -91,6 +91,7 @@ struct glsl_sample_function
+ enum wined3d_data_type data_type;
+ BOOL output_single_component;
+ unsigned int offset_size;
++ BOOL disable_lod;
+ };
+
+ enum heap_node_op
+@@ -3420,6 +3421,17 @@ static void shader_glsl_get_sample_function(const struct wined3d_shader_context
+ const char *base = "texture", *type_part = "", *suffix = "";
+ unsigned int coord_size, deriv_size;
+
++ if (shadow && lod && resource_type == WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY)
++ {
++ FIXME("GLSL does not support sample comparison with lod for 2D array textures.\n");
++ lod = FALSE;
++ sample_function->disable_lod = TRUE;
++ }
++ else
++ {
++ sample_function->disable_lod = FALSE;
++ }
++
+ sample_function->data_type = ctx->reg_maps->resource_info[resource_idx].data_type;
+
+ if (resource_type >= ARRAY_SIZE(resource_type_info))
+@@ -3663,7 +3675,7 @@ static void PRINTF_ATTR(9, 10) shader_glsl_gen_sample_code(const struct wined3d_
+ }
+ if (dx && dy)
+ shader_addline(ins->ctx->buffer, ", %s, %s", dx, dy);
+- else if (bias)
++ else if (bias && !sample_function->disable_lod)
+ shader_addline(ins->ctx->buffer, ", %s", bias);
+ if (sample_function->offset_size)
+ {