You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Fixes RenderingDevice::get_driver_resource will crash or give incorrect result with certain resources
This commit is contained in:
@@ -5224,8 +5224,12 @@ uint64_t RenderingDevice::get_driver_resource(DriverResource p_resource, RID p_r
|
||||
case DRIVER_RESOURCE_LOGICAL_DEVICE:
|
||||
case DRIVER_RESOURCE_PHYSICAL_DEVICE:
|
||||
case DRIVER_RESOURCE_TOPMOST_OBJECT:
|
||||
break;
|
||||
case DRIVER_RESOURCE_COMMAND_QUEUE:
|
||||
driver_id = main_queue.id;
|
||||
break;
|
||||
case DRIVER_RESOURCE_QUEUE_FAMILY:
|
||||
driver_id = main_queue_family.id;
|
||||
break;
|
||||
case DRIVER_RESOURCE_TEXTURE:
|
||||
case DRIVER_RESOURCE_TEXTURE_VIEW:
|
||||
@@ -5233,19 +5237,19 @@ uint64_t RenderingDevice::get_driver_resource(DriverResource p_resource, RID p_r
|
||||
Texture *tex = texture_owner.get_or_null(p_rid);
|
||||
ERR_FAIL_NULL_V(tex, 0);
|
||||
|
||||
driver_id = tex->driver_id;
|
||||
driver_id = tex->driver_id.id;
|
||||
} break;
|
||||
case DRIVER_RESOURCE_SAMPLER: {
|
||||
RDD::SamplerID *sampler_driver_id = sampler_owner.get_or_null(p_rid);
|
||||
ERR_FAIL_NULL_V(sampler_driver_id, 0);
|
||||
|
||||
driver_id = *sampler_driver_id;
|
||||
driver_id = (*sampler_driver_id).id;
|
||||
} break;
|
||||
case DRIVER_RESOURCE_UNIFORM_SET: {
|
||||
UniformSet *uniform_set = uniform_set_owner.get_or_null(p_rid);
|
||||
ERR_FAIL_NULL_V(uniform_set, 0);
|
||||
|
||||
driver_id = uniform_set->driver_id;
|
||||
driver_id = uniform_set->driver_id.id;
|
||||
} break;
|
||||
case DRIVER_RESOURCE_BUFFER: {
|
||||
Buffer *buffer = nullptr;
|
||||
@@ -5262,19 +5266,19 @@ uint64_t RenderingDevice::get_driver_resource(DriverResource p_resource, RID p_r
|
||||
}
|
||||
ERR_FAIL_NULL_V(buffer, 0);
|
||||
|
||||
driver_id = buffer->driver_id;
|
||||
driver_id = buffer->driver_id.id;
|
||||
} break;
|
||||
case DRIVER_RESOURCE_COMPUTE_PIPELINE: {
|
||||
ComputePipeline *compute_pipeline = compute_pipeline_owner.get_or_null(p_rid);
|
||||
ERR_FAIL_NULL_V(compute_pipeline, 0);
|
||||
|
||||
driver_id = compute_pipeline->driver_id;
|
||||
driver_id = compute_pipeline->driver_id.id;
|
||||
} break;
|
||||
case DRIVER_RESOURCE_RENDER_PIPELINE: {
|
||||
RenderPipeline *render_pipeline = render_pipeline_owner.get_or_null(p_rid);
|
||||
ERR_FAIL_NULL_V(render_pipeline, 0);
|
||||
|
||||
driver_id = render_pipeline->driver_id;
|
||||
driver_id = render_pipeline->driver_id.id;
|
||||
} break;
|
||||
default: {
|
||||
ERR_FAIL_V(0);
|
||||
|
||||
Reference in New Issue
Block a user