=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Add support for 2D array texture samplers.

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 19 10:32:07 CDT 2016


Module: wine
Branch: master
Commit: b9977194850bca203eb492d960f3656188627b4f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b9977194850bca203eb492d960f3656188627b4f

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu May 19 10:49:37 2016 +0200

wined3d: Add support for 2D array texture samplers.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/glsl_shader.c | 33 +++++++++++++++++++++++----------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 4e58262..c345d67 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1860,6 +1860,13 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
                 sampler_type = "samplerCube";
                 break;
 
+            case WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY:
+                if (shadow_sampler)
+                    sampler_type = "sampler2DArrayShadow";
+                else
+                    sampler_type = "sampler2DArray";
+                break;
+
             default:
                 sampler_type = "unsupported_sampler";
                 FIXME("Unhandled resource type %#x.\n", reg_maps->resource_info[entry->resource_idx].type);
@@ -2699,16 +2706,16 @@ static void shader_glsl_get_sample_function(const struct wined3d_shader_context
     }
     resource_types[] =
     {
-        {0, 0, ""},     /* WINED3D_SHADER_RESOURCE_NONE */
-        {1, 0, ""},     /* WINED3D_SHADER_RESOURCE_BUFFER */
-        {1, 1, "1D"},   /* WINED3D_SHADER_RESOURCE_TEXTURE_1D */
-        {2, 2, "2D"},   /* WINED3D_SHADER_RESOURCE_TEXTURE_2D */
-        {2, 0, ""},     /* WINED3D_SHADER_RESOURCE_TEXTURE_2DMS */
-        {3, 3, "3D"},   /* WINED3D_SHADER_RESOURCE_TEXTURE_3D */
-        {3, 0, "Cube"}, /* WINED3D_SHADER_RESOURCE_TEXTURE_CUBE */
-        {2, 1, ""},     /* WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY */
-        {3, 2, ""},     /* WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY */
-        {3, 0, ""},     /* WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY */
+        {0, 0, ""},        /* WINED3D_SHADER_RESOURCE_NONE */
+        {1, 0, ""},        /* WINED3D_SHADER_RESOURCE_BUFFER */
+        {1, 1, "1D"},      /* WINED3D_SHADER_RESOURCE_TEXTURE_1D */
+        {2, 2, "2D"},      /* WINED3D_SHADER_RESOURCE_TEXTURE_2D */
+        {2, 0, ""},        /* WINED3D_SHADER_RESOURCE_TEXTURE_2DMS */
+        {3, 3, "3D"},      /* WINED3D_SHADER_RESOURCE_TEXTURE_3D */
+        {3, 0, "Cube"},    /* WINED3D_SHADER_RESOURCE_TEXTURE_CUBE */
+        {2, 1, ""},        /* WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY */
+        {3, 2, "2DArray"}, /* WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY */
+        {3, 0, ""},        /* WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY */
     };
     struct shader_glsl_ctx_priv *priv = ctx->backend_data;
     enum wined3d_shader_resource_type resource_type = ctx->reg_maps->resource_info[resource_idx].type;
@@ -5492,6 +5499,8 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
         shader_addline(buffer, "#extension GL_ARB_uniform_buffer_object : enable\n");
     if (gl_info->supported[EXT_GPU_SHADER4])
         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");
 
     /* Base Declarations */
     shader_generate_glsl_declarations(context, buffer, shader, reg_maps, &priv_ctx);
@@ -5581,6 +5590,8 @@ static GLuint shader_glsl_generate_vshader(const struct wined3d_context *context
         shader_addline(buffer, "#extension GL_ARB_uniform_buffer_object : enable\n");
     if (gl_info->supported[EXT_GPU_SHADER4])
         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");
 
     memset(&priv_ctx, 0, sizeof(priv_ctx));
     priv_ctx.cur_vs_args = args;
@@ -5668,6 +5679,8 @@ static GLuint shader_glsl_generate_geometry_shader(const struct wined3d_context
         shader_addline(buffer, "#extension GL_ARB_uniform_buffer_object : enable\n");
     if (gl_info->supported[EXT_GPU_SHADER4])
         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");
 
     memset(&priv_ctx, 0, sizeof(priv_ctx));
     priv_ctx.string_buffers = string_buffers;




More information about the wine-cvs mailing list