Skip to content

Commit 0ffd1ba

Browse files
committed
fix debug assert by adding
RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ
1 parent 03ff323 commit 0ffd1ba

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

servers/rendering/rendering_device.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1898,6 +1898,9 @@ uint32_t RenderingDevice::_texture_vrs_method_to_usage_bits() const {
18981898
return RDD::TEXTURE_USAGE_VRS_FRAGMENT_SHADING_RATE_BIT;
18991899
case VRS_METHOD_FRAGMENT_DENSITY_MAP:
19001900
return RDD::TEXTURE_USAGE_VRS_FRAGMENT_DENSITY_MAP_BIT;
1901+
case VRS_METHOD_RASTERIZATION_RATE_MAP:
1902+
// Currently no special usage is needed for rasterization rate map
1903+
return 0;
19011904
default:
19021905
return 0;
19031906
}
@@ -2719,6 +2722,8 @@ RDG::ResourceUsage RenderingDevice::_vrs_usage_from_method(VRSMethod p_method) {
27192722
return RDG::RESOURCE_USAGE_ATTACHMENT_FRAGMENT_SHADING_RATE_READ;
27202723
case VRS_METHOD_FRAGMENT_DENSITY_MAP:
27212724
return RDG::RESOURCE_USAGE_ATTACHMENT_FRAGMENT_DENSITY_MAP_READ;
2725+
case VRS_METHOD_RASTERIZATION_RATE_MAP:
2726+
return RDG::RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ;
27222727
default:
27232728
return RDG::RESOURCE_USAGE_NONE;
27242729
}
@@ -2730,6 +2735,9 @@ RDD::PipelineStageBits RenderingDevice::_vrs_stages_from_method(VRSMethod p_meth
27302735
return RDD::PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT;
27312736
case VRS_METHOD_FRAGMENT_DENSITY_MAP:
27322737
return RDD::PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT;
2738+
case VRS_METHOD_RASTERIZATION_RATE_MAP:
2739+
// Rasterization rate does not need barrier. It's not a texture. It's readonly in shader.
2740+
return RDD::PipelineStageBits(0);
27332741
default:
27342742
return RDD::PipelineStageBits(0);
27352743
}
@@ -2741,6 +2749,10 @@ RDD::TextureLayout RenderingDevice::_vrs_layout_from_method(VRSMethod p_method)
27412749
return RDD::TEXTURE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL;
27422750
case VRS_METHOD_FRAGMENT_DENSITY_MAP:
27432751
return RDD::TEXTURE_LAYOUT_FRAGMENT_DENSITY_MAP_ATTACHMENT_OPTIMAL;
2752+
case VRS_METHOD_RASTERIZATION_RATE_MAP:
2753+
// Rasterization rate does not need layout transform. It's not a texture. It's readonly in shader.
2754+
// Keep its layout UNDEFINED
2755+
return RDD::TEXTURE_LAYOUT_UNDEFINED;
27442756
default:
27452757
return RDD::TEXTURE_LAYOUT_UNDEFINED;
27462758
}
@@ -2767,7 +2779,7 @@ void RenderingDevice::_vrs_detect_method() {
27672779
vrs_texel_size = Vector2i(32, 32).clamp(fdm_capabilities.min_texel_size, fdm_capabilities.max_texel_size);
27682780
break;
27692781
case VRS_METHOD_RASTERIZATION_RATE_MAP:
2770-
// Rasterization rate map is not a real texture. It's a special opaque object constains screen space distortion metadata.
2782+
// Rasterization rate map is not a real texture. It's a special opaque object contains screen space distortion metadata.
27712783
// For the sake of consistancy with other APIs, we wrap it as a texture.
27722784
vrs_format = DATA_FORMAT_R8_UINT;
27732785
vrs_texel_size = Vector2i(16, 16);

servers/rendering/rendering_device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ class RenderingDevice : public RenderingDeviceCommons {
244244
CALLBACK_RESOURCE_USAGE_ATTACHMENT_DEPTH_STENCIL_READ_WRITE,
245245
CALLBACK_RESOURCE_USAGE_ATTACHMENT_FRAGMENT_SHADING_RATE_READ,
246246
CALLBACK_RESOURCE_USAGE_ATTACHMENT_FRAGMENT_DENSITY_MAP_READ,
247+
CALLBACK_RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ,
247248
CALLBACK_RESOURCE_USAGE_GENERAL,
248249
CALLBACK_RESOURCE_USAGE_MAX
249250
};

servers/rendering/rendering_device_graph.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ bool RenderingDeviceGraph::_is_write_usage(ResourceUsage p_usage) {
102102
case RESOURCE_USAGE_STORAGE_IMAGE_READ:
103103
case RESOURCE_USAGE_ATTACHMENT_FRAGMENT_SHADING_RATE_READ:
104104
case RESOURCE_USAGE_ATTACHMENT_FRAGMENT_DENSITY_MAP_READ:
105+
case RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ:
105106
return false;
106107
case RESOURCE_USAGE_COPY_TO:
107108
case RESOURCE_USAGE_RESOLVE_TO:
@@ -141,6 +142,10 @@ RDD::TextureLayout RenderingDeviceGraph::_usage_to_image_layout(ResourceUsage p_
141142
return RDD::TEXTURE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL;
142143
case RESOURCE_USAGE_ATTACHMENT_FRAGMENT_DENSITY_MAP_READ:
143144
return RDD::TEXTURE_LAYOUT_FRAGMENT_DENSITY_MAP_ATTACHMENT_OPTIMAL;
145+
case RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ:
146+
// Rasterization rate does not need layout transform. It's not a texture. It's readonly in shader.
147+
// Keep its layout UNDEFINED
148+
return RDD::TEXTURE_LAYOUT_UNDEFINED;
144149
case RESOURCE_USAGE_GENERAL:
145150
return RDD::TEXTURE_LAYOUT_GENERAL;
146151
case RESOURCE_USAGE_NONE:
@@ -191,6 +196,9 @@ RDD::BarrierAccessBits RenderingDeviceGraph::_usage_to_access_bits(ResourceUsage
191196
return RDD::BARRIER_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT;
192197
case RESOURCE_USAGE_ATTACHMENT_FRAGMENT_DENSITY_MAP_READ:
193198
return RDD::BARRIER_ACCESS_FRAGMENT_DENSITY_MAP_ATTACHMENT_READ_BIT;
199+
case RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ:
200+
// Rasterization rate does not need barrier. It's not a texture. It's readonly in shader.
201+
return RDD::BarrierAccessBits(0);
194202
case RESOURCE_USAGE_GENERAL:
195203
return RDD::BarrierAccessBits(RDD::BARRIER_ACCESS_MEMORY_READ_BIT | RDD::BARRIER_ACCESS_MEMORY_WRITE_BIT);
196204
default:

servers/rendering/rendering_device_graph.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ class RenderingDeviceGraph {
150150
RESOURCE_USAGE_ATTACHMENT_DEPTH_STENCIL_READ_WRITE,
151151
RESOURCE_USAGE_ATTACHMENT_FRAGMENT_SHADING_RATE_READ,
152152
RESOURCE_USAGE_ATTACHMENT_FRAGMENT_DENSITY_MAP_READ,
153+
RESOURCE_USAGE_ATTACHMENT_RASTERIZATION_RATE_MAP_READ,
153154
RESOURCE_USAGE_GENERAL,
154155
RESOURCE_USAGE_MAX
155156
};

0 commit comments

Comments
 (0)