panfrost: Centralize our model list
Replaces panfrost-quirks.h Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14726>
This commit is contained in:
parent
2b638c1eb3
commit
6c0d433d19
|
@ -30,7 +30,6 @@
|
||||||
#include "pan_context.h"
|
#include "pan_context.h"
|
||||||
#include "pan_shader.h"
|
#include "pan_shader.h"
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "compiler/nir/nir.h"
|
#include "compiler/nir/nir.h"
|
||||||
#include "nir/tgsi_to_nir.h"
|
#include "nir/tgsi_to_nir.h"
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
#include "pipe/p_state.h"
|
#include "pipe/p_state.h"
|
||||||
#include "gallium/auxiliary/util/u_blend.h"
|
#include "gallium/auxiliary/util/u_blend.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "genxml/gen_macros.h"
|
#include "genxml/gen_macros.h"
|
||||||
|
|
||||||
#include "pan_pool.h"
|
#include "pan_pool.h"
|
||||||
|
@ -3738,7 +3737,7 @@ batch_get_polygon_list(struct panfrost_batch *batch)
|
||||||
/* Create the BO as invisible if we can. In the non-hierarchical tiler case,
|
/* Create the BO as invisible if we can. In the non-hierarchical tiler case,
|
||||||
* we need to write the polygon list manually because there's not WRITE_VALUE
|
* we need to write the polygon list manually because there's not WRITE_VALUE
|
||||||
* job in the chain (maybe we should add one...). */
|
* job in the chain (maybe we should add one...). */
|
||||||
bool init_polygon_list = !has_draws && (dev->quirks & MIDGARD_NO_HIER_TILING);
|
bool init_polygon_list = !has_draws && dev->model->quirks.no_hierarchical_tiling;
|
||||||
batch->tiler_ctx.midgard.polygon_list =
|
batch->tiler_ctx.midgard.polygon_list =
|
||||||
panfrost_batch_create_bo(batch, size,
|
panfrost_batch_create_bo(batch, size,
|
||||||
init_polygon_list ? 0 : PAN_BO_INVISIBLE,
|
init_polygon_list ? 0 : PAN_BO_INVISIBLE,
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pan_context.h"
|
#include "pan_context.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_bo.h"
|
#include "pan_bo.h"
|
||||||
#include "pan_shader.h"
|
#include "pan_shader.h"
|
||||||
#include "util/u_memory.h"
|
#include "util/u_memory.h"
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include "pan_bo.h"
|
#include "pan_bo.h"
|
||||||
#include "pan_context.h"
|
#include "pan_context.h"
|
||||||
#include "pan_minmax_cache.h"
|
#include "pan_minmax_cache.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
#include "util/format/u_format.h"
|
#include "util/format/u_format.h"
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
#include "util/u_framebuffer.h"
|
#include "util/u_framebuffer.h"
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
#include "decode.h"
|
#include "decode.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#define foreach_batch(ctx, idx) \
|
#define foreach_batch(ctx, idx) \
|
||||||
BITSET_FOREACH_SET(idx, ctx->batches.active, PAN_MAX_BATCHES)
|
BITSET_FOREACH_SET(idx, ctx->batches.active, PAN_MAX_BATCHES)
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
#include "pan_tiling.h"
|
#include "pan_tiling.h"
|
||||||
#include "decode.h"
|
#include "decode.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
panfrost_should_checksum(const struct panfrost_device *dev, const struct panfrost_resource *pres);
|
panfrost_should_checksum(const struct panfrost_device *dev, const struct panfrost_resource *pres);
|
||||||
|
|
|
@ -52,7 +52,6 @@
|
||||||
#include "decode.h"
|
#include "decode.h"
|
||||||
|
|
||||||
#include "pan_context.h"
|
#include "pan_context.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
static const struct debug_named_value panfrost_debug_options[] = {
|
static const struct debug_named_value panfrost_debug_options[] = {
|
||||||
{"perf", PAN_DBG_PERF, "Enable performance warnings"},
|
{"perf", PAN_DBG_PERF, "Enable performance warnings"},
|
||||||
|
@ -137,7 +136,7 @@ panfrost_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case PIPE_CAP_ANISOTROPIC_FILTER:
|
case PIPE_CAP_ANISOTROPIC_FILTER:
|
||||||
return !!(dev->quirks & HAS_ANISOTROPIC);
|
return dev->revision >= dev->model->min_rev_anisotropic;
|
||||||
|
|
||||||
/* Compile side is done for Bifrost, Midgard TODO. Needs some kernel
|
/* Compile side is done for Bifrost, Midgard TODO. Needs some kernel
|
||||||
* work to turn on, since CYCLE_COUNT_START needs to be issued. In
|
* work to turn on, since CYCLE_COUNT_START needs to be issued. In
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2019 Collabora, Ltd.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice (including the next
|
|
||||||
* paragraph) shall be included in all copies or substantial portions of the
|
|
||||||
* Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __PANFROST_QUIRKS_H
|
|
||||||
#define __PANFROST_QUIRKS_H
|
|
||||||
|
|
||||||
/* Model-specific quirks requiring workarounds/etc. Quirks may be errata
|
|
||||||
* requiring a workaround, or features. We're trying to be quirk-positive
|
|
||||||
* here; quirky is the best! */
|
|
||||||
|
|
||||||
/* Whether the GPU lacks the capability for hierarchical tiling, without an
|
|
||||||
* "Advanced Tiling Unit", instead requiring a single bin size for the entire
|
|
||||||
* framebuffer be selected by the driver */
|
|
||||||
|
|
||||||
#define MIDGARD_NO_HIER_TILING (1 << 0)
|
|
||||||
|
|
||||||
/* bit 1-6 unused */
|
|
||||||
|
|
||||||
/* Whether this GPU lacks support for any typed loads, requiring packing */
|
|
||||||
#define MIDGARD_NO_TYPED_BLEND_LOADS (1 << 7)
|
|
||||||
|
|
||||||
/* bits 8-10 unused */
|
|
||||||
|
|
||||||
/* Does this GPU support anisotropic filtering? */
|
|
||||||
#define HAS_ANISOTROPIC (1 << 11)
|
|
||||||
|
|
||||||
static inline unsigned
|
|
||||||
panfrost_get_quirks(unsigned gpu_id, unsigned gpu_revision)
|
|
||||||
{
|
|
||||||
switch (gpu_id) {
|
|
||||||
case 0x600:
|
|
||||||
case 0x620:
|
|
||||||
return MIDGARD_NO_TYPED_BLEND_LOADS;
|
|
||||||
|
|
||||||
case 0x720:
|
|
||||||
case 0x820:
|
|
||||||
case 0x830:
|
|
||||||
return MIDGARD_NO_HIER_TILING;
|
|
||||||
|
|
||||||
case 0x750:
|
|
||||||
case 0x860:
|
|
||||||
case 0x880:
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case 0x6000: /* G71 */
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case 0x6221: /* G72 */
|
|
||||||
/* Anisotropic filtering is supported from r0p3 onwards */
|
|
||||||
return (gpu_revision >= 0x30 ? HAS_ANISOTROPIC : 0);
|
|
||||||
|
|
||||||
case 0x7093: /* G31 */
|
|
||||||
case 0x7211: /* G76 */
|
|
||||||
case 0x7212: /* G52 */
|
|
||||||
case 0x7402: /* G52r1 */
|
|
||||||
return HAS_ANISOTROPIC;
|
|
||||||
|
|
||||||
default:
|
|
||||||
unreachable("Unknown Panfrost GPU ID");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include "pan_shader.h"
|
#include "pan_shader.h"
|
||||||
#include "pan_scoreboard.h"
|
#include "pan_scoreboard.h"
|
||||||
#include "pan_texture.h"
|
#include "pan_texture.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "compiler/nir/nir_builder.h"
|
#include "compiler/nir/nir_builder.h"
|
||||||
#include "util/u_math.h"
|
#include "util/u_math.h"
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
|
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "pan_cs.h"
|
#include "pan_cs.h"
|
||||||
#include "pan_encoder.h"
|
#include "pan_encoder.h"
|
||||||
|
@ -498,7 +497,7 @@ pan_emit_midgard_tiler(const struct panfrost_device *dev,
|
||||||
const struct pan_tiler_context *tiler_ctx,
|
const struct pan_tiler_context *tiler_ctx,
|
||||||
void *out)
|
void *out)
|
||||||
{
|
{
|
||||||
bool hierarchy = !(dev->quirks & MIDGARD_NO_HIER_TILING);
|
bool hierarchy = !dev->model->quirks.no_hierarchical_tiling;
|
||||||
|
|
||||||
assert(tiler_ctx->midgard.polygon_list->ptr.gpu);
|
assert(tiler_ctx->midgard.polygon_list->ptr.gpu);
|
||||||
|
|
||||||
|
|
|
@ -148,6 +148,32 @@ struct panfrost_tiler_features {
|
||||||
unsigned max_levels;
|
unsigned max_levels;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct panfrost_model {
|
||||||
|
/* GPU ID */
|
||||||
|
uint32_t gpu_id;
|
||||||
|
|
||||||
|
/* Marketing name for the GPU, used as the GL_RENDERER */
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
/* Set of associated performance counters */
|
||||||
|
const char *performance_counters;
|
||||||
|
|
||||||
|
/* Minimum GPU revision required for anisotropic filtering. ~0 and 0
|
||||||
|
* means "no revisions support anisotropy" and "all revisions support
|
||||||
|
* anistropy" respectively -- so checking for anisotropy is simply
|
||||||
|
* comparing the reivsion.
|
||||||
|
*/
|
||||||
|
uint32_t min_rev_anisotropic;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
/* The GPU lacks the capability for hierarchical tiling, without
|
||||||
|
* an "Advanced Tiling Unit", instead requiring a single bin
|
||||||
|
* size for the entire framebuffer be selected by the driver
|
||||||
|
*/
|
||||||
|
bool no_hierarchical_tiling;
|
||||||
|
} quirks;
|
||||||
|
};
|
||||||
|
|
||||||
struct panfrost_device {
|
struct panfrost_device {
|
||||||
/* For ralloc */
|
/* For ralloc */
|
||||||
void *memctx;
|
void *memctx;
|
||||||
|
@ -157,10 +183,11 @@ struct panfrost_device {
|
||||||
/* Properties of the GPU in use */
|
/* Properties of the GPU in use */
|
||||||
unsigned arch;
|
unsigned arch;
|
||||||
unsigned gpu_id;
|
unsigned gpu_id;
|
||||||
|
unsigned revision;
|
||||||
unsigned core_count;
|
unsigned core_count;
|
||||||
unsigned thread_tls_alloc;
|
unsigned thread_tls_alloc;
|
||||||
struct panfrost_tiler_features tiler_features;
|
struct panfrost_tiler_features tiler_features;
|
||||||
unsigned quirks;
|
const struct panfrost_model *model;
|
||||||
bool has_afbc;
|
bool has_afbc;
|
||||||
|
|
||||||
/* Table of formats, indexed by a PIPE format */
|
/* Table of formats, indexed by a PIPE format */
|
||||||
|
@ -257,6 +284,8 @@ pan_is_bifrost(const struct panfrost_device *dev)
|
||||||
return dev->arch >= 6 && dev->arch <= 7;
|
return dev->arch >= 6 && dev->arch <= 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const struct panfrost_model * panfrost_get_model(uint32_t gpu_id);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#define __PAN_ENCODER_H
|
#define __PAN_ENCODER_H
|
||||||
|
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "util/format/u_format.h"
|
#include "util/format/u_format.h"
|
||||||
|
@ -58,7 +57,7 @@ panfrost_tiler_get_polygon_list_size(const struct panfrost_device *dev,
|
||||||
if (!has_draws)
|
if (!has_draws)
|
||||||
return MALI_MIDGARD_TILER_MINIMUM_HEADER_SIZE + 4;
|
return MALI_MIDGARD_TILER_MINIMUM_HEADER_SIZE + 4;
|
||||||
|
|
||||||
bool hierarchy = !(dev->quirks & MIDGARD_NO_HIER_TILING);
|
bool hierarchy = !dev->model->quirks.no_hierarchical_tiling;
|
||||||
unsigned hierarchy_mask =
|
unsigned hierarchy_mask =
|
||||||
panfrost_choose_hierarchy_mask(fb_width, fb_height, 1, hierarchy);
|
panfrost_choose_hierarchy_mask(fb_width, fb_height, 1, hierarchy);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include "pan_indirect_dispatch.h"
|
#include "pan_indirect_dispatch.h"
|
||||||
#include "pan_pool.h"
|
#include "pan_pool.h"
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "compiler/nir/nir_builder.h"
|
#include "compiler/nir/nir_builder.h"
|
||||||
#include "util/u_memory.h"
|
#include "util/u_memory.h"
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include "pan_indirect_draw.h"
|
#include "pan_indirect_draw.h"
|
||||||
#include "pan_pool.h"
|
#include "pan_pool.h"
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "compiler/nir/nir_builder.h"
|
#include "compiler/nir/nir_builder.h"
|
||||||
#include "util/u_memory.h"
|
#include "util/u_memory.h"
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
|
|
|
@ -33,12 +33,60 @@
|
||||||
#include "drm-uapi/panfrost_drm.h"
|
#include "drm-uapi/panfrost_drm.h"
|
||||||
#include "pan_encoder.h"
|
#include "pan_encoder.h"
|
||||||
#include "pan_device.h"
|
#include "pan_device.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_bo.h"
|
#include "pan_bo.h"
|
||||||
#include "pan_texture.h"
|
#include "pan_texture.h"
|
||||||
#include "wrap.h"
|
#include "wrap.h"
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
|
|
||||||
|
/* Fixed "minimum revisions" */
|
||||||
|
#define NO_ANISO (~0)
|
||||||
|
#define HAS_ANISO (0)
|
||||||
|
|
||||||
|
#define MODEL(gpu_id_, shortname, counters_, min_rev_anisotropic_, quirks_) \
|
||||||
|
{ \
|
||||||
|
.gpu_id = gpu_id_, \
|
||||||
|
.name = "Mali-" shortname " (Panfrost)", \
|
||||||
|
.performance_counters = counters_, \
|
||||||
|
.min_rev_anisotropic = min_rev_anisotropic_, \
|
||||||
|
.quirks = quirks_, \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table of supported Mali GPUs */
|
||||||
|
const struct panfrost_model panfrost_model_list[] = {
|
||||||
|
MODEL(0x720, "T720", "T72x", NO_ANISO, { .no_hierarchical_tiling = true }),
|
||||||
|
MODEL(0x750, "T760", "T76x", NO_ANISO, {}),
|
||||||
|
MODEL(0x820, "T820", "T82x", NO_ANISO, { .no_hierarchical_tiling = true }),
|
||||||
|
MODEL(0x830, "T830", "T83x", NO_ANISO, { .no_hierarchical_tiling = true }),
|
||||||
|
MODEL(0x860, "T860", "T86x", NO_ANISO, {}),
|
||||||
|
MODEL(0x880, "T880", "T88x", NO_ANISO, {}),
|
||||||
|
|
||||||
|
MODEL(0x6000, "G71", "TMIx", NO_ANISO, {}),
|
||||||
|
MODEL(0x6221, "G72", "THEx", 0x0030 /* r0p3 */, {}),
|
||||||
|
MODEL(0x7093, "G31", "TDVx", HAS_ANISO, {}),
|
||||||
|
MODEL(0x7211, "G76", "TNOx", HAS_ANISO, {}),
|
||||||
|
MODEL(0x7212, "G52", "TGOx", HAS_ANISO, {}),
|
||||||
|
MODEL(0x7402, "G52 r1", "TGOx", HAS_ANISO, {}),
|
||||||
|
};
|
||||||
|
|
||||||
|
#undef NO_ANISO
|
||||||
|
#undef HAS_ANISO
|
||||||
|
#undef MODEL
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Look up a supported model by its GPU ID, or return NULL if the model is not
|
||||||
|
* supported at this time.
|
||||||
|
*/
|
||||||
|
const struct panfrost_model *
|
||||||
|
panfrost_get_model(uint32_t gpu_id)
|
||||||
|
{
|
||||||
|
for (unsigned i = 0; i < ARRAY_SIZE(panfrost_model_list); ++i) {
|
||||||
|
if (panfrost_model_list[i].gpu_id == gpu_id)
|
||||||
|
return &panfrost_model_list[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Abstraction over the raw drm_panfrost_get_param ioctl for fetching
|
/* Abstraction over the raw drm_panfrost_get_param ioctl for fetching
|
||||||
* information about devices */
|
* information about devices */
|
||||||
|
|
||||||
|
@ -238,8 +286,8 @@ panfrost_open_device(void *memctx, int fd, struct panfrost_device *dev)
|
||||||
dev->core_count = panfrost_query_core_count(fd);
|
dev->core_count = panfrost_query_core_count(fd);
|
||||||
dev->thread_tls_alloc = panfrost_query_thread_tls_alloc(fd, dev->arch);
|
dev->thread_tls_alloc = panfrost_query_thread_tls_alloc(fd, dev->arch);
|
||||||
dev->kernel_version = drmGetVersion(fd);
|
dev->kernel_version = drmGetVersion(fd);
|
||||||
unsigned revision = panfrost_query_gpu_revision(fd);
|
dev->revision = panfrost_query_gpu_revision(fd);
|
||||||
dev->quirks = panfrost_get_quirks(dev->gpu_id, revision);
|
dev->model = panfrost_get_model(dev->gpu_id);
|
||||||
dev->compressed_formats = panfrost_query_compressed_formats(fd);
|
dev->compressed_formats = panfrost_query_compressed_formats(fd);
|
||||||
dev->tiler_features = panfrost_query_tiler_features(fd);
|
dev->tiler_features = panfrost_query_tiler_features(fd);
|
||||||
dev->has_afbc = panfrost_query_afbc(fd, dev->arch);
|
dev->has_afbc = panfrost_query_afbc(fd, dev->arch);
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
#include "util/u_math.h"
|
#include "util/u_math.h"
|
||||||
#include "pan_texture.h"
|
#include "pan_texture.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#ifndef PAN_ARCH
|
#ifndef PAN_ARCH
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
#include "pan_device.h"
|
#include "pan_device.h"
|
||||||
#include "pan_encoder.h"
|
#include "pan_encoder.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
/* Mali GPUs are tiled-mode renderers, rather than immediate-mode.
|
/* Mali GPUs are tiled-mode renderers, rather than immediate-mode.
|
||||||
* Conceptually, the screen is divided into 16x16 tiles. Vertex shaders run.
|
* Conceptually, the screen is divided into 16x16 tiles. Vertex shaders run.
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "pan_texture.h"
|
#include "pan_texture.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
/* Translate a PIPE swizzle quad to a 12-bit Mali swizzle code. PIPE
|
/* Translate a PIPE swizzle quad to a 12-bit Mali swizzle code. PIPE
|
||||||
* swizzles line up with Mali swizzles for the XYZW01, but PIPE swizzles have
|
* swizzles line up with Mali swizzles for the XYZW01, but PIPE swizzles have
|
||||||
|
|
|
@ -47,7 +47,6 @@
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
#include "compiler.h"
|
#include "compiler.h"
|
||||||
#include "midgard_quirks.h"
|
#include "midgard_quirks.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "panfrost/util/pan_lower_framebuffer.h"
|
#include "panfrost/util/pan_lower_framebuffer.h"
|
||||||
|
|
||||||
#include "disassemble.h"
|
#include "disassemble.h"
|
||||||
|
|
|
@ -52,7 +52,6 @@
|
||||||
#include "compiler/nir/nir_format_convert.h"
|
#include "compiler/nir/nir_format_convert.h"
|
||||||
#include "util/format/u_format.h"
|
#include "util/format/u_format.h"
|
||||||
#include "pan_lower_framebuffer.h"
|
#include "pan_lower_framebuffer.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
/* Determines the unpacked type best suiting a given format, so the rest of the
|
/* Determines the unpacked type best suiting a given format, so the rest of the
|
||||||
* pipeline may be adjusted accordingly */
|
* pipeline may be adjusted accordingly */
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "panvk_private.h"
|
#include "panvk_private.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "pan_encoder.h"
|
#include "pan_encoder.h"
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
#include "util/macros.h"
|
#include "util/macros.h"
|
||||||
#include "compiler/shader_enums.h"
|
#include "compiler/shader_enums.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_cs.h"
|
#include "pan_cs.h"
|
||||||
#include "pan_pool.h"
|
#include "pan_pool.h"
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "panvk_private.h"
|
#include "panvk_private.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_bo.h"
|
#include "pan_bo.h"
|
||||||
#include "pan_encoder.h"
|
#include "pan_encoder.h"
|
||||||
#include "pan_util.h"
|
#include "pan_util.h"
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "panvk_private.h"
|
#include "panvk_private.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "util/debug.h"
|
#include "util/debug.h"
|
||||||
#include "util/u_atomic.h"
|
#include "util/u_atomic.h"
|
||||||
|
|
|
@ -40,7 +40,6 @@
|
||||||
#include "vk_format.h"
|
#include "vk_format.h"
|
||||||
#include "vk_util.h"
|
#include "vk_util.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
VkResult
|
VkResult
|
||||||
panvk_CreateComputePipelines(VkDevice _device,
|
panvk_CreateComputePipelines(VkDevice _device,
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include "spirv/nir_spirv.h"
|
#include "spirv/nir_spirv.h"
|
||||||
#include "util/mesa-sha1.h"
|
#include "util/mesa-sha1.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_shader.h"
|
#include "pan_shader.h"
|
||||||
|
|
||||||
#include "vk_util.h"
|
#include "vk_util.h"
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
|
|
||||||
#include "panvk_cs.h"
|
#include "panvk_cs.h"
|
||||||
#include "panvk_private.h"
|
#include "panvk_private.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "pan_blitter.h"
|
#include "pan_blitter.h"
|
||||||
#include "pan_cs.h"
|
#include "pan_cs.h"
|
||||||
|
@ -72,7 +71,7 @@ panvk_per_arch(cmd_get_polygon_list)(struct panvk_cmd_buffer *cmdbuf,
|
||||||
/* Create the BO as invisible if we can. In the non-hierarchical tiler case,
|
/* Create the BO as invisible if we can. In the non-hierarchical tiler case,
|
||||||
* we need to write the polygon list manually because there's not WRITE_VALUE
|
* we need to write the polygon list manually because there's not WRITE_VALUE
|
||||||
* job in the chain. */
|
* job in the chain. */
|
||||||
bool init_polygon_list = !has_draws && (pdev->quirks & MIDGARD_NO_HIER_TILING);
|
bool init_polygon_list = !has_draws && pdev->model->quirks.no_hierarchical_tiling;
|
||||||
batch->tiler.ctx.midgard.polygon_list =
|
batch->tiler.ctx.midgard.polygon_list =
|
||||||
panfrost_bo_create(pdev, size,
|
panfrost_bo_create(pdev, size,
|
||||||
init_polygon_list ? 0 : PAN_BO_INVISIBLE,
|
init_polygon_list ? 0 : PAN_BO_INVISIBLE,
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "vk_util.h"
|
#include "vk_util.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_cs.h"
|
#include "pan_cs.h"
|
||||||
#include "pan_encoder.h"
|
#include "pan_encoder.h"
|
||||||
#include "pan_pool.h"
|
#include "pan_pool.h"
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include "genxml/gen_macros.h"
|
#include "genxml/gen_macros.h"
|
||||||
#include "panvk_private.h"
|
#include "panvk_private.h"
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
#include "util/debug.h"
|
#include "util/debug.h"
|
||||||
#include "util/u_atomic.h"
|
#include "util/u_atomic.h"
|
||||||
|
|
|
@ -42,7 +42,6 @@
|
||||||
|
|
||||||
#include "panfrost/util/pan_lower_framebuffer.h"
|
#include "panfrost/util/pan_lower_framebuffer.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
|
|
||||||
struct panvk_pipeline_builder
|
struct panvk_pipeline_builder
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
#include "spirv/nir_spirv.h"
|
#include "spirv/nir_spirv.h"
|
||||||
#include "util/mesa-sha1.h"
|
#include "util/mesa-sha1.h"
|
||||||
|
|
||||||
#include "panfrost-quirks.h"
|
|
||||||
#include "pan_shader.h"
|
#include "pan_shader.h"
|
||||||
#include "util/pan_lower_framebuffer.h"
|
#include "util/pan_lower_framebuffer.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue