Module: wine Branch: master Commit: b0d2cf8e3f0d5f79d60acc0e72ffaf72fbe5fa6a URL: http://source.winehq.org/git/wine.git/?a=commit;h=b0d2cf8e3f0d5f79d60acc0e72...
Author: Józef Kucia jkucia@codeweavers.com Date: Wed May 17 15:42:34 2017 +0200
wined3d: Handle dcl_output_control_point_count instruction.
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/glsl_shader.c | 2 +- dlls/wined3d/shader.c | 7 +++++++ dlls/wined3d/wined3d_private.h | 13 +++++++------ 3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index ce96085..76ec6f7 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -10290,7 +10290,7 @@ static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TAB /* WINED3DSIH_DCL_INPUT_SIV */ shader_glsl_nop, /* WINED3DSIH_DCL_INTERFACE */ NULL, /* WINED3DSIH_DCL_OUTPUT */ shader_glsl_nop, - /* WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT */ NULL, + /* WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT */ shader_glsl_nop, /* WINED3DSIH_DCL_OUTPUT_SIV */ shader_glsl_nop, /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ shader_glsl_nop, /* WINED3DSIH_DCL_RESOURCE_RAW */ shader_glsl_nop, diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index 7ee867d..bbd6718 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1053,6 +1053,13 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st FIXME("Invalid instruction %#x for shader type %#x.\n", ins.handler_idx, shader_version.type); } + else if (ins.handler_idx == WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT) + { + if (shader_version.type == WINED3D_SHADER_TYPE_HULL) + shader->u.hs.output_vertex_count = ins.declaration.count; + else + FIXME("Invalid instruction %#x for shader type %#x.\n", ins.handler_idx, shader_version.type); + } else if (ins.handler_idx == WINED3DSIH_DCL_OUTPUT_TOPOLOGY) { if (shader_version.type == WINED3D_SHADER_TYPE_GEOMETRY) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 57c2a96..70dd8ed 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -3708,17 +3708,18 @@ struct wined3d_vertex_shader struct wined3d_shader_attribute attributes[MAX_ATTRIBS]; };
-struct wined3d_domain_shader -{ - enum wined3d_tessellator_domain tessellator_domain; -}; - struct wined3d_hull_shader { + unsigned int output_vertex_count; enum wined3d_tessellator_output_primitive tessellator_output_primitive; enum wined3d_tessellator_partitioning tessellator_partitioning; };
+struct wined3d_domain_shader +{ + enum wined3d_tessellator_domain tessellator_domain; +}; + struct wined3d_geometry_shader { enum wined3d_primitive_type input_type; @@ -3782,8 +3783,8 @@ struct wined3d_shader union { struct wined3d_vertex_shader vs; - struct wined3d_domain_shader ds; struct wined3d_hull_shader hs; + struct wined3d_domain_shader ds; struct wined3d_geometry_shader gs; struct wined3d_pixel_shader ps; struct wined3d_compute_shader cs;