MCPcopy Create free account
hub / github.com/DragonJoker/RenderGraph / mergeViewData

Function mergeViewData

source/RenderGraph/FrameGraph.cpp:22–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20 namespace fgph
21 {
22 static void mergeViewData( ImageViewId const & view
23 , bool mergeMipLevels
24 , bool mergeArrayLayers
25 , ImageViewData & data )
26 {
27 if ( data.image.id == 0 )
28 {
29 data.image = view.data->image;
30 data.name = data.image.data->name;
31 data.info.flags = view.data->info.flags;
32 data.info.format = view.data->info.format;
33 data.info.viewType = view.data->info.viewType;
34 data.info.subresourceRange = getSubresourceRange( view );
35 }
36 else
37 {
38 assert( data.image == view.data->image );
39
40 if ( mergeMipLevels )
41 {
42 auto maxLevel = std::max( data.info.subresourceRange.levelCount + data.info.subresourceRange.baseMipLevel
43 , getSubresourceRange( view ).levelCount + getSubresourceRange( view ).baseMipLevel );
44 data.info.subresourceRange.baseMipLevel = std::min( getSubresourceRange( view ).baseMipLevel
45 , data.info.subresourceRange.baseMipLevel );
46 data.info.subresourceRange.levelCount = maxLevel - data.info.subresourceRange.baseMipLevel;
47 }
48 else
49 {
50 data.info.subresourceRange.baseMipLevel = std::min( getSubresourceRange( view ).baseMipLevel
51 , data.info.subresourceRange.baseMipLevel );
52 data.info.subresourceRange.levelCount = 1u;
53 }
54
55 if ( mergeArrayLayers )
56 {
57 auto maxLayer = std::max( data.info.subresourceRange.layerCount + data.info.subresourceRange.baseArrayLayer
58 , getSubresourceRange( view ).layerCount + getSubresourceRange( view ).baseArrayLayer );
59 data.info.subresourceRange.baseArrayLayer = std::min( getSubresourceRange( view ).baseArrayLayer
60 , data.info.subresourceRange.baseArrayLayer );
61 data.info.subresourceRange.layerCount = maxLayer - data.info.subresourceRange.baseArrayLayer;
62 }
63 else
64 {
65 data.info.subresourceRange.baseArrayLayer = std::min( getSubresourceRange( view ).baseArrayLayer
66 , data.info.subresourceRange.baseArrayLayer );
67 data.info.subresourceRange.layerCount = 1u;
68 }
69 }
70
71 data.source.push_back( view );
72 }
73
74 static void mergeViewData( BufferViewId const & view
75 , BufferViewData & data )

Callers 1

mergeViewsMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected