X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fintel_screen.h;h=41e1dbdd4e93cb2b680cfd01a4f0cc8615cfaca1;hb=3218056e0eb375eeda470058d06add1532acd6d4;hp=9d6c9dedbfe93399bf39d2946bce48e3cdb62a7c;hpb=e3a6e60040b7f6ea7965e52f8f9881ed31e0347c;p=mesa.git diff --git a/src/mesa/drivers/dri/i965/intel_screen.h b/src/mesa/drivers/dri/i965/intel_screen.h index 9d6c9dedbfe..41e1dbdd4e9 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.h +++ b/src/mesa/drivers/dri/i965/intel_screen.h @@ -1,134 +1,179 @@ -/************************************************************************** - * - * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. +/* + * Copyright 2003 VMware, Inc. * 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 + * 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL VMWARE 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. - * - **************************************************************************/ + */ #ifndef _INTEL_INIT_H_ #define _INTEL_INIT_H_ +#include #include + +#include + +#include "isl/isl.h" #include "dri_util.h" -#include "dri_bufmgr.h" -#include "xmlconfig.h" -#include "i830_common.h" +#include "brw_bufmgr.h" +#include "common/gen_device_info.h" +#include "i915_drm.h" +#include "util/xmlconfig.h" -/* XXX: change name or eliminate to avoid conflict with "struct - * intel_region"!!! - */ -typedef struct { - drm_handle_t handle; - drmSize size; /* region size in bytes */ - char *map; /* memory map */ - int offset; /* from start of video mem, in bytes */ - int pitch; /* row stride, in pixels */ - unsigned int bo_handle; - unsigned int tiled; -} intelRegion; - -typedef struct -{ - intelRegion front; - intelRegion back; - intelRegion rotated; - intelRegion depth; - intelRegion tex; +#include "isl/isl.h" - struct intel_region *front_region; - struct intel_region *back_region; - struct intel_region *depth_region; - struct intel_region *rotated_region; +#ifdef __cplusplus +extern "C" { +#endif +struct intel_screen +{ int deviceID; - int width; - int height; - int mem; /* unused */ + struct gen_device_info devinfo; + + __DRIscreen *driScrnPriv; + + uint64_t max_gtt_map_object_size; - int cpp; /* for front and back buffers */ - int fbFormat; + /** Bytes of aperture usage beyond which execbuf is likely to fail. */ + uint64_t aperture_threshold; - int logTextureGranularity; - - __DRIscreenPrivate *driScrnPriv; - unsigned int sarea_priv_offset; + bool no_hw; + bool hw_has_swizzling; + bool has_exec_fence; /**< I915_PARAM_HAS_EXEC_FENCE */ - int drmMinor; + int hw_has_timestamp; - int irq_active; - int allow_batchbuffer; + struct isl_device isl_dev; -/* struct matrix23 rotMatrix; */ + /** + * Does the kernel support context reset notifications? + */ + bool has_context_reset_notification; - int current_rotation; /* 0, 90, 180 or 270 */ - int rotatedWidth, rotatedHeight; + /** + * Does the kernel support features such as pipelined register access to + * specific registers? + */ + unsigned kernel_features; +#define KERNEL_ALLOWS_SOL_OFFSET_WRITES (1<<0) +#define KERNEL_ALLOWS_PREDICATE_WRITES (1<<1) +#define KERNEL_ALLOWS_MI_MATH_AND_LRR (1<<2) +#define KERNEL_ALLOWS_HSW_SCRATCH1_AND_ROW_CHICKEN3 (1<<3) +#define KERNEL_ALLOWS_COMPUTE_DISPATCH (1<<4) +#define KERNEL_ALLOWS_EXEC_CAPTURE (1<<5) +#define KERNEL_ALLOWS_EXEC_BATCH_FIRST (1<<6) - GLboolean no_hw; + struct brw_bufmgr *bufmgr; /** - * Configuration cache with default values for all contexts + * A unique ID for shader programs. */ + unsigned program_id; + + int winsys_msaa_samples_override; + + struct brw_compiler *compiler; + + /** + * Configuration cache with default values for all contexts + */ driOptionCache optionCache; - dri_bufmgr *bufmgr; - unsigned int maxBatchSize; + /** + * Version of the command parser reported by the + * I915_PARAM_CMD_PARSER_VERSION parameter + */ + int cmd_parser_version; /** - * This value indicates that the kernel memory manager is being used - * instead of the fake client-side memory manager. + * Number of subslices reported by the I915_PARAM_SUBSLICE_TOTAL parameter */ - GLboolean ttm; + int subslice_total; + + /** + * Number of EUs reported by the I915_PARAM_EU_TOTAL parameter + */ + int eu_total; + + bool mesa_format_supports_texture[MESA_FORMAT_COUNT]; + bool mesa_format_supports_render[MESA_FORMAT_COUNT]; + enum isl_format mesa_to_isl_render_format[MESA_FORMAT_COUNT]; +}; - unsigned batch_id; -} intelScreenPrivate; +extern void intelDestroyContext(__DRIcontext * driContextPriv); +extern GLboolean intelUnbindContext(__DRIcontext * driContextPriv); + +PUBLIC const __DRIextension **__driDriverGetExtensions_i965(void); +extern const __DRI2fenceExtension intelFenceExtension; extern GLboolean -intelMapScreenRegions(__DRIscreenPrivate *sPriv); +intelMakeCurrent(__DRIcontext * driContextPriv, + __DRIdrawable * driDrawPriv, + __DRIdrawable * driReadPriv); -extern void -intelUnmapScreenRegions(intelScreenPrivate *intelScreen); +double get_time(void); -extern void -intelUpdateScreenFromSAREA(intelScreenPrivate *intelScreen, - volatile drmI830Sarea *sarea); +const int* +intel_supported_msaa_modes(const struct intel_screen *screen); -extern void -intelDestroyContext(__DRIcontextPrivate *driContextPriv); +static inline bool +can_do_pipelined_register_writes(const struct intel_screen *screen) +{ + return screen->kernel_features & KERNEL_ALLOWS_SOL_OFFSET_WRITES; +} -extern GLboolean -intelUnbindContext(__DRIcontextPrivate *driContextPriv); +static inline bool +can_do_hsw_l3_atomics(const struct intel_screen *screen) +{ + return screen->kernel_features & KERNEL_ALLOWS_HSW_SCRATCH1_AND_ROW_CHICKEN3; +} -extern GLboolean -intelMakeCurrent(__DRIcontextPrivate *driContextPriv, - __DRIdrawablePrivate *driDrawPriv, - __DRIdrawablePrivate *driReadPriv); +static inline bool +can_do_mi_math_and_lrr(const struct intel_screen *screen) +{ + return screen->kernel_features & KERNEL_ALLOWS_MI_MATH_AND_LRR; +} + +static inline bool +can_do_compute_dispatch(const struct intel_screen *screen) +{ + return screen->kernel_features & KERNEL_ALLOWS_COMPUTE_DISPATCH; +} -extern void -intelSwapBuffers(__DRIdrawablePrivate *dPriv); +static inline bool +can_do_predicate_writes(const struct intel_screen *screen) +{ + return screen->kernel_features & KERNEL_ALLOWS_PREDICATE_WRITES; +} + +static inline bool +can_do_exec_capture(const struct intel_screen *screen) +{ + return screen->kernel_features & KERNEL_ALLOWS_EXEC_CAPTURE; +} -extern void -intelCopySubBuffer( __DRIdrawablePrivate *dPriv, - int x, int y, int w, int h ); +#ifdef __cplusplus +} +#endif #endif