Skip to content
Snippets Groups Projects
Select Git revision
  • v4l2-request-ext-sps-rps-n7.1
1 result

Changelog

Blame
  • vmwgfx_execbuf.c 79.12 KiB
    /**************************************************************************
     *
     * Copyright © 2009 VMware, Inc., Palo Alto, CA., USA
     * All Rights Reserved.
     *
     * Permission is hereby granted, free of charge, to any person obtaining a
     * copy of this software and associated documentation files (the
     * "Software"), to deal in the Software without restriction, including
     * without limitation the rights to use, copy, modify, merge, publish,
     * distribute, sub license, and/or sell copies of the Software, and to
     * permit persons to whom the Software is furnished to do so, subject to
     * the following conditions:
     *
     * The above copyright notice and this permission notice (including the
     * next paragraph) shall be included in all copies or substantial portions
     * of the Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
     * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
     * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
     * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
     * USE OR OTHER DEALINGS IN THE SOFTWARE.
     *
     **************************************************************************/
    
    #include "vmwgfx_drv.h"
    #include "vmwgfx_reg.h"
    #include <drm/ttm/ttm_bo_api.h>
    #include <drm/ttm/ttm_placement.h>
    
    #define VMW_RES_HT_ORDER 12
    
    /**
     * struct vmw_resource_relocation - Relocation info for resources
     *
     * @head: List head for the software context's relocation list.
     * @res: Non-ref-counted pointer to the resource.
     * @offset: Offset of 4 byte entries into the command buffer where the
     * id that needs fixup is located.
     */
    struct vmw_resource_relocation {
    	struct list_head head;
    	const struct vmw_resource *res;
    	unsigned long offset;
    };
    
    /**
     * struct vmw_resource_val_node - Validation info for resources
     *
     * @head: List head for the software context's resource list.
     * @hash: Hash entry for quick resouce to val_node lookup.
     * @res: Ref-counted pointer to the resource.
     * @switch_backup: Boolean whether to switch backup buffer on unreserve.
     * @new_backup: Refcounted pointer to the new backup buffer.
     * @staged_bindings: If @res is a context, tracks bindings set up during
     * the command batch. Otherwise NULL.
     * @new_backup_offset: New backup buffer offset if @new_backup is non-NUll.
     * @first_usage: Set to true the first time the resource is referenced in
     * the command stream.
     * @no_buffer_needed: Resources do not need to allocate buffer backup on
     * reservation. The command stream will provide one.
     */
    struct vmw_resource_val_node {
    	struct list_head head;
    	struct drm_hash_item hash;
    	struct vmw_resource *res;
    	struct vmw_dma_buffer *new_backup;
    	struct vmw_ctx_binding_state *staged_bindings;