mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader: Move vkd3d_siv_from_sysval_indexed() to hlsl_codegen.c.
This commit is contained in:
Notes:
Henri Verbeet
2025-06-02 21:01:05 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1522
@@ -9947,6 +9947,57 @@ static void sm1_generate_ctab(struct hlsl_ctx *ctx, struct vkd3d_shader_code *ct
|
|||||||
ctab->size = buffer.size;
|
ctab->size = buffer.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d_shader_sysval_semantic sysval,
|
||||||
|
unsigned int index)
|
||||||
|
{
|
||||||
|
switch (sysval)
|
||||||
|
{
|
||||||
|
case VKD3D_SHADER_SV_COVERAGE:
|
||||||
|
case VKD3D_SHADER_SV_DEPTH:
|
||||||
|
case VKD3D_SHADER_SV_DEPTH_GREATER_EQUAL:
|
||||||
|
case VKD3D_SHADER_SV_DEPTH_LESS_EQUAL:
|
||||||
|
case VKD3D_SHADER_SV_NONE:
|
||||||
|
case VKD3D_SHADER_SV_STENCIL_REF:
|
||||||
|
case VKD3D_SHADER_SV_TARGET:
|
||||||
|
return VKD3D_SIV_NONE;
|
||||||
|
case VKD3D_SHADER_SV_POSITION:
|
||||||
|
return VKD3D_SIV_POSITION;
|
||||||
|
case VKD3D_SHADER_SV_CLIP_DISTANCE:
|
||||||
|
return VKD3D_SIV_CLIP_DISTANCE;
|
||||||
|
case VKD3D_SHADER_SV_CULL_DISTANCE:
|
||||||
|
return VKD3D_SIV_CULL_DISTANCE;
|
||||||
|
case VKD3D_SHADER_SV_INSTANCE_ID:
|
||||||
|
return VKD3D_SIV_INSTANCE_ID;
|
||||||
|
case VKD3D_SHADER_SV_IS_FRONT_FACE:
|
||||||
|
return VKD3D_SIV_IS_FRONT_FACE;
|
||||||
|
case VKD3D_SHADER_SV_PRIMITIVE_ID:
|
||||||
|
return VKD3D_SIV_PRIMITIVE_ID;
|
||||||
|
case VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX:
|
||||||
|
return VKD3D_SIV_RENDER_TARGET_ARRAY_INDEX;
|
||||||
|
case VKD3D_SHADER_SV_SAMPLE_INDEX:
|
||||||
|
return VKD3D_SIV_SAMPLE_INDEX;
|
||||||
|
case VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE:
|
||||||
|
return VKD3D_SIV_QUAD_U0_TESS_FACTOR + index;
|
||||||
|
case VKD3D_SHADER_SV_TESS_FACTOR_QUADINT:
|
||||||
|
return VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR + index;
|
||||||
|
case VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE:
|
||||||
|
return VKD3D_SIV_TRIANGLE_U_TESS_FACTOR + index;
|
||||||
|
case VKD3D_SHADER_SV_TESS_FACTOR_TRIINT:
|
||||||
|
return VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR;
|
||||||
|
case VKD3D_SHADER_SV_TESS_FACTOR_LINEDET:
|
||||||
|
return VKD3D_SIV_LINE_DETAIL_TESS_FACTOR;
|
||||||
|
case VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN:
|
||||||
|
return VKD3D_SIV_LINE_DENSITY_TESS_FACTOR;
|
||||||
|
case VKD3D_SHADER_SV_VERTEX_ID:
|
||||||
|
return VKD3D_SIV_VERTEX_ID;
|
||||||
|
case VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX:
|
||||||
|
return VKD3D_SIV_VIEWPORT_ARRAY_INDEX;
|
||||||
|
default:
|
||||||
|
FIXME("Unhandled sysval %#x, index %u.\n", sysval, index);
|
||||||
|
return VKD3D_SIV_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void sm4_generate_vsir_instr_dcl_semantic(struct hlsl_ctx *ctx, struct vsir_program *program,
|
static void sm4_generate_vsir_instr_dcl_semantic(struct hlsl_ctx *ctx, struct vsir_program *program,
|
||||||
const struct hlsl_ir_var *var, struct hlsl_block *block, const struct vkd3d_shader_location *loc)
|
const struct hlsl_ir_var *var, struct hlsl_block *block, const struct vkd3d_shader_location *loc)
|
||||||
{
|
{
|
||||||
|
@@ -847,57 +847,6 @@ static void vkd3d_spirv_dump(const struct vkd3d_shader_code *spirv, enum vkd3d_s
|
|||||||
vkd3d_shader_message_context_cleanup(&message_context);
|
vkd3d_shader_message_context_cleanup(&message_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d_shader_sysval_semantic sysval,
|
|
||||||
unsigned int index)
|
|
||||||
{
|
|
||||||
switch (sysval)
|
|
||||||
{
|
|
||||||
case VKD3D_SHADER_SV_COVERAGE:
|
|
||||||
case VKD3D_SHADER_SV_DEPTH:
|
|
||||||
case VKD3D_SHADER_SV_DEPTH_GREATER_EQUAL:
|
|
||||||
case VKD3D_SHADER_SV_DEPTH_LESS_EQUAL:
|
|
||||||
case VKD3D_SHADER_SV_NONE:
|
|
||||||
case VKD3D_SHADER_SV_STENCIL_REF:
|
|
||||||
case VKD3D_SHADER_SV_TARGET:
|
|
||||||
return VKD3D_SIV_NONE;
|
|
||||||
case VKD3D_SHADER_SV_POSITION:
|
|
||||||
return VKD3D_SIV_POSITION;
|
|
||||||
case VKD3D_SHADER_SV_CLIP_DISTANCE:
|
|
||||||
return VKD3D_SIV_CLIP_DISTANCE;
|
|
||||||
case VKD3D_SHADER_SV_CULL_DISTANCE:
|
|
||||||
return VKD3D_SIV_CULL_DISTANCE;
|
|
||||||
case VKD3D_SHADER_SV_INSTANCE_ID:
|
|
||||||
return VKD3D_SIV_INSTANCE_ID;
|
|
||||||
case VKD3D_SHADER_SV_IS_FRONT_FACE:
|
|
||||||
return VKD3D_SIV_IS_FRONT_FACE;
|
|
||||||
case VKD3D_SHADER_SV_PRIMITIVE_ID:
|
|
||||||
return VKD3D_SIV_PRIMITIVE_ID;
|
|
||||||
case VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX:
|
|
||||||
return VKD3D_SIV_RENDER_TARGET_ARRAY_INDEX;
|
|
||||||
case VKD3D_SHADER_SV_SAMPLE_INDEX:
|
|
||||||
return VKD3D_SIV_SAMPLE_INDEX;
|
|
||||||
case VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE:
|
|
||||||
return VKD3D_SIV_QUAD_U0_TESS_FACTOR + index;
|
|
||||||
case VKD3D_SHADER_SV_TESS_FACTOR_QUADINT:
|
|
||||||
return VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR + index;
|
|
||||||
case VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE:
|
|
||||||
return VKD3D_SIV_TRIANGLE_U_TESS_FACTOR + index;
|
|
||||||
case VKD3D_SHADER_SV_TESS_FACTOR_TRIINT:
|
|
||||||
return VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR;
|
|
||||||
case VKD3D_SHADER_SV_TESS_FACTOR_LINEDET:
|
|
||||||
return VKD3D_SIV_LINE_DETAIL_TESS_FACTOR;
|
|
||||||
case VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN:
|
|
||||||
return VKD3D_SIV_LINE_DENSITY_TESS_FACTOR;
|
|
||||||
case VKD3D_SHADER_SV_VERTEX_ID:
|
|
||||||
return VKD3D_SIV_VERTEX_ID;
|
|
||||||
case VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX:
|
|
||||||
return VKD3D_SIV_VIEWPORT_ARRAY_INDEX;
|
|
||||||
default:
|
|
||||||
FIXME("Unhandled sysval %#x, index %u.\n", sysval, index);
|
|
||||||
return VKD3D_SIV_NONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct vkd3d_spirv_stream
|
struct vkd3d_spirv_stream
|
||||||
{
|
{
|
||||||
uint32_t *words;
|
uint32_t *words;
|
||||||
|
@@ -1781,14 +1781,6 @@ static inline bool component_type_is_64_bit(enum vkd3d_shader_component_type com
|
|||||||
return component_type == VKD3D_SHADER_COMPONENT_DOUBLE || component_type == VKD3D_SHADER_COMPONENT_UINT64;
|
return component_type == VKD3D_SHADER_COMPONENT_DOUBLE || component_type == VKD3D_SHADER_COMPONENT_UINT64;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d_shader_sysval_semantic sysval,
|
|
||||||
unsigned int index);
|
|
||||||
|
|
||||||
static inline enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval(enum vkd3d_shader_sysval_semantic sysval)
|
|
||||||
{
|
|
||||||
return vkd3d_siv_from_sysval_indexed(sysval, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned int vsir_write_mask_get_component_idx(uint32_t write_mask)
|
static inline unsigned int vsir_write_mask_get_component_idx(uint32_t write_mask)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
Reference in New Issue
Block a user