panfrost: Move pan_invocation to shared panfrost/

The routines in this file have no dependency on Gallium. Let's share
them so they can be used for a theoretical future Vulkan driver or, more
immediately, consulted when tracing.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-08-16 13:57:38 -07:00
parent d9f33951df
commit 39b226cfb3
6 changed files with 97 additions and 25 deletions

View file

@ -45,7 +45,6 @@ files_panfrost = files(
'pan_blend_cso.c',
'pan_compute.c',
'pan_fragment.c',
'pan_invocation.c',
'pan_instancing.c',
'pan_scoreboard.c',
'pan_sfbd.c',
@ -82,5 +81,5 @@ libpanfrost = static_library(
driver_panfrost = declare_dependency(
compile_args : compile_args_panfrost,
link_with : [libpanfrost, libpanfrostwinsys, libpanfrost_shared, libpanfrost_midgard, libpanfrost_bifrost, libpanfrost_decode],
link_with : [libpanfrost, libpanfrostwinsys, libpanfrost_shared, libpanfrost_midgard, libpanfrost_bifrost, libpanfrost_decode, libpanfrost_encoder],
)

View file

@ -32,6 +32,7 @@
#include "pan_resource.h"
#include "pan_job.h"
#include "pan_blend.h"
#include "pan_encoder.h"
#include "pipe/p_compiler.h"
#include "pipe/p_config.h"
@ -339,27 +340,6 @@ panfrost_shader_compile(
struct panfrost_shader_state *state,
uint64_t *outputs_written);
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);
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);
/* Instancing */
mali_ptr

View file

@ -0,0 +1,35 @@
# Copyright © 2018 Rob Clark
# Copyright © 2019 Collabora
# 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 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.
libpanfrost_encoder_files = files(
'pan_encoder.h',
'pan_invocation.c',
)
libpanfrost_encoder = static_library(
'panfrost_encoder',
[libpanfrost_encoder_files],
include_directories : [inc_common, inc_panfrost_hw],
c_args : [c_vis_args, no_override_init_args],
cpp_args : [cpp_vis_args],
build_by_default : false,
)

View file

@ -0,0 +1,55 @@
/*
* 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 "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);
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);
#endif

View file

@ -25,7 +25,9 @@
*
*/
#include "pan_context.h"
#include <assert.h>
#include "util/u_math.h"
#include "pan_encoder.h"
/* Compute shaders are invoked with a gl_NumWorkGroups X/Y/Z triplet. Vertex
* shaders, it turns out, are invoked with the same mechanism, with the triplet

View file

@ -24,13 +24,14 @@ inc_panfrost_hw = include_directories([
])
inc_panfrost = include_directories([
'.', 'include', 'shared', 'midgard', 'bifrost'
'.', 'include', 'shared', 'midgard', 'bifrost', 'encoder'
])
subdir('shared')
subdir('midgard')
subdir('bifrost')
subdir('pandecode')
subdir('encoder')
files_bifrost = files(
'bifrost/cmdline.c',