free(state);
}
-static unsigned si_map_swizzle(unsigned swizzle)
-{
- switch (swizzle) {
- case UTIL_FORMAT_SWIZZLE_Y:
- return V_008F1C_SQ_SEL_Y;
- case UTIL_FORMAT_SWIZZLE_Z:
- return V_008F1C_SQ_SEL_Z;
- case UTIL_FORMAT_SWIZZLE_W:
- return V_008F1C_SQ_SEL_W;
- case UTIL_FORMAT_SWIZZLE_0:
- return V_008F1C_SQ_SEL_0;
- case UTIL_FORMAT_SWIZZLE_1:
- return V_008F1C_SQ_SEL_1;
- default: /* UTIL_FORMAT_SWIZZLE_X */
- return V_008F1C_SQ_SEL_X;
- }
-}
-
static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_context *ctx,
struct pipe_resource *texture,
const struct pipe_sampler_view *state)
va = r600_resource_va(ctx->screen, texture);
view->state[0] = (va + tmp->offset[0]) >> 8;
- view->state[1] = ((va + tmp->offset[0]) >> 40) & 0xff;
- view->state[1] |= (S_008F14_DATA_FORMAT(format) |
- S_008F14_NUM_FORMAT(num_format));
+ view->state[1] = (S_008F14_BASE_ADDRESS_HI((va + tmp->offset[0]) >> 40) |
+ S_008F14_DATA_FORMAT(format) |
+ S_008F14_NUM_FORMAT(num_format));
view->state[2] = (S_008F18_WIDTH(texture->width0 - 1) |
S_008F18_HEIGHT(height - 1));
view->state[3] = (S_008F1C_DST_SEL_X(si_map_swizzle(swizzle[0])) |
r600_pipe_state_add_reg(rstate,
R_02870C_SPI_SHADER_POS_FORMAT,
S_02870C_POS0_EXPORT_FORMAT(V_02870C_SPI_SHADER_4COMP) |
- S_02870C_POS1_EXPORT_FORMAT(V_02870C_SPI_SHADER_4COMP) |
- S_02870C_POS2_EXPORT_FORMAT(V_02870C_SPI_SHADER_4COMP) |
- S_02870C_POS3_EXPORT_FORMAT(V_02870C_SPI_SHADER_4COMP),
+ S_02870C_POS1_EXPORT_FORMAT(V_02870C_SPI_SHADER_NONE) |
+ S_02870C_POS2_EXPORT_FORMAT(V_02870C_SPI_SHADER_NONE) |
+ S_02870C_POS3_EXPORT_FORMAT(V_02870C_SPI_SHADER_NONE),
NULL, 0);
va = r600_resource_va(ctx->screen, (void *)shader->bo);