58#define MAX_SM1_INTER_STAGE_VARYINGS 12
131 switch (
shader->reg_maps.shader_version.type)
137 state->vertex_declaration &&
state->vertex_declaration->position_transformed,
139 args->u.fs.sample_count = sample_count;
146 if (
shader->reg_maps.shader_version.major < 4 &&
ps)
152 ERR(
"Unexpected inter-stage varying count %u.\n", ps_program->
signature_info.input.element_count);
188 parameters[3].u.buffer.binding = ffp_extra_binding;
206 args->spirv_target.next = &
args->parameter_info;
207 args->spirv_target.entry_point =
"main";
211 args->parameter_info.next = vkd3d_interface;
213 args->spirv_target.extensions =
args->extensions;
221 unsigned int rt_alpha_swizzle =
compile_args->u.fs.args.rt_alpha_swizzle;
225 args->spirv_target.dual_source_blending =
compile_args->u.fs.args.dual_source_blend;
229 if (rt_alpha_swizzle && (1u <<
i))
235 args->spirv_target.output_swizzles =
args->ps_alpha_swizzle;
242 args->spirv_target.next = &
args->varying_map;
245 args->varying_map.next = vkd3d_interface;
255 memset(iface, 0,
sizeof(*iface));
303 info.source_type = source_type;
315 FIXME(
"Shader log:\n");
328 ERR(
"Failed to compile shader, ret %d.\n",
ret);
333 shader_create_info.pNext =
NULL;
334 shader_create_info.flags = 0;
335 shader_create_info.codeSize = spirv.
size;
336 shader_create_info.pCode = spirv.
code;
360 size_t variant_count,
i;
366 if (!(program_vk =
shader->backend_data))
370 for (
i = 0;
i < variant_count; ++
i)
379 variant_count + 1,
sizeof(*program_vk->
variants)))
382 variant_vk = &program_vk->
variants[variant_count];
442 pipeline_info.
flags = 0;
445 pipeline_info.stage.
flags = 0;
447 pipeline_info.stage.pName =
"main";
448 pipeline_info.stage.pSpecializationInfo =
NULL;
449 pipeline_info.stage.module =
program->vk_module;
450 pipeline_info.layout =
program->vk_pipeline_layout;
478 binding_count + 1,
sizeof(*bindings->
vk_bindings)))
481 *binding_idx = binding_count;
483 binding->binding = binding_count;
484 binding->descriptorType = vk_type;
486 binding->stageFlags = vk_stage;
502 binding_count + 1,
sizeof(*bindings->
bindings)))
511 binding->register_index = register_idx;
512 binding->shader_visibility = vkd3d_visibility;
515 binding->binding.binding = *binding_idx;
538 counter->register_index = register_idx;
539 counter->shader_visibility = vkd3d_visibility;
541 counter->binding.binding = *binding_idx;
558 binding_count + 1,
sizeof(*bindings->
bindings)))
595 FIXME(
"Unhandled descriptor type %#x.\n",
type);
617 FIXME(
"Unhandled descriptor type %#x.\n",
type);
644 FIXME(
"Unhandled resource data type %#x.\n",
t);
667 wined3d_bindings->
count = 0;
695 if (
d->register_space)
697 WARN(
"Unsupported register space %u.\n",
d->register_space);
708 d->register_index, shader_visibility, vk_stage,
flags, &binding_idx))
721 d->register_index, shader_visibility, vk_stage, &binding_idx))
763 memset(descriptor_info, 0,
sizeof(*descriptor_info));
768 memset(signature_info, 0,
sizeof(*signature_info));
770 descriptor_info->
next = signature_info;
774 info.next = descriptor_info;
793 ERR(
"Failed to scan shader, ret %d.\n",
ret);
798 FIXME(
"Shader log:\n");
814 if (!(program_vk =
shader->backend_data))
816 if (!(program_vk =
calloc(1,
sizeof(*program_vk))))
817 ERR(
"Failed to allocate program.\n");
818 shader->backend_data = program_vk;
828 TRACE(
"shader_priv %p, shader %p.\n", shader_priv,
shader);
836 if (!(program_vk =
shader->backend_data))
838 if (!(program_vk =
calloc(1,
sizeof(*program_vk))))
839 ERR(
"Failed to allocate program.\n");
840 shader->backend_data = program_vk;
866 ERR(
"Failed to initialise shader resource bindings.\n");
910 ERR(
"Failed to initialise shader resource bindings.\n");
921 context_vk->
compute.vk_pipeline_layout =
program->vk_pipeline_layout;
950 WARN(
"Not implemented.\n");
955 WARN(
"Not implemented.\n");
973 for (
i = 0;
i <
device->context_count; ++
i)
990 context_vk->
c.shader_update_mask |= (1u <<
shader_type);
999 for (
i = 0;
i <
device->context_count; ++
i)
1028 if (!
shader->backend_data)
1037 program_vk =
shader->backend_data;
1055 void *vertex_priv, *fragment_priv;
1058 if (!(priv =
malloc(
sizeof(*priv))))
1063 ERR(
"Failed to initialise vertex pipe.\n");
1070 ERR(
"Failed to initialise fragment pipe.\n");
1080 device->vertex_priv = vertex_priv;
1081 device->fragment_priv = fragment_priv;
1082 device->shader_priv = priv;
1112 memset(caps, 0,
sizeof(*caps));
1180 memset(caps, 0,
sizeof(*caps));
1193 FIXME(
"SPIR-V vertex pipe without SPIR-V shader backend not implemented.\n");
1245 memset(caps, 0,
sizeof(*caps));
1258 FIXME(
"SPIR-V fragment pipe without SPIR-V shader backend not implemented.\n");
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
struct wined3d_pipeline_layout_vk * wined3d_context_vk_get_pipeline_layout(struct wined3d_context_vk *context_vk, VkDescriptorSetLayoutBinding *bindings, SIZE_T binding_count)
VkShaderStageFlagBits vk_shader_stage_from_wined3d(enum wined3d_shader_type shader_type)
void wined3d_context_vk_destroy_vk_pipeline(struct wined3d_context_vk *context_vk, VkPipeline vk_pipeline, uint64_t command_buffer_id)
void find_ps_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader, BOOL position_transformed, struct ps_compile_args *args, const struct wined3d_context *context)
enum vkd3d_shader_visibility vkd3d_shader_visibility_from_wined3d(enum wined3d_shader_type shader_type)
const char * wined3d_debug_vkresult(VkResult vr)
BOOL wined3d_array_reserve(void **elements, SIZE_T *capacity, SIZE_T count, SIZE_T size)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP size_t __cdecl strlen(const char *)
void state_nop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLboolean GLboolean GLboolean b
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define memcpy(s1, s2, n)
static RPC_BINDING_HANDLE binding
#define offsetof(TYPE, MEMBER)
static void spirv_vertex_pipe_vk_vp_free(struct wined3d_device *device, struct wined3d_context *context)
static struct shader_spirv_graphics_program_variant_vk * shader_spirv_find_graphics_program_variant_vk(struct shader_spirv_priv *priv, struct wined3d_context_vk *context_vk, struct wined3d_shader *shader, const struct wined3d_state *state, const struct shader_spirv_resource_bindings *bindings)
static void spirv_fragment_pipe_vk_fp_disable(const struct wined3d_context *context)
static HRESULT shader_spirv_alloc(struct wined3d_device *device, const struct wined3d_vertex_pipe_ops *vertex_pipe, const struct wined3d_fragment_pipe_ops *fragment_pipe)
static bool wined3d_shader_resource_bindings_add_binding(struct wined3d_shader_resource_bindings *bindings, enum wined3d_shader_type shader_type, enum wined3d_shader_descriptor_type shader_descriptor_type, size_t resource_idx, enum wined3d_shader_resource_type resource_type, enum wined3d_data_type resource_data_type, size_t binding_idx)
static void spirv_fragment_pipe_vk_fp_free_context_data(struct wined3d_context *context)
#define MAX_SM1_INTER_STAGE_VARYINGS
const struct wined3d_fragment_pipe_ops * wined3d_spirv_fragment_pipe_init_vk(void)
static void shader_spirv_scan_shader(struct wined3d_shader *shader, struct vkd3d_shader_scan_descriptor_info *descriptor_info, struct vkd3d_shader_scan_signature_info *signature_info)
static void shader_spirv_free(struct wined3d_device *device, struct wined3d_context *context)
static void shader_spirv_init_shader_interface_vk(struct wined3d_shader_spirv_shader_interface *iface, const struct shader_spirv_resource_bindings *b, const struct wined3d_stream_output_desc *so_desc)
static const struct wined3d_shader_backend_ops spirv_shader_backend_vk
static BOOL shader_spirv_allocate_context_data(struct wined3d_context *context)
static void spirv_vertex_pipe_vk_vp_disable(const struct wined3d_context *context)
static void spirv_fragment_pipe_vk_fp_apply_draw_state(struct wined3d_context *context, const struct wined3d_state *state)
static bool shader_spirv_resource_bindings_add_binding(struct shader_spirv_resource_bindings *bindings, enum vkd3d_shader_descriptor_type vkd3d_type, VkDescriptorType vk_type, size_t register_idx, enum vkd3d_shader_visibility vkd3d_visibility, VkShaderStageFlagBits vk_stage, uint32_t flags, size_t *binding_idx)
static void fill_ps_parameters(struct wined3d_shader_spirv_compile_args *vkd3d_args, const struct shader_spirv_compile_arguments *compile_args, uint32_t ffp_extra_binding)
static void shader_spirv_handle_instruction(const struct wined3d_shader_instruction *ins)
static void shader_spirv_invalidate_contexts_graphics_program_variant(struct wined3d_device *device, const struct shader_spirv_graphics_program_variant_vk *variant)
static void shader_spirv_precompile_compute(struct wined3d_shader *shader)
static void shader_spirv_init_compile_args(const struct wined3d_vk_info *vk_info, struct wined3d_shader_spirv_compile_args *args, struct vkd3d_shader_interface_info *vkd3d_interface, enum vkd3d_shader_spirv_environment environment, enum wined3d_shader_type shader_type, enum vkd3d_shader_source_type source_type, const struct shader_spirv_compile_arguments *compile_args, const struct shader_spirv_resource_bindings *bindings)
static void shader_spirv_apply_draw_state(void *shader_priv, struct wined3d_context *context, const struct wined3d_state *state)
static void * spirv_vertex_pipe_vk_vp_alloc(const struct wined3d_shader_backend_ops *shader_backend, void *shader_priv)
static void shader_spirv_invalidate_compute_program(struct wined3d_context_vk *context_vk, const struct shader_spirv_compute_program_vk *program)
static const struct wined3d_vertex_pipe_ops spirv_vertex_pipe_vk
static unsigned int spirv_fragment_pipe_vk_fp_get_emul_mask(const struct wined3d_adapter *adapter)
const struct wined3d_shader_backend_ops * wined3d_spirv_shader_backend_init_vk(void)
static void shader_spirv_free_context_data(struct wined3d_context *context)
static BOOL shader_spirv_color_fixup_supported(struct color_fixup_desc fixup)
static bool shader_spirv_resource_bindings_add_vk_binding(struct shader_spirv_resource_bindings *bindings, VkDescriptorType vk_type, VkShaderStageFlagBits vk_stage, size_t *binding_idx)
static VkDescriptorType vk_descriptor_type_from_vkd3d(enum vkd3d_shader_descriptor_type type, enum vkd3d_shader_resource_type resource_type)
static struct shader_spirv_compute_program_vk * shader_spirv_find_compute_program_vk(struct shader_spirv_priv *priv, struct wined3d_context_vk *context_vk, struct wined3d_shader *shader, const struct shader_spirv_resource_bindings *bindings)
static void spirv_vertex_pipe_vk_vp_get_caps(const struct wined3d_adapter *adapter, struct wined3d_vertex_caps *caps)
static VkShaderModule shader_spirv_compile_shader(struct wined3d_context_vk *context_vk, const struct wined3d_shader_desc *shader_desc, enum vkd3d_shader_source_type source_type, enum wined3d_shader_type shader_type, const struct shader_spirv_compile_arguments *args, const struct shader_spirv_resource_bindings *bindings, const struct wined3d_stream_output_desc *so_desc)
static void shader_spirv_precompile(void *shader_priv, struct wined3d_shader *shader)
static const struct wined3d_fragment_pipe_ops spirv_fragment_pipe_vk
static bool shader_spirv_resource_bindings_init(struct shader_spirv_resource_bindings *bindings, struct wined3d_shader_resource_bindings *wined3d_bindings, const struct wined3d_state *state, uint32_t shader_mask)
static void shader_spirv_init_context_state(struct wined3d_context *context)
static void spirv_fragment_pipe_vk_fp_free(struct wined3d_device *device, struct wined3d_context *context)
static void shader_spirv_update_float_vertex_constants(struct wined3d_device *device, UINT start, UINT count)
static bool shader_spirv_resource_bindings_add_uav_counter_binding(struct shader_spirv_resource_bindings *bindings, size_t register_idx, enum vkd3d_shader_visibility vkd3d_visibility, VkShaderStageFlagBits vk_stage, size_t *binding_idx)
static enum wined3d_shader_resource_type wined3d_shader_resource_type_from_vkd3d(enum vkd3d_shader_resource_type t)
static enum wined3d_data_type wined3d_data_type_from_vkd3d(enum vkd3d_shader_resource_data_type t)
static void spirv_vertex_pipe_vk_vp_apply_draw_state(struct wined3d_context *context, const struct wined3d_state *state)
static void shader_spirv_destroy(struct wined3d_shader *shader)
static void shader_spirv_apply_compute_state(void *shader_priv, struct wined3d_context *context, const struct wined3d_state *state)
static void shader_spirv_invalidate_graphics_program_variant(struct wined3d_context_vk *context_vk, const struct shader_spirv_graphics_program_variant_vk *variant)
static void * spirv_fragment_pipe_vk_fp_alloc(const struct wined3d_shader_backend_ops *shader_backend, void *shader_priv)
static BOOL spirv_fragment_pipe_vk_fp_alloc_context_data(struct wined3d_context *context)
static void shader_spirv_invalidate_contexts_compute_program(struct wined3d_device *device, const struct shader_spirv_compute_program_vk *program)
static void shader_spirv_resource_bindings_cleanup(struct shader_spirv_resource_bindings *bindings)
static const struct wined3d_state_entry_template spirv_fragment_pipe_vk_fp_states[]
static void shader_spirv_get_caps(const struct wined3d_adapter *adapter, struct shader_caps *caps)
static const struct vkd3d_shader_compile_option spirv_compile_options[]
const struct wined3d_vertex_pipe_ops * wined3d_spirv_vertex_pipe_init_vk(void)
static void shader_spirv_disable(void *shader_priv, struct wined3d_context *context)
static const struct wined3d_state_entry_template spirv_vertex_pipe_vk_vp_states[]
static enum wined3d_shader_descriptor_type wined3d_descriptor_type_from_vkd3d(enum vkd3d_shader_descriptor_type type)
static unsigned int spirv_vertex_pipe_vk_vp_get_emul_mask(const struct wined3d_adapter *adapter)
static void spirv_fragment_pipe_vk_fp_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps)
static uint64_t shader_spirv_compile(struct wined3d_context *context, const struct wined3d_shader_desc *shader_desc, enum wined3d_shader_type shader_type)
static void shader_spirv_compile_arguments_init(struct shader_spirv_compile_arguments *args, const struct wined3d_context *context, const struct wined3d_shader *shader, const struct wined3d_state *state, unsigned int sample_count)
static void shader_spirv_destroy_compute_vk(struct wined3d_shader *shader)
static void shader_spirv_update_float_pixel_constants(struct wined3d_device *device, UINT start, UINT count)
enum vkd3d_shader_spirv_environment environment
int32_t basePipelineIndex
VkPipelineCreateFlags flags
unsigned int max_blend_stages
unsigned int varying_count
unsigned int ps_uniform_count
unsigned int vs_uniform_count
struct shader_spirv_compile_arguments::@339::@340 vs
union shader_spirv_compile_arguments::@339 u
unsigned int sample_count
struct vkd3d_shader_varying_map varying_map[MAX_SM1_INTER_STAGE_VARYINGS]
unsigned int varying_count
struct shader_spirv_compile_arguments::@339::@341 fs
struct vkd3d_shader_scan_descriptor_info descriptor_info
VkDescriptorSetLayout vk_set_layout
VkPipelineLayout vk_pipeline_layout
const struct wined3d_stream_output_desc * so_desc
struct shader_spirv_compile_arguments compile_args
struct vkd3d_shader_scan_descriptor_info descriptor_info
struct vkd3d_shader_scan_signature_info signature_info
struct shader_spirv_graphics_program_variant_vk * variants
const struct wined3d_fragment_pipe_ops * fragment_pipe
struct shader_spirv_resource_bindings bindings
const struct wined3d_vertex_pipe_ops * vertex_pipe
enum wined3d_shader_type so_stage
struct vkd3d_shader_resource_binding * bindings
size_t binding_base[WINED3D_SHADER_TYPE_COUNT]
VkDescriptorSetLayoutBinding * vk_bindings
uint32_t ffp_extra_binding[2]
struct vkd3d_shader_uav_counter_binding uav_counters[MAX_UNORDERED_ACCESS_VIEWS]
enum vkd3d_shader_structure_type type
struct vkd3d_shader_descriptor_info * descriptors
enum vkd3d_shader_structure_type type
VkSampleCountFlagBits sample_count
struct wined3d_command_buffer_vk current_command_buffer
struct wined3d_context_vk::@363 compute
struct wined3d_context_vk::@362 graphics
const struct wined3d_vk_info * vk_info
struct wined3d_vk_info vk_info
struct wined3d_context_vk context_vk
VkDescriptorSetLayout vk_set_layout
VkPipelineLayout vk_pipeline_layout
enum wined3d_data_type resource_data_type
enum wined3d_shader_descriptor_type shader_descriptor_type
enum wined3d_shader_resource_type resource_type
struct wined3d_shader_resource_binding * bindings
struct vkd3d_shader_spirv_target_info spirv_target
enum vkd3d_shader_spirv_extension extensions[1]
struct vkd3d_shader_parameter_info parameter_info
unsigned int ps_alpha_swizzle[WINED3D_MAX_RENDER_TARGETS]
struct vkd3d_shader_parameter1 parameters[4]
struct vkd3d_shader_varying_map_info varying_map
struct vkd3d_shader_interface_info vkd3d_interface
struct vkd3d_shader_transform_feedback_info xfb_info
struct wined3d_pixel_shader ps
unsigned int buffer_strides[WINED3D_MAX_STREAM_OUTPUT_BUFFERS]
unsigned int element_count
const struct wined3d_stream_output_element * elements
unsigned int buffer_stride_count
BOOL emulated_flatshading
BOOL supported[WINED3D_VK_EXT_COUNT]
enum vkd3d_primitive_type vkd3d_type
static HRESULT compile_args(compile_ctx_t *ctx, expression_t *args, unsigned *ret)
@ VKD3D_SHADER_COMPILE_OPTION_API_VERSION
@ VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE
vkd3d_shader_resource_data_type
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
@ VKD3D_SHADER_RESOURCE_DATA_UINT
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
@ VKD3D_SHADER_RESOURCE_DATA_INT
VKD3D_SHADER_API const char * vkd3d_shader_get_version(unsigned int *major, unsigned int *minor)
@ VKD3D_SHADER_PARAMETER_TYPE_BUFFER
@ VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT
VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code)
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32
VKD3D_SHADER_API void vkd3d_shader_build_varying_map(const struct vkd3d_shader_signature *output_signature, const struct vkd3d_shader_signature *input_signature, unsigned int *count, struct vkd3d_shader_varying_map *varyings)
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_COUNTER
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
@ VKD3D_SHADER_SOURCE_DXBC_TPF
@ VKD3D_SHADER_LOG_WARNING
VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages)
@ VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO
vkd3d_shader_spirv_extension
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_STENCIL_EXPORT
@ VKD3D_SHADER_API_VERSION_1_7
vkd3d_shader_descriptor_type
@ VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
vkd3d_shader_resource_type
@ VKD3D_SHADER_RESOURCE_BUFFER
@ VKD3D_SHADER_BINDING_FLAG_IMAGE
@ VKD3D_SHADER_BINDING_FLAG_BUFFER
VKD3D_SHADER_API void vkd3d_shader_free_scan_signature_info(struct vkd3d_shader_scan_signature_info *info)
VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages)
VKD3D_SHADER_API void vkd3d_shader_free_scan_descriptor_info(struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info)
#define VKD3D_SHADER_SWIZZLE(x, y, z, w)
#define VKD3D_SHADER_NO_SWIZZLE
@ VKD3D_SHADER_TARGET_SPIRV_BINARY
vkd3d_shader_spirv_environment
@ VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0
@ VKD3D_SHADER_PARAMETER_NAME_RASTERIZER_SAMPLE_COUNT
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF
@ VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION
VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages)
@ VK_SHADER_STAGE_COMPUTE_BIT
VkResult VKAPI_CALL vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo *pCreateInfos, const VkAllocationCallbacks *pAllocator, VkPipeline *pPipelines)
void VKAPI_CALL vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks *pAllocator)
@ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
@ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
@ VK_DESCRIPTOR_TYPE_SAMPLER
@ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
@ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
@ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
VkResult VKAPI_CALL vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkShaderModule *pShaderModule)
@ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
@ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
@ WINED3D_RS_SRGBWRITEENABLE
@ WINED3D_RS_POINTSIZE_MIN
@ WINED3D_RS_FOGTABLEMODE
@ WINED3D_RS_POINTSIZE_MAX
@ WINED3D_RS_CLIPPLANEENABLE
@ WINED3D_RS_POINTSPRITEENABLE
@ WINED3D_RS_FOGVERTEXMODE
@ WINED3D_RS_ALPHATESTENABLE
#define WINED3D_MAX_PS_CONSTS_F
#define WINED3D_MAX_VS_CONSTS_F
#define WINED3D_MAX_RENDER_TARGETS
@ WINED3D_SHADER_TYPE_HULL
@ WINED3D_SHADER_TYPE_PIXEL
@ WINED3D_SHADER_TYPE_GEOMETRY
@ WINED3D_SHADER_TYPE_GRAPHICS_COUNT
@ WINED3D_SHADER_TYPE_DOMAIN
@ WINED3D_SHADER_TYPE_COMPUTE
@ WINED3D_SHADER_TYPE_VERTEX
@ WINED3D_SHADER_TYPE_COUNT
#define WINED3D_MAX_FFP_TEXTURES
#define MAX_UNORDERED_ACCESS_VIEWS
wined3d_shader_resource_type
@ WINED3D_SHADER_RESOURCE_BUFFER
#define WINED3D_SHADER_CAP_FULL_FFP_VARYINGS
static const char * wined3d_get_line(const char **ptr, const char *end)
static BOOL is_identity_fixup(struct color_fixup_desc fixup)
#define WINED3D_FFP_CONSTANTS_EXTRA_REGISTER
wined3d_shader_descriptor_type
@ WINED3D_SHADER_DESCRIPTOR_TYPE_UAV
@ WINED3D_SHADER_DESCRIPTOR_TYPE_SRV
@ WINED3D_SHADER_DESCRIPTOR_TYPE_UAV_COUNTER
@ WINED3D_SHADER_DESCRIPTOR_TYPE_CBV
@ WINED3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
@ WINED3D_VK_EXT_SHADER_STENCIL_EXPORT