From: Andrew Wesie Subject: [22/23] wined3d: Add cube array sampler support. Message-Id: <1479062123-21238-23-git-send-email-awesie@gmail.com> Date: Sun, 13 Nov 2016 12:35:22 -0600 In-Reply-To: <1479062123-21238-1-git-send-email-awesie@gmail.com> References: <1479062123-21238-1-git-send-email-awesie@gmail.com> Signed-off-by: Andrew Wesie --- 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