From: Józef Kucia Subject: [PATCH 3/8] wined3d: Add cube array sampler support. Message-Id: <20170210112658.22068-3-jkucia@codeweavers.com> Date: Fri, 10 Feb 2017 12:26:53 +0100 In-Reply-To: <20170210112658.22068-1-jkucia@codeweavers.com> References: <20170210112658.22068-1-jkucia@codeweavers.com> From: Andrew Wesie Signed-off-by: Józef Kucia --- dlls/wined3d/directx.c | 2 ++ 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, 19 insertions(+) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index c47052c..3215a63 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -162,6 +162,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 }, @@ -3674,6 +3675,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, DWORD {ARB_VERTEX_TYPE_2_10_10_10_REV, MAKEDWORD_VERSION(3, 3)}, {ARB_GPU_SHADER5, MAKEDWORD_VERSION(4, 0)}, + {ARB_TEXTURE_CUBE_MAP_ARRAY, MAKEDWORD_VERSION(4, 0)}, {ARB_ES2_COMPATIBILITY, MAKEDWORD_VERSION(4, 1)}, {ARB_VIEWPORT_ARRAY, MAKEDWORD_VERSION(4, 1)}, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index cac8749..c16463b 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -68,6 +68,7 @@ resource_type_info[] = {2, 2, ""}, /* WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY */ {3, 3, "2DArray"}, /* WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY */ {3, 3, ""}, /* WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY */ + {4, 3, ""}, /* WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY */ }; struct glsl_dst_param @@ -2150,6 +2151,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); @@ -6273,6 +6280,8 @@ static void shader_glsl_enable_extensions(struct wined3d_string_buffer *buffer, shader_addline(buffer, "#extension GL_ARB_shader_image_size : enable\n"); if (gl_info->supported[ARB_SHADING_LANGUAGE_PACKING]) shader_addline(buffer, "#extension GL_ARB_shading_language_packing : enable\n"); + if (gl_info->supported[ARB_TEXTURE_CUBE_MAP_ARRAY]) + shader_addline(buffer, "#extension GL_ARB_texture_cube_map_array : enable\n"); if (gl_info->supported[ARB_TEXTURE_QUERY_LEVELS]) shader_addline(buffer, "#extension GL_ARB_texture_query_levels : enable\n"); if (gl_info->supported[ARB_UNIFORM_BUFFER_OBJECT]) diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index 814da17..dcf77e9 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1668,6 +1668,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 991fad7..dff463f 100644 --- a/dlls/wined3d/shader_sm4.c +++ b/dlls/wined3d/shader_sm4.c @@ -361,6 +361,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 @@ -449,6 +450,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 5f57a41..72d617e 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -95,6 +95,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 e9c1a35..ace10c6 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -322,6 +322,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.10.2