gallivm: asst clean-ups, comments, etc.
This commit is contained in:
@@ -1420,26 +1420,26 @@ lp_build_cube_lookup(struct lp_build_sample_context *bld,
|
||||
* If we're using nearest miplevel sampling the '1' values will be null/unused.
|
||||
*/
|
||||
static void
|
||||
lp_sample_mipmap(struct lp_build_sample_context *bld,
|
||||
unsigned img_filter,
|
||||
unsigned mip_filter,
|
||||
LLVMValueRef s,
|
||||
LLVMValueRef t,
|
||||
LLVMValueRef r,
|
||||
LLVMValueRef lod_fpart,
|
||||
LLVMValueRef width0_vec,
|
||||
LLVMValueRef width1_vec,
|
||||
LLVMValueRef height0_vec,
|
||||
LLVMValueRef height1_vec,
|
||||
LLVMValueRef depth0_vec,
|
||||
LLVMValueRef depth1_vec,
|
||||
LLVMValueRef row_stride0_vec,
|
||||
LLVMValueRef row_stride1_vec,
|
||||
LLVMValueRef img_stride0_vec,
|
||||
LLVMValueRef img_stride1_vec,
|
||||
LLVMValueRef data_ptr0,
|
||||
LLVMValueRef data_ptr1,
|
||||
LLVMValueRef *colors_out)
|
||||
lp_build_sample_mipmap(struct lp_build_sample_context *bld,
|
||||
unsigned img_filter,
|
||||
unsigned mip_filter,
|
||||
LLVMValueRef s,
|
||||
LLVMValueRef t,
|
||||
LLVMValueRef r,
|
||||
LLVMValueRef lod_fpart,
|
||||
LLVMValueRef width0_vec,
|
||||
LLVMValueRef width1_vec,
|
||||
LLVMValueRef height0_vec,
|
||||
LLVMValueRef height1_vec,
|
||||
LLVMValueRef depth0_vec,
|
||||
LLVMValueRef depth1_vec,
|
||||
LLVMValueRef row_stride0_vec,
|
||||
LLVMValueRef row_stride1_vec,
|
||||
LLVMValueRef img_stride0_vec,
|
||||
LLVMValueRef img_stride1_vec,
|
||||
LLVMValueRef data_ptr0,
|
||||
LLVMValueRef data_ptr1,
|
||||
LLVMValueRef *colors_out)
|
||||
{
|
||||
LLVMValueRef colors0[4], colors1[4];
|
||||
int chan;
|
||||
@@ -1533,20 +1533,24 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
|
||||
*/
|
||||
|
||||
/*
|
||||
* Compute the level of detail (mipmap level index(es)).
|
||||
* Compute the level of detail (float).
|
||||
*/
|
||||
if (min_filter != mag_filter ||
|
||||
mip_filter != PIPE_TEX_MIPFILTER_NONE) {
|
||||
/* Need to compute lod either to choose mipmap levels or to
|
||||
* distinguish between minification/magnification with one mipmap level.
|
||||
*/
|
||||
lod = lp_build_lod_selector(bld, s, t, r, width, height, depth);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compute integer mipmap level(s) to fetch texels from.
|
||||
*/
|
||||
if (mip_filter == PIPE_TEX_MIPFILTER_NONE) {
|
||||
/* always use mip level 0 */
|
||||
ilevel0 = LLVMConstInt(LLVMInt32Type(), 0, 0);
|
||||
|
||||
/* XXX temporary here */
|
||||
lod = lp_build_lod_selector(bld, s, t, r, width, height, depth);
|
||||
|
||||
}
|
||||
else {
|
||||
/* compute float LOD */
|
||||
lod = lp_build_lod_selector(bld, s, t, r, width, height, depth);
|
||||
|
||||
if (mip_filter == PIPE_TEX_MIPFILTER_NEAREST) {
|
||||
lp_build_nearest_mip_level(bld, unit, lod, &ilevel0);
|
||||
}
|
||||
@@ -1582,7 +1586,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
|
||||
}
|
||||
}
|
||||
if (mip_filter == PIPE_TEX_MIPFILTER_LINEAR) {
|
||||
/* compute width, height, depth for second mipmap level at ilevel1 */
|
||||
/* compute width, height, depth for second mipmap level at 'ilevel1' */
|
||||
width1_vec = lp_build_minify(bld, width_vec, ilevel1_vec);
|
||||
if (dims >= 2) {
|
||||
height1_vec = lp_build_minify(bld, height_vec, ilevel1_vec);
|
||||
@@ -1599,7 +1603,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
|
||||
}
|
||||
|
||||
/*
|
||||
* Choose cube face, recompute texcoords.
|
||||
* Choose cube face, recompute per-face texcoords.
|
||||
*/
|
||||
if (bld->static_state->target == PIPE_TEXTURE_CUBE) {
|
||||
LLVMValueRef face, face_s, face_t;
|
||||
@@ -1623,14 +1627,14 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
|
||||
*/
|
||||
if (min_filter == mag_filter) {
|
||||
/* no need to distinquish between minification and magnification */
|
||||
lp_sample_mipmap(bld, min_filter, mip_filter, s, t, r, lod_fpart,
|
||||
width0_vec, width1_vec,
|
||||
height0_vec, height1_vec,
|
||||
depth0_vec, depth1_vec,
|
||||
row_stride0_vec, row_stride1_vec,
|
||||
img_stride0_vec, img_stride1_vec,
|
||||
data_ptr0, data_ptr1,
|
||||
colors_out);
|
||||
lp_build_sample_mipmap(bld, min_filter, mip_filter, s, t, r, lod_fpart,
|
||||
width0_vec, width1_vec,
|
||||
height0_vec, height1_vec,
|
||||
depth0_vec, depth1_vec,
|
||||
row_stride0_vec, row_stride1_vec,
|
||||
img_stride0_vec, img_stride1_vec,
|
||||
data_ptr0, data_ptr1,
|
||||
colors_out);
|
||||
}
|
||||
else {
|
||||
/* Emit conditional to choose min image filter or mag image filter
|
||||
@@ -1655,26 +1659,28 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
|
||||
lp_build_if(&if_ctx, flow_ctx, bld->builder, minify);
|
||||
{
|
||||
/* Use the minification filter */
|
||||
lp_sample_mipmap(bld, min_filter, mip_filter, s, t, r, lod_fpart,
|
||||
width0_vec, width1_vec,
|
||||
height0_vec, height1_vec,
|
||||
depth0_vec, depth1_vec,
|
||||
row_stride0_vec, row_stride1_vec,
|
||||
img_stride0_vec, img_stride1_vec,
|
||||
data_ptr0, data_ptr1,
|
||||
colors_out);
|
||||
lp_build_sample_mipmap(bld, min_filter, mip_filter,
|
||||
s, t, r, lod_fpart,
|
||||
width0_vec, width1_vec,
|
||||
height0_vec, height1_vec,
|
||||
depth0_vec, depth1_vec,
|
||||
row_stride0_vec, row_stride1_vec,
|
||||
img_stride0_vec, img_stride1_vec,
|
||||
data_ptr0, data_ptr1,
|
||||
colors_out);
|
||||
}
|
||||
lp_build_else(&if_ctx);
|
||||
{
|
||||
/* Use the magnification filter */
|
||||
lp_sample_mipmap(bld, mag_filter, mip_filter, s, t, r, lod_fpart,
|
||||
width0_vec, width1_vec,
|
||||
height0_vec, height1_vec,
|
||||
depth0_vec, depth1_vec,
|
||||
row_stride0_vec, row_stride1_vec,
|
||||
img_stride0_vec, img_stride1_vec,
|
||||
data_ptr0, data_ptr1,
|
||||
colors_out);
|
||||
lp_build_sample_mipmap(bld, mag_filter, mip_filter,
|
||||
s, t, r, lod_fpart,
|
||||
width0_vec, width1_vec,
|
||||
height0_vec, height1_vec,
|
||||
depth0_vec, depth1_vec,
|
||||
row_stride0_vec, row_stride1_vec,
|
||||
img_stride0_vec, img_stride1_vec,
|
||||
data_ptr0, data_ptr1,
|
||||
colors_out);
|
||||
}
|
||||
lp_build_endif(&if_ctx);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user