2014-07-24 20:04:10 +04:00
/*
* Copyright © 2014 Intel Corporation
*
* 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 , sublicense ,
* 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 NONINFRINGEMENT . IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS 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 .
*/
# ifndef _INTEL_LRC_H_
# define _INTEL_LRC_H_
2014-07-24 20:04:22 +04:00
/* Logical Rings */
void intel_logical_ring_stop ( struct intel_engine_cs * ring ) ;
void intel_logical_ring_cleanup ( struct intel_engine_cs * ring ) ;
int intel_logical_rings_init ( struct drm_device * dev ) ;
2014-07-24 20:04:29 +04:00
int logical_ring_flush_all_caches ( struct intel_ringbuffer * ringbuf ) ;
2014-07-24 20:04:26 +04:00
void intel_logical_ring_advance_and_submit ( struct intel_ringbuffer * ringbuf ) ;
static inline void intel_logical_ring_advance ( struct intel_ringbuffer * ringbuf )
{
ringbuf - > tail & = ringbuf - > size - 1 ;
}
static inline void intel_logical_ring_emit ( struct intel_ringbuffer * ringbuf ,
u32 data )
{
iowrite32 ( data , ringbuf - > virtual_start + ringbuf - > tail ) ;
ringbuf - > tail + = 4 ;
}
int intel_logical_ring_begin ( struct intel_ringbuffer * ringbuf , int num_dwords ) ;
2014-07-24 20:04:12 +04:00
/* Logical Ring Contexts */
void intel_lr_context_free ( struct intel_context * ctx ) ;
int intel_lr_context_deferred_create ( struct intel_context * ctx ,
struct intel_engine_cs * ring ) ;
2014-07-24 20:04:11 +04:00
/* Execlists */
int intel_sanitize_enable_execlists ( struct drm_device * dev , int enable_execlists ) ;
2014-07-24 20:04:22 +04:00
int intel_execlists_submission ( struct drm_device * dev , struct drm_file * file ,
struct intel_engine_cs * ring ,
struct intel_context * ctx ,
struct drm_i915_gem_execbuffer2 * args ,
struct list_head * vmas ,
struct drm_i915_gem_object * batch_obj ,
u64 exec_start , u32 flags ) ;
2014-07-24 20:04:36 +04:00
u32 intel_execlists_ctx_id ( struct drm_i915_gem_object * ctx_obj ) ;
2014-07-24 20:04:11 +04:00
2014-07-24 20:04:38 +04:00
struct intel_ctx_submit_request {
struct intel_context * ctx ;
struct intel_engine_cs * ring ;
u32 tail ;
struct list_head execlist_link ;
} ;
2014-07-24 20:04:10 +04:00
# endif /* _INTEL_LRC_H_ */