spirv: Make sampled images a real type
Previously, we just gave them exactly the same type as the respective image (which already had a sampler2D or similar type). Now they have their own base type and a pointer to the vtn_type for the image. Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:

committed by
Jason Ekstrand

parent
ec0a4fcec0
commit
aaeda8d7d4
@@ -511,6 +511,7 @@ vtn_type_copy(struct vtn_builder *b, struct vtn_type *src)
|
|||||||
case vtn_base_type_pointer:
|
case vtn_base_type_pointer:
|
||||||
case vtn_base_type_image:
|
case vtn_base_type_image:
|
||||||
case vtn_base_type_sampler:
|
case vtn_base_type_sampler:
|
||||||
|
case vtn_base_type_sampled_image:
|
||||||
/* Nothing more to do */
|
/* Nothing more to do */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1130,7 +1131,9 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
|
|||||||
}
|
}
|
||||||
|
|
||||||
case SpvOpTypeSampledImage:
|
case SpvOpTypeSampledImage:
|
||||||
val->type = vtn_value(b, w[2], vtn_value_type_type)->type;
|
val->type->base_type = vtn_base_type_sampled_image;
|
||||||
|
val->type->image = vtn_value(b, w[2], vtn_value_type_type)->type;
|
||||||
|
val->type->type = val->type->image->type;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SpvOpTypeSampler:
|
case SpvOpTypeSampler:
|
||||||
|
@@ -265,6 +265,7 @@ enum vtn_base_type {
|
|||||||
vtn_base_type_pointer,
|
vtn_base_type_pointer,
|
||||||
vtn_base_type_image,
|
vtn_base_type_image,
|
||||||
vtn_base_type_sampler,
|
vtn_base_type_sampler,
|
||||||
|
vtn_base_type_sampled_image,
|
||||||
vtn_base_type_function,
|
vtn_base_type_function,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -347,6 +348,12 @@ struct vtn_type {
|
|||||||
SpvAccessQualifier access_qualifier;
|
SpvAccessQualifier access_qualifier;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Members for sampled image types */
|
||||||
|
struct {
|
||||||
|
/* For sampled images, the image type */
|
||||||
|
struct vtn_type *image;
|
||||||
|
};
|
||||||
|
|
||||||
/* Members for function types */
|
/* Members for function types */
|
||||||
struct {
|
struct {
|
||||||
/* For functions, the vtn_type for each parameter */
|
/* For functions, the vtn_type for each parameter */
|
||||||
|
Reference in New Issue
Block a user