mesa/src/panfrost/encoder/pan_encoder.h
Alyssa Rosenzweig de077c2078 panfrost: Remove mali_alt_func
There's only one way to encode comparison functions in the command
stream, not two. It's just that the semantics for texture comparisons
are flipped from the semantics of stencil comparison. We can factor out
that flip to common Panfrost code, rather than tying it to a second
Gallium routine.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
2019-12-27 12:58:00 -05:00

110 lines
3.2 KiB
C

/*
* 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.
*
* Authors (Collabora):
* Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
*/
#ifndef __PAN_ENCODER_H
#define __PAN_ENCODER_H
#include <stdbool.h>
#include "panfrost-job.h"
/* Invocation packing */
void
panfrost_pack_work_groups_compute(
struct mali_vertex_tiler_prefix *out,
unsigned num_x,
unsigned num_y,
unsigned num_z,
unsigned size_x,
unsigned size_y,
unsigned size_z,
bool quirk_graphics);
void
panfrost_pack_work_groups_fused(
struct mali_vertex_tiler_prefix *vertex,
struct mali_vertex_tiler_prefix *tiler,
unsigned num_x,
unsigned num_y,
unsigned num_z,
unsigned size_x,
unsigned size_y,
unsigned size_z);
/* Tiler structure size computation */
unsigned
panfrost_tiler_header_size(unsigned width, unsigned height, unsigned mask, bool hierarchy);
unsigned
panfrost_tiler_full_size(unsigned width, unsigned height, unsigned mask, bool hierarchy);
unsigned
panfrost_choose_hierarchy_mask(
unsigned width, unsigned height,
unsigned vertex_count, bool hierarchy);
/* Stack sizes */
unsigned
panfrost_get_stack_shift(unsigned stack_size);
unsigned
panfrost_get_total_stack_size(
unsigned stack_shift,
unsigned threads_per_core,
unsigned core_count);
/* Property queries */
unsigned panfrost_query_gpu_version(int fd);
unsigned panfrost_query_core_count(int fd);
unsigned panfrost_query_thread_tls_alloc(int fd);
const char * panfrost_model_name(unsigned gpu_id);
/* Attributes / instancing */
unsigned
panfrost_padded_vertex_count(unsigned vertex_count);
unsigned
panfrost_vertex_instanced(
unsigned padded_count,
unsigned instance_shift, unsigned instance_odd,
unsigned divisor,
union mali_attr *attrs);
void panfrost_vertex_id(unsigned padded_count, union mali_attr *attr);
void panfrost_instance_id(unsigned padded_count, union mali_attr *attr);
/* Samplers */
enum mali_func
panfrost_flip_compare_func(enum mali_func f);
#endif