#include "main/mipmap.h"
#include "drivers/common/meta.h"
#include "brw_context.h"
+#include "brw_defines.h"
#include "intel_buffer_objects.h"
#include "intel_mipmap_tree.h"
#include "intel_tex.h"
!intel_miptree_match_image(intel_texobj->mt, first_image) ||
intel_texobj->mt->last_level != levels - 1) {
intel_miptree_release(&intel_texobj->mt);
+
+ intel_get_image_dims(first_image, &width, &height, &depth);
intel_texobj->mt = intel_miptree_create(brw, texobj->Target,
first_image->TexFormat,
0, levels - 1,
return true;
}
+static void
+intel_texture_barrier(struct gl_context *ctx)
+{
+ struct brw_context *brw = brw_context(ctx);
+
+ if (brw->gen >= 6) {
+ brw_emit_pipe_control_flush(brw,
+ PIPE_CONTROL_DEPTH_CACHE_FLUSH |
+ PIPE_CONTROL_RENDER_TARGET_FLUSH |
+ PIPE_CONTROL_CS_STALL);
+
+ brw_emit_pipe_control_flush(brw,
+ PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE);
+ } else {
+ brw_emit_mi_flush(brw);
+ }
+}
+
void
intelInitTextureFuncs(struct dd_function_table *functions)
{
functions->TextureView = intel_texture_view;
functions->SetTextureStorageForBufferObject =
intel_set_texture_storage_for_buffer_object;
+ functions->TextureBarrier = intel_texture_barrier;
}