draw: introduce sampler num samples + stride members
This adds the num samples + sampler stride into the texture mapping paths, currently drivers just pass 0 for now. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4122>
This commit is contained in:
@@ -1168,6 +1168,8 @@ draw_set_mapped_texture(struct draw_context *draw,
|
||||
unsigned sview_idx,
|
||||
uint32_t width, uint32_t height, uint32_t depth,
|
||||
uint32_t first_level, uint32_t last_level,
|
||||
uint32_t num_samples,
|
||||
uint32_t sample_stride,
|
||||
const void *base_ptr,
|
||||
uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
@@ -1179,7 +1181,7 @@ draw_set_mapped_texture(struct draw_context *draw,
|
||||
shader_stage,
|
||||
sview_idx,
|
||||
width, height, depth, first_level,
|
||||
last_level, base_ptr,
|
||||
last_level, num_samples, sample_stride, base_ptr,
|
||||
row_stride, img_stride, mip_offsets);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -198,6 +198,8 @@ draw_set_mapped_texture(struct draw_context *draw,
|
||||
unsigned sview_idx,
|
||||
uint32_t width, uint32_t height, uint32_t depth,
|
||||
uint32_t first_level, uint32_t last_level,
|
||||
uint32_t num_samples,
|
||||
uint32_t sample_stride,
|
||||
const void *base,
|
||||
uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
|
||||
@@ -152,6 +152,8 @@ create_jit_texture_type(struct gallivm_state *gallivm, const char *struct_name)
|
||||
elem_types[DRAW_JIT_TEXTURE_WIDTH] =
|
||||
elem_types[DRAW_JIT_TEXTURE_HEIGHT] =
|
||||
elem_types[DRAW_JIT_TEXTURE_DEPTH] =
|
||||
elem_types[DRAW_JIT_TEXTURE_NUM_SAMPLES] =
|
||||
elem_types[DRAW_JIT_TEXTURE_SAMPLE_STRIDE] =
|
||||
elem_types[DRAW_JIT_TEXTURE_FIRST_LEVEL] =
|
||||
elem_types[DRAW_JIT_TEXTURE_LAST_LEVEL] = int32_type;
|
||||
elem_types[DRAW_JIT_TEXTURE_BASE] =
|
||||
@@ -192,6 +194,12 @@ create_jit_texture_type(struct gallivm_state *gallivm, const char *struct_name)
|
||||
LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, mip_offsets,
|
||||
target, texture_type,
|
||||
DRAW_JIT_TEXTURE_MIP_OFFSETS);
|
||||
LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, num_samples,
|
||||
target, texture_type,
|
||||
DRAW_JIT_TEXTURE_NUM_SAMPLES);
|
||||
LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, sample_stride,
|
||||
target, texture_type,
|
||||
DRAW_JIT_TEXTURE_SAMPLE_STRIDE);
|
||||
|
||||
LP_CHECK_STRUCT_SIZE(struct draw_jit_texture, target, texture_type);
|
||||
|
||||
@@ -2404,6 +2412,8 @@ draw_llvm_set_mapped_texture(struct draw_context *draw,
|
||||
unsigned sview_idx,
|
||||
uint32_t width, uint32_t height, uint32_t depth,
|
||||
uint32_t first_level, uint32_t last_level,
|
||||
uint32_t num_samples,
|
||||
uint32_t sample_stride,
|
||||
const void *base_ptr,
|
||||
uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
@@ -2440,6 +2450,8 @@ draw_llvm_set_mapped_texture(struct draw_context *draw,
|
||||
jit_tex->first_level = first_level;
|
||||
jit_tex->last_level = last_level;
|
||||
jit_tex->base = base_ptr;
|
||||
jit_tex->num_samples = num_samples;
|
||||
jit_tex->sample_stride = sample_stride;
|
||||
|
||||
for (j = first_level; j <= last_level; j++) {
|
||||
jit_tex->mip_offsets[j] = mip_offsets[j];
|
||||
|
||||
@@ -58,6 +58,8 @@ struct draw_jit_texture
|
||||
uint32_t first_level;
|
||||
uint32_t last_level;
|
||||
uint32_t mip_offsets[PIPE_MAX_TEXTURE_LEVELS];
|
||||
uint32_t num_samples;
|
||||
uint32_t sample_stride;
|
||||
};
|
||||
|
||||
|
||||
@@ -107,6 +109,8 @@ enum {
|
||||
DRAW_JIT_TEXTURE_FIRST_LEVEL,
|
||||
DRAW_JIT_TEXTURE_LAST_LEVEL,
|
||||
DRAW_JIT_TEXTURE_MIP_OFFSETS,
|
||||
DRAW_JIT_TEXTURE_NUM_SAMPLES,
|
||||
DRAW_JIT_TEXTURE_SAMPLE_STRIDE,
|
||||
DRAW_JIT_TEXTURE_NUM_FIELDS /* number of fields above */
|
||||
};
|
||||
|
||||
@@ -897,6 +901,8 @@ draw_llvm_set_mapped_texture(struct draw_context *draw,
|
||||
unsigned sview_idx,
|
||||
uint32_t width, uint32_t height, uint32_t depth,
|
||||
uint32_t first_level, uint32_t last_level,
|
||||
uint32_t num_samples,
|
||||
uint32_t sample_stride,
|
||||
const void *base_ptr,
|
||||
uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS],
|
||||
|
||||
@@ -252,7 +252,8 @@ DRAW_LLVM_TEXTURE_MEMBER(base_ptr, DRAW_JIT_TEXTURE_BASE, TRUE)
|
||||
DRAW_LLVM_TEXTURE_MEMBER(row_stride, DRAW_JIT_TEXTURE_ROW_STRIDE, FALSE)
|
||||
DRAW_LLVM_TEXTURE_MEMBER(img_stride, DRAW_JIT_TEXTURE_IMG_STRIDE, FALSE)
|
||||
DRAW_LLVM_TEXTURE_MEMBER(mip_offsets, DRAW_JIT_TEXTURE_MIP_OFFSETS, FALSE)
|
||||
|
||||
DRAW_LLVM_TEXTURE_MEMBER(num_samples, DRAW_JIT_TEXTURE_NUM_SAMPLES, TRUE)
|
||||
DRAW_LLVM_TEXTURE_MEMBER(sample_stride, DRAW_JIT_TEXTURE_SAMPLE_STRIDE, TRUE)
|
||||
|
||||
#define DRAW_LLVM_SAMPLER_MEMBER(_name, _index, _emit_load) \
|
||||
static LLVMValueRef \
|
||||
@@ -359,6 +360,8 @@ draw_llvm_sampler_soa_create(const struct draw_sampler_static_state *static_stat
|
||||
sampler->dynamic_state.base.img_stride = draw_llvm_texture_img_stride;
|
||||
sampler->dynamic_state.base.base_ptr = draw_llvm_texture_base_ptr;
|
||||
sampler->dynamic_state.base.mip_offsets = draw_llvm_texture_mip_offsets;
|
||||
sampler->dynamic_state.base.num_samples = draw_llvm_texture_num_samples;
|
||||
sampler->dynamic_state.base.sample_stride = draw_llvm_texture_sample_stride;
|
||||
sampler->dynamic_state.base.min_lod = draw_llvm_sampler_min_lod;
|
||||
sampler->dynamic_state.base.max_lod = draw_llvm_sampler_max_lod;
|
||||
sampler->dynamic_state.base.lod_bias = draw_llvm_sampler_lod_bias;
|
||||
|
||||
@@ -432,7 +432,7 @@ i915_prepare_vertex_sampling(struct i915_context *i915)
|
||||
i,
|
||||
tex->width0, tex->height0, tex->depth0,
|
||||
view->u.tex.first_level, tex->last_level,
|
||||
addr,
|
||||
0, 0, addr,
|
||||
row_stride, img_stride, mip_offsets);
|
||||
} else
|
||||
i915->mapped_vs_tex[i] = NULL;
|
||||
|
||||
@@ -335,7 +335,7 @@ prepare_shader_sampling(
|
||||
shader_type,
|
||||
i,
|
||||
width0, tex->height0, num_layers,
|
||||
first_level, last_level,
|
||||
first_level, last_level, 0, 0,
|
||||
addr,
|
||||
row_stride, img_stride, mip_offsets);
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ prepare_shader_sampling(
|
||||
shader_type,
|
||||
i,
|
||||
width0, tex->height0, num_layers,
|
||||
first_level, last_level,
|
||||
first_level, last_level, 0, 0,
|
||||
addr,
|
||||
row_stride, img_stride, mip_offsets);
|
||||
}
|
||||
|
||||
@@ -370,7 +370,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
|
||||
|
||||
draw_set_mapped_texture(draw, PIPE_SHADER_VERTEX, i, width0,
|
||||
res->height0, num_layers, first_level,
|
||||
last_level, (void*)base_addr, row_stride,
|
||||
last_level, 0, 0, (void*)base_addr, row_stride,
|
||||
img_stride, mip_offset);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user