From 0994528b8063861fc93bf1ba3bec2b2f792ca9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Tue, 16 May 2017 15:00:23 +0200 Subject: [PATCH] wined3d: Handle tessellation shaders registers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/wined3d/glsl_shader.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 8b29dde8275..21057646a77 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -2704,6 +2704,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * break; case WINED3DSPR_INPUT: + case WINED3DSPR_INCONTROLPOINT: if (version->type == WINED3D_SHADER_TYPE_VERTEX) { struct shader_glsl_ctx_priv *priv = ins->ctx->backend_data; @@ -2716,7 +2717,9 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * break; } - if (version->type == WINED3D_SHADER_TYPE_GEOMETRY) + if (version->type == WINED3D_SHADER_TYPE_HULL + || version->type == WINED3D_SHADER_TYPE_DOMAIN + || version->type == WINED3D_SHADER_TYPE_GEOMETRY) { if (reg->idx[0].rel_addr) { @@ -2978,7 +2981,10 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * break; case WINED3DSPR_PRIMID: - sprintf(register_name, "uint(gl_PrimitiveIDIn)"); + if (version->type == WINED3D_SHADER_TYPE_GEOMETRY) + sprintf(register_name, "uint(gl_PrimitiveIDIn)"); + else + sprintf(register_name, "uint(gl_PrimitiveID)"); break; case WINED3DSPR_IDXTEMP: @@ -2996,6 +3002,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * break; case WINED3DSPR_GSINSTID: + case WINED3DSPR_OUTPOINTID: if (gl_info->supported[ARB_SHADING_LANGUAGE_420PACK]) sprintf(register_name, "gl_InvocationID"); else @@ -3014,6 +3021,10 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register * sprintf(register_name, "ivec3(gl_LocalInvocationID)"); break; + case WINED3DSPR_TESSCOORD: + sprintf(register_name, "gl_TessCoord"); + break; + default: FIXME("Unhandled register type %#x.\n", reg->type); sprintf(register_name, "unrecognized_register"); @@ -3167,6 +3178,7 @@ static void shader_glsl_add_src_param_ext(const struct wined3d_shader_instructio case WINED3DSPR_GSINSTID: case WINED3DSPR_LOCALTHREADID: case WINED3DSPR_LOCALTHREADINDEX: + case WINED3DSPR_OUTPOINTID: case WINED3DSPR_THREADGROUPID: case WINED3DSPR_THREADID: param_data_type = WINED3D_DATA_INT;