uint32_t mask,
struct lp_jit_thread_data *thread_data,
unsigned *stride,
- unsigned depth_stride);
+ unsigned depth_stride,
+ unsigned *color_sample_stride,
+ unsigned depth_sample_stride);
struct lp_jit_cs_thread_data
for (x = 0; x < task->width; x += 4) {
uint8_t *color[PIPE_MAX_COLOR_BUFS];
unsigned stride[PIPE_MAX_COLOR_BUFS];
+ unsigned sample_stride[PIPE_MAX_COLOR_BUFS];
uint8_t *depth = NULL;
unsigned depth_stride = 0;
+ unsigned depth_sample_stride = 0;
unsigned i;
/* color buffer */
for (i = 0; i < scene->fb.nr_cbufs; i++){
if (scene->fb.cbufs[i]) {
stride[i] = scene->cbufs[i].stride;
+ sample_stride[i] = 0;
color[i] = lp_rast_get_color_block_pointer(task, i, tile_x + x,
tile_y + y, inputs->layer);
}
else {
stride[i] = 0;
+ sample_stride[i] = 0;
color[i] = NULL;
}
}
0xffff,
&task->thread_data,
stride,
- depth_stride);
+ depth_stride,
+ sample_stride,
+ depth_sample_stride);
END_JIT_CALL();
}
}
const struct lp_scene *scene = task->scene;
uint8_t *color[PIPE_MAX_COLOR_BUFS];
unsigned stride[PIPE_MAX_COLOR_BUFS];
+ unsigned sample_stride[PIPE_MAX_COLOR_BUFS];
uint8_t *depth = NULL;
unsigned depth_stride = 0;
+ unsigned depth_sample_stride = 0;
unsigned i;
assert(state);
for (i = 0; i < scene->fb.nr_cbufs; i++) {
if (scene->fb.cbufs[i]) {
stride[i] = scene->cbufs[i].stride;
+ sample_stride[i] = 0;
color[i] = lp_rast_get_color_block_pointer(task, i, x, y,
inputs->layer);
}
else {
stride[i] = 0;
+ sample_stride[i] = 0;
color[i] = NULL;
}
}
mask,
&task->thread_data,
stride,
- depth_stride);
+ depth_stride,
+ sample_stride,
+ depth_sample_stride);
END_JIT_CALL();
}
}
struct lp_fragment_shader_variant *variant = state->variant;
uint8_t *color[PIPE_MAX_COLOR_BUFS];
unsigned stride[PIPE_MAX_COLOR_BUFS];
+ unsigned sample_stride[PIPE_MAX_COLOR_BUFS];
uint8_t *depth = NULL;
unsigned depth_stride = 0;
+ unsigned depth_sample_stride = 0;
unsigned i;
/* color buffer */
for (i = 0; i < scene->fb.nr_cbufs; i++) {
if (scene->fb.cbufs[i]) {
stride[i] = scene->cbufs[i].stride;
+ sample_stride[i] = 0;
color[i] = lp_rast_get_color_block_pointer(task, i, x, y,
inputs->layer);
}
else {
stride[i] = 0;
+ sample_stride[i] = 0;
color[i] = NULL;
}
}
0xffff,
&task->thread_data,
stride,
- depth_stride);
+ depth_stride,
+ sample_stride,
+ depth_sample_stride);
END_JIT_CALL();
}
}
struct lp_type blend_type;
LLVMTypeRef fs_elem_type;
LLVMTypeRef blend_vec_type;
- LLVMTypeRef arg_types[13];
+ LLVMTypeRef arg_types[15];
LLVMTypeRef func_type;
LLVMTypeRef int32_type = LLVMInt32TypeInContext(gallivm->context);
LLVMTypeRef int8_type = LLVMInt8TypeInContext(gallivm->context);
LLVMValueRef dady_ptr;
LLVMValueRef color_ptr_ptr;
LLVMValueRef stride_ptr;
+ LLVMValueRef color_sample_stride_ptr;
LLVMValueRef depth_ptr;
LLVMValueRef depth_stride;
+ LLVMValueRef depth_sample_stride;
LLVMValueRef mask_input;
LLVMValueRef thread_data_ptr;
LLVMBasicBlockRef block;
arg_types[10] = variant->jit_thread_data_ptr_type; /* per thread data */
arg_types[11] = LLVMPointerType(int32_type, 0); /* stride */
arg_types[12] = int32_type; /* depth_stride */
+ arg_types[13] = LLVMPointerType(int32_type, 0); /* color sample strides */
+ arg_types[14] = int32_type; /* depth sample stride */
func_type = LLVMFunctionType(LLVMVoidTypeInContext(gallivm->context),
arg_types, ARRAY_SIZE(arg_types), 0);
thread_data_ptr = LLVMGetParam(function, 10);
stride_ptr = LLVMGetParam(function, 11);
depth_stride = LLVMGetParam(function, 12);
+ color_sample_stride_ptr = LLVMGetParam(function, 13);
+ depth_sample_stride = LLVMGetParam(function, 14);
lp_build_name(context_ptr, "context");
lp_build_name(x, "x");
lp_build_name(thread_data_ptr, "thread_data");
lp_build_name(stride_ptr, "stride_ptr");
lp_build_name(depth_stride, "depth_stride");
+ lp_build_name(color_sample_stride_ptr, "color_sample_stride_ptr");
+ lp_build_name(depth_sample_stride, "depth_sample_stride");
/*
* Function body