MCPcopy Create free account
hub / github.com/InoriRus/Kyty / update_func

Function update_func

source/emulator/src/Graphics/Objects/VideoOutBuffer.cpp:35–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33}
34
35static void update_func(GraphicContext* ctx, const uint64_t* params, void* obj, const uint64_t* vaddr, const uint64_t* size, int vaddr_num)
36{
37 KYTY_PROFILER_BLOCK("VideoOutBufferObject::update_func");
38
39 EXIT_IF(obj == nullptr);
40 EXIT_IF(ctx == nullptr);
41 EXIT_IF(params == nullptr);
42 EXIT_IF(vaddr == nullptr || size == nullptr || vaddr_num != 1);
43
44 auto* vk_obj = static_cast<VideoOutVulkanImage*>(obj);
45
46 bool tiled = (params[VideoOutBufferObject::PARAM_TILED] != 0);
47 bool neo = (params[VideoOutBufferObject::PARAM_NEO] != 0);
48 auto pitch = params[VideoOutBufferObject::PARAM_PITCH];
49 auto width = params[VideoOutBufferObject::PARAM_WIDTH];
50 auto height = params[VideoOutBufferObject::PARAM_HEIGHT];
51
52 vk_obj->layout = VK_IMAGE_LAYOUT_UNDEFINED;
53
54 if (tiled && buffer_is_tiled(*vaddr, *size))
55 {
56 EXIT_NOT_IMPLEMENTED(width != pitch);
57 auto* temp_buf = new uint8_t[*size];
58 TileConvertTiledToLinear(temp_buf, reinterpret_cast<void*>(*vaddr), TileMode::VideoOutTiled, width, height, neo);
59 UtilFillImage(ctx, vk_obj, temp_buf, *size, pitch, static_cast<uint64_t>(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL));
60 delete[] temp_buf;
61 } else
62 {
63 UtilFillImage(ctx, vk_obj, reinterpret_cast<void*>(*vaddr), *size, pitch,
64 static_cast<uint64_t>(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL));
65 }
66}
67
68static void* create_func(GraphicContext* ctx, const uint64_t* params, const uint64_t* vaddr, const uint64_t* size, int vaddr_num,
69 VulkanMemory* mem)

Callers 1

create_funcFunction · 0.70

Calls 3

TileConvertTiledToLinearFunction · 0.85
UtilFillImageFunction · 0.85
buffer_is_tiledFunction · 0.70

Tested by

no test coverage detected