Module: wine Branch: master Commit: 10f0e7058525dc70966ab0e3a2d772b67410dea8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=10f0e7058525dc70966ab0e3a2...
Author: Józef Kucia jkucia@codeweavers.com Date: Tue Feb 14 13:15:09 2017 +0100
wined3d: Handle declarations for raw UAVs.
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 | 12 ++++++++++++ dlls/wined3d/wined3d_private.h | 1 + 3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index c16463b..9e752e3 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -9219,7 +9219,7 @@ static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TAB /* WINED3DSIH_DCL_TGSM_RAW */ NULL, /* WINED3DSIH_DCL_TGSM_STRUCTURED */ NULL, /* WINED3DSIH_DCL_THREAD_GROUP */ shader_glsl_nop, - /* WINED3DSIH_DCL_UAV_RAW */ NULL, + /* WINED3DSIH_DCL_UAV_RAW */ shader_glsl_nop, /* WINED3DSIH_DCL_UAV_STRUCTURED */ NULL, /* WINED3DSIH_DCL_UAV_TYPED */ shader_glsl_nop, /* WINED3DSIH_DCL_VERTICES_OUT */ shader_glsl_nop, diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index dcf77e9..dbf0430 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1045,6 +1045,18 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st ins.handler_idx, shader_version.type); } } + else if (ins.handler_idx == WINED3DSIH_DCL_UAV_RAW) + { + unsigned int reg_idx = ins.declaration.dst.reg.idx[0].offset; + if (reg_idx >= ARRAY_SIZE(reg_maps->uav_resource_info)) + { + ERR("Invalid UAV resource index %u.\n", reg_idx); + break; + } + reg_maps->uav_resource_info[reg_idx].type = WINED3D_SHADER_RESOURCE_BUFFER; + reg_maps->uav_resource_info[reg_idx].data_type = WINED3D_DATA_UINT; + reg_maps->uav_resource_info[reg_idx].flags = WINED3D_VIEW_BUFFER_RAW; + } else if (ins.handler_idx == WINED3DSIH_DCL_VERTICES_OUT) { if (shader_version.type == WINED3D_SHADER_TYPE_GEOMETRY) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 61954ab..23a8559 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -824,6 +824,7 @@ struct wined3d_shader_resource_info { enum wined3d_shader_resource_type type; enum wined3d_data_type data_type; + unsigned int flags; };
#define WINED3D_SAMPLER_DEFAULT ~0x0u