[22/23] wined3d: Add cube array sampler support.
Andrew Wesie
awesie at gmail.com
Sun Nov 13 12:35:22 CST 2016
Signed-off-by: Andrew Wesie <awesie at gmail.com>
---
dlls/wined3d/directx.c | 1 +
dlls/wined3d/glsl_shader.c | 9 +++++++++
dlls/wined3d/shader.c | 4 ++++
dlls/wined3d/shader_sm4.c | 2 ++
dlls/wined3d/wined3d_gl.h | 1 +
dlls/wined3d/wined3d_private.h | 1 +
6 files changed, 18 insertions(+)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 6a4264e..6461dba 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -156,6 +156,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
{"GL_ARB_texture_compression_bptc", ARB_TEXTURE_COMPRESSION_BPTC },
{"GL_ARB_texture_compression_rgtc", ARB_TEXTURE_COMPRESSION_RGTC },
{"GL_ARB_texture_cube_map", ARB_TEXTURE_CUBE_MAP },
+ {"GL_ARB_texture_cube_map_array", ARB_TEXTURE_CUBE_MAP_ARRAY },
{"GL_ARB_texture_env_combine", ARB_TEXTURE_ENV_COMBINE },
{"GL_ARB_texture_env_dot3", ARB_TEXTURE_ENV_DOT3 },
{"GL_ARB_texture_float", ARB_TEXTURE_FLOAT },
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 7e2ff33..3d4c44a 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -2043,6 +2043,12 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
sampler_type = "sampler2DArray";
break;
+ case WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY:
+ if (shadow_sampler)
+ FIXME("Unsupported Cube array shadow sampler.\n");
+ sampler_type = "samplerCubeArray";
+ break;
+
default:
sampler_type = "unsupported_sampler";
FIXME("Unhandled resource type %#x.\n", reg_maps->resource_info[entry->resource_idx].type);
@@ -2940,6 +2946,7 @@ static void shader_glsl_get_sample_function(const struct wined3d_shader_context
{2, ""}, /* WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY */
{3, "2DArray"}, /* WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY */
{3, ""}, /* WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY */
+ {4, ""}, /* WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY */
};
enum wined3d_shader_resource_type resource_type = ctx->reg_maps->resource_info[resource_idx].type;
struct shader_glsl_ctx_priv *priv = ctx->backend_data;
@@ -5939,6 +5946,8 @@ static void shader_glsl_enable_extensions(struct wined3d_string_buffer *buffer,
shader_addline(buffer, "#extension GL_EXT_gpu_shader4 : enable\n");
if (gl_info->supported[EXT_TEXTURE_ARRAY])
shader_addline(buffer, "#extension GL_EXT_texture_array : enable\n");
+ if (gl_info->supported[ARB_TEXTURE_CUBE_MAP_ARRAY])
+ shader_addline(buffer, "#extension GL_ARB_texture_cube_map_array : enable\n");
}
/* Context activation is done by the caller. */
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 057bc13..98675f5 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -1568,6 +1568,10 @@ static void shader_dump_decl_usage(struct wined3d_string_buffer *buffer,
shader_addline(buffer, "texture2dmsarray");
break;
+ case WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY:
+ shader_addline(buffer, "texturecubearray");
+ break;
+
default:
shader_addline(buffer, "unknown");
break;
diff --git a/dlls/wined3d/shader_sm4.c b/dlls/wined3d/shader_sm4.c
index 520e3c6..6dffdf3 100644
--- a/dlls/wined3d/shader_sm4.c
+++ b/dlls/wined3d/shader_sm4.c
@@ -316,6 +316,7 @@ enum wined3d_sm4_resource_type
WINED3D_SM4_RESOURCE_TEXTURE_1DARRAY = 0x7,
WINED3D_SM4_RESOURCE_TEXTURE_2DARRAY = 0x8,
WINED3D_SM4_RESOURCE_TEXTURE_2DMSARRAY = 0x9,
+ WINED3D_SM4_RESOURCE_TEXTURE_CUBEARRAY = 0xA,
};
enum wined3d_sm4_data_type
@@ -404,6 +405,7 @@ static const enum wined3d_shader_resource_type resource_type_table[] =
/* WINED3D_SM4_RESOURCE_TEXTURE_1DARRAY */ WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY,
/* WINED3D_SM4_RESOURCE_TEXTURE_2DARRAY */ WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY,
/* WINED3D_SM4_RESOURCE_TEXTURE_2DMSARRAY */ WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY,
+ /* WINED3D_SM4_RESOURCE_TEXTURE_CUBEARRAY */ WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY,
};
static const enum wined3d_data_type data_type_table[] =
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index 6b29969..5894d4b 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -90,6 +90,7 @@ enum wined3d_gl_extension
ARB_TEXTURE_COMPRESSION_BPTC,
ARB_TEXTURE_COMPRESSION_RGTC,
ARB_TEXTURE_CUBE_MAP,
+ ARB_TEXTURE_CUBE_MAP_ARRAY,
ARB_TEXTURE_ENV_COMBINE,
ARB_TEXTURE_ENV_DOT3,
ARB_TEXTURE_FLOAT,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e501cfc..a9ee432 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -323,6 +323,7 @@ enum wined3d_shader_resource_type
WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY,
WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY,
WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY,
+ WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY,
};
#define WINED3D_SHADER_CONST_VS_F 0x00000001
--
2.7.4
More information about the wine-patches
mailing list