drm: etnaviv: clean up vram_mapping submission/retire path
Currently, we scan the list of mappings each time we want to operate on the vram_mapping struct. Rather than repeatedly scanning these, look them up once in the submission path, and then use _reference and _unreference methods as necessary to manage this object. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
This commit is contained in:

committed by
Lucas Stach

parent
41db12df64
commit
b6325f4099
@@ -102,6 +102,7 @@ struct etnaviv_gem_submit {
|
||||
struct {
|
||||
u32 flags;
|
||||
struct etnaviv_gem_object *obj;
|
||||
struct etnaviv_vram_mapping *mapping;
|
||||
u32 iova;
|
||||
} bos[0];
|
||||
};
|
||||
@@ -115,4 +116,9 @@ int etnaviv_gem_obj_add(struct drm_device *dev, struct drm_gem_object *obj);
|
||||
struct page **etnaviv_gem_get_pages(struct etnaviv_gem_object *obj);
|
||||
void etnaviv_gem_put_pages(struct etnaviv_gem_object *obj);
|
||||
|
||||
struct etnaviv_vram_mapping *etnaviv_gem_mapping_get(
|
||||
struct drm_gem_object *obj, struct etnaviv_gpu *gpu);
|
||||
void etnaviv_gem_mapping_reference(struct etnaviv_vram_mapping *mapping);
|
||||
void etnaviv_gem_mapping_unreference(struct etnaviv_vram_mapping *mapping);
|
||||
|
||||
#endif /* __ETNAVIV_GEM_H__ */
|
||||
|
Reference in New Issue
Block a user