/** SIMD vector width */
unsigned vector_width;
+ /** number of lod values (valid are 1, length/4, length) */
+ unsigned num_lods;
+
/** regular scalar float type */
struct lp_type float_type;
struct lp_build_context float_bld;
struct lp_build_context int_coord_bld;
/** Unsigned integer texture size */
+ struct lp_type int_size_in_type;
+ struct lp_build_context int_size_in_bld;
+
+ /** Float incoming texture size */
+ struct lp_type float_size_in_type;
+ struct lp_build_context float_size_in_bld;
+
+ /** Unsigned integer texture size (might be per quad) */
struct lp_type int_size_type;
struct lp_build_context int_size_bld;
- /** Unsigned integer texture size */
+ /** Float texture size (might be per quad) */
struct lp_type float_size_type;
struct lp_build_context float_size_bld;
{
switch (tex) {
case PIPE_TEXTURE_1D:
+ case PIPE_BUFFER:
return 1;
case PIPE_TEXTURE_2D:
case PIPE_TEXTURE_RECT:
LLVMValueRef level);
+LLVMValueRef
+lp_build_get_mip_offsets(struct lp_build_sample_context *bld,
+ LLVMValueRef level);
+
+
void
lp_build_mipmap_level_sizes(struct lp_build_sample_context *bld,
LLVMValueRef ilevel,
void
lp_build_extract_image_sizes(struct lp_build_sample_context *bld,
- struct lp_type size_type,
+ struct lp_build_context *size_bld,
struct lp_type coord_type,
LLVMValueRef size,
LLVMValueRef *out_width,
const struct lp_sampler_static_state *static_state,
struct lp_sampler_dynamic_state *dynamic_state,
struct lp_type fp_type,
+ boolean is_fetch,
unsigned unit,
- unsigned num_coords,
const LLVMValueRef *coords,
+ const LLVMValueRef *offsets,
const struct lp_derivatives *derivs,
LLVMValueRef lod_bias,
LLVMValueRef explicit_lod,
void
lp_build_sample_nop(struct gallivm_state *gallivm,
struct lp_type type,
- unsigned num_coords,
const LLVMValueRef *coords,
LLVMValueRef texel_out[4]);