/* Notify all contexts about the change. */
r600_dirty_all_framebuffer_states(rscreen);
-
- /* TODO: re-set all sampler views and images, but how? */
}
static boolean r600_texture_get_handle(struct pipe_screen* screen,
struct si_sampler_views *views,
unsigned slot, struct pipe_sampler_view *view)
{
- if (views->views[slot] == view)
+ struct si_sampler_view *rview = (struct si_sampler_view*)view;
+
+ if (view && view->texture && view->texture->target != PIPE_BUFFER &&
+ G_008F28_COMPRESSION_EN(rview->state[6]) &&
+ ((struct r600_texture*)view->texture)->dcc_offset == 0) {
+ rview->state[6] &= C_008F28_COMPRESSION_EN &
+ C_008F28_ALPHA_IS_ON_MSB;
+ } else if (views->views[slot] == view)
return;
if (view) {
- struct si_sampler_view *rview =
- (struct si_sampler_view*)view;
struct r600_texture *rtex = (struct r600_texture *)view->texture;
si_sampler_view_add_buffer(sctx, view->texture);