mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
pvr: Generate EOT program at runtime
Also removes hardcoded EOT program. Signed-off-by: Jarred Davies <jarred.davies@imgtec.com> Reviewed-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21596>
This commit is contained in:
parent
0badfd8b20
commit
de5258ae2b
2 changed files with 14 additions and 66 deletions
|
|
@ -35,7 +35,6 @@
|
|||
#include "pvr_csb.h"
|
||||
#include "pvr_csb_enum_helpers.h"
|
||||
#include "pvr_device_info.h"
|
||||
#include "pvr_end_of_tile.h"
|
||||
#include "pvr_formats.h"
|
||||
#include "pvr_hardcode.h"
|
||||
#include "pvr_hw_pass.h"
|
||||
|
|
@ -46,6 +45,7 @@
|
|||
#include "pvr_private.h"
|
||||
#include "pvr_tex_state.h"
|
||||
#include "pvr_types.h"
|
||||
#include "pvr_uscgen.h"
|
||||
#include "pvr_winsys.h"
|
||||
#include "util/bitscan.h"
|
||||
#include "util/bitset.h"
|
||||
|
|
@ -489,34 +489,28 @@ static VkResult pvr_sub_cmd_gfx_per_job_fragment_programs_create_and_upload(
|
|||
cmd_buffer->device->pixel_event_data_size_in_dwords * sizeof(uint32_t);
|
||||
const VkAllocationCallbacks *const allocator = &cmd_buffer->vk.pool->alloc;
|
||||
struct pvr_device *const device = cmd_buffer->device;
|
||||
/* FIXME: This should come from the compiler for the USC pixel program. */
|
||||
const uint32_t usc_temp_count = 0;
|
||||
struct pvr_bo *usc_eot_program;
|
||||
uint8_t *usc_eot_program_ptr;
|
||||
struct util_dynarray eot_program_bin;
|
||||
struct pvr_bo *usc_eot_program = NULL;
|
||||
uint32_t *staging_buffer;
|
||||
uint32_t usc_temp_count;
|
||||
VkResult result;
|
||||
|
||||
pvr_uscgen_per_job_eot(pbe_cs_words[0],
|
||||
pbe_cs_words[1],
|
||||
&usc_temp_count,
|
||||
&eot_program_bin);
|
||||
|
||||
result = pvr_cmd_buffer_upload_usc(cmd_buffer,
|
||||
pvr_end_of_tile_program,
|
||||
sizeof(pvr_end_of_tile_program),
|
||||
eot_program_bin.data,
|
||||
eot_program_bin.size,
|
||||
4,
|
||||
&usc_eot_program);
|
||||
|
||||
util_dynarray_fini(&eot_program_bin);
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
assert((pbe_cs_words[1] & 0x3F) == 0x20);
|
||||
|
||||
/* FIXME: Stop patching the framebuffer address (this will require the
|
||||
* end-of-tile program to be generated at run-time).
|
||||
*/
|
||||
pvr_bo_cpu_map(device, usc_eot_program);
|
||||
usc_eot_program_ptr = usc_eot_program->bo->map;
|
||||
usc_eot_program_ptr[6] = (pbe_cs_words[0] >> 0) & 0xFF;
|
||||
usc_eot_program_ptr[7] = (pbe_cs_words[0] >> 8) & 0xFF;
|
||||
usc_eot_program_ptr[8] = (pbe_cs_words[0] >> 16) & 0xFF;
|
||||
usc_eot_program_ptr[9] = (pbe_cs_words[0] >> 24) & 0xFF;
|
||||
pvr_bo_cpu_unmap(device, usc_eot_program);
|
||||
|
||||
pvr_pds_setup_doutu(&pixel_event_program.task_control,
|
||||
usc_eot_program->vma->dev_addr.addr,
|
||||
usc_temp_count,
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
/*
|
||||
* Copyright © 2022 Imagination Technologies 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 PVR_END_OF_TILE_H
|
||||
#define PVR_END_OF_TILE_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* clang-format off */
|
||||
static const uint8_t pvr_end_of_tile_program[] = {
|
||||
0xa9, 0xf2, 0x40, 0x00,
|
||||
0x47, 0x91, 0x00, 0x50,
|
||||
0x04, 0x00, 0x80, 0x40,
|
||||
0x00, 0x00, 0x80, 0x80,
|
||||
0x24, 0xff, 0xa9, 0xf2,
|
||||
0x40, 0x00, 0x47, 0x91,
|
||||
0x20, 0x20, 0x08, 0x00,
|
||||
0x80, 0x40, 0x00, 0x00,
|
||||
0x80, 0x80, 0x25, 0xff,
|
||||
0x45, 0xa0, 0x80, 0xc2,
|
||||
0xa4, 0x40, 0x00, 0x25,
|
||||
0x00, 0x00
|
||||
};
|
||||
/* clang-format on */
|
||||
|
||||
#endif /* PVR_END_OF_TILE_H */
|
||||
Loading…
Add table
Reference in a new issue