-/* -*- mode: C; c-file-style: "k&r"; tab-width 4; indent-tabs-mode: t; -*- */
-
/*
* Copyright (C) 2013 Rob Clark <robclark@freedesktop.org>
*
#include "fd3_screen.h"
#include "fd3_context.h"
#include "fd3_format.h"
-#include "ir3_compiler.h"
+#include "fd3_emit.h"
+#include "fd3_resource.h"
+
+#include "ir3/ir3_compiler.h"
-static boolean
+static bool
fd3_screen_is_format_supported(struct pipe_screen *pscreen,
enum pipe_format format,
enum pipe_texture_target target,
unsigned sample_count,
+ unsigned storage_sample_count,
unsigned usage)
{
unsigned retval = 0;
if ((target >= PIPE_MAX_TEXTURE_TYPES) ||
- (sample_count > 1) || /* TODO add MSAA */
- !util_format_is_supported(format, usage)) {
+ (sample_count > 1)) { /* TODO add MSAA */
DBG("not supported: format=%s, target=%d, sample_count=%d, usage=%x",
util_format_name(format), target, sample_count, usage);
- return FALSE;
+ return false;
}
+ if (MAX2(1, sample_count) != MAX2(1, storage_sample_count))
+ return false;
+
if ((usage & PIPE_BIND_VERTEX_BUFFER) &&
- (fd3_pipe2vtx(format) != ~0)) {
+ (fd3_pipe2vtx(format) != (enum a3xx_vtx_fmt)~0)) {
retval |= PIPE_BIND_VERTEX_BUFFER;
}
if ((usage & PIPE_BIND_SAMPLER_VIEW) &&
- (fd3_pipe2tex(format) != ~0)) {
+ (fd3_pipe2tex(format) != (enum a3xx_tex_fmt)~0)) {
retval |= PIPE_BIND_SAMPLER_VIEW;
}
PIPE_BIND_SCANOUT |
PIPE_BIND_SHARED |
PIPE_BIND_BLENDABLE)) &&
- (fd3_pipe2color(format) != ~0) &&
- (fd3_pipe2tex(format) != ~0)) {
+ (fd3_pipe2color(format) != (enum a3xx_color_fmt)~0) &&
+ (fd3_pipe2tex(format) != (enum a3xx_tex_fmt)~0)) {
retval |= usage & (PIPE_BIND_RENDER_TARGET |
PIPE_BIND_DISPLAY_TARGET |
PIPE_BIND_SCANOUT |
}
if ((usage & PIPE_BIND_DEPTH_STENCIL) &&
- (fd_pipe2depth(format) != ~0) &&
- (fd3_pipe2tex(format) != ~0)) {
+ (fd_pipe2depth(format) != (enum adreno_rb_depth_format)~0) &&
+ (fd3_pipe2tex(format) != (enum a3xx_tex_fmt)~0)) {
retval |= PIPE_BIND_DEPTH_STENCIL;
}
if ((usage & PIPE_BIND_INDEX_BUFFER) &&
- (fd_pipe2index(format) != ~0)) {
+ (fd_pipe2index(format) != (enum pc_di_index_size)~0)) {
retval |= PIPE_BIND_INDEX_BUFFER;
}
- if (usage & PIPE_BIND_TRANSFER_READ)
- retval |= PIPE_BIND_TRANSFER_READ;
- if (usage & PIPE_BIND_TRANSFER_WRITE)
- retval |= PIPE_BIND_TRANSFER_WRITE;
-
if (retval != usage) {
DBG("not supported: format=%s, target=%d, sample_count=%d, "
"usage=%x, retval=%x", util_format_name(format),
{
struct fd_screen *screen = fd_screen(pscreen);
screen->max_rts = A3XX_MAX_RENDER_TARGETS;
- screen->compiler = ir3_compiler_create(screen->gpu_id);
+ screen->compiler = ir3_compiler_create(screen->dev, screen->gpu_id);
pscreen->context_create = fd3_context_create;
pscreen->is_format_supported = fd3_screen_is_format_supported;
+ fd3_emit_init_screen(pscreen);
+
+ screen->setup_slices = fd3_setup_slices;
+ if (fd_mesa_debug & FD_DBG_TTILE)
+ screen->tile_mode = fd3_tile_mode;
}