Module: wine Branch: master Commit: a9fdb4a0990557cb590013a40a9bf9fec37fb177 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a9fdb4a0990557cb590013a40a...
Author: Józef Kucia jkucia@codeweavers.com Date: Sun Feb 26 18:48:01 2017 +0100
wined3d: Use GL_ARB_shading_language_420pack for swizzle operations on scalars.
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/directx.c | 2 ++ dlls/wined3d/glsl_shader.c | 7 ++++++- dlls/wined3d/wined3d_gl.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 2b4fa10..fd3e8bf 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -152,6 +152,7 @@ static const struct wined3d_extension_map gl_extension_map[] = {"GL_ARB_shader_image_size", ARB_SHADER_IMAGE_SIZE }, {"GL_ARB_shader_texture_lod", ARB_SHADER_TEXTURE_LOD }, {"GL_ARB_shading_language_100", ARB_SHADING_LANGUAGE_100 }, + {"GL_ARB_shading_language_420pack", ARB_SHADING_LANGUAGE_420PACK }, {"GL_ARB_shading_language_packing", ARB_SHADING_LANGUAGE_PACKING }, {"GL_ARB_shadow", ARB_SHADOW }, {"GL_ARB_stencil_texturing", ARB_STENCIL_TEXTURING }, @@ -3717,6 +3718,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter, DWORD {ARB_INTERNALFORMAT_QUERY, MAKEDWORD_VERSION(4, 2)}, {ARB_MAP_BUFFER_ALIGNMENT, MAKEDWORD_VERSION(4, 2)}, {ARB_SHADER_IMAGE_LOAD_STORE, MAKEDWORD_VERSION(4, 2)}, + {ARB_SHADING_LANGUAGE_420PACK, MAKEDWORD_VERSION(4, 2)}, {ARB_SHADING_LANGUAGE_PACKING, MAKEDWORD_VERSION(4, 2)}, {ARB_TEXTURE_COMPRESSION_BPTC, MAKEDWORD_VERSION(4, 2)}, {ARB_TEXTURE_STORAGE, MAKEDWORD_VERSION(4, 2)}, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 26a6a06..7d7a7c6 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -2860,7 +2860,10 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * break;
case WINED3DSPR_LOCALTHREADINDEX: - sprintf(register_name, "ivec2(gl_LocalInvocationIndex, 0)"); + if (gl_info->supported[ARB_SHADING_LANGUAGE_420PACK]) + sprintf(register_name, "int(gl_LocalInvocationIndex)"); + else + sprintf(register_name, "ivec2(gl_LocalInvocationIndex, 0)"); break;
case WINED3DSPR_THREADID: @@ -6459,6 +6462,8 @@ static void shader_glsl_enable_extensions(struct wined3d_string_buffer *buffer, shader_addline(buffer, "#extension GL_ARB_shader_image_load_store : enable\n"); if (gl_info->supported[ARB_SHADER_IMAGE_SIZE]) shader_addline(buffer, "#extension GL_ARB_shader_image_size : enable\n"); + if (gl_info->supported[ARB_SHADING_LANGUAGE_420PACK]) + shader_addline(buffer, "#extension GL_ARB_shading_language_420pack : 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]) diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index e500df6..396f93f 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -85,6 +85,7 @@ enum wined3d_gl_extension ARB_SHADER_IMAGE_SIZE, ARB_SHADER_TEXTURE_LOD, ARB_SHADING_LANGUAGE_100, + ARB_SHADING_LANGUAGE_420PACK, ARB_SHADING_LANGUAGE_PACKING, ARB_SHADOW, ARB_STENCIL_TEXTURING,