drm/vmwgfx: Update otable definitions
Update otable definitions and modify the otable setup code accordingly. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
This commit is contained in:
parent
0fd53cfb09
commit
7cba9062e6
|
@ -1938,6 +1938,7 @@ typedef enum SVGAMobFormat {
|
|||
#define SVGA3D_OTABLE_CONTEXT_ENTRY_SIZE 8
|
||||
#define SVGA3D_OTABLE_SURFACE_ENTRY_SIZE 64
|
||||
#define SVGA3D_OTABLE_SHADER_ENTRY_SIZE 16
|
||||
#define SVGA3D_OTABLE_SCREEN_TARGET_ENTRY_SIZE 64
|
||||
#define SVGA3D_CONTEXT_DATA_SIZE 16384
|
||||
|
||||
/*
|
||||
|
@ -1948,11 +1949,14 @@ typedef enum SVGAMobFormat {
|
|||
*/
|
||||
|
||||
typedef enum {
|
||||
SVGA_OTABLE_MOB = 0,
|
||||
SVGA_OTABLE_SURFACE = 1,
|
||||
SVGA_OTABLE_CONTEXT = 2,
|
||||
SVGA_OTABLE_SHADER = 3,
|
||||
SVGA_OTABLE_COUNT = 4,
|
||||
SVGA_OTABLE_MOB = 0,
|
||||
SVGA_OTABLE_MIN = 0,
|
||||
SVGA_OTABLE_SURFACE = 1,
|
||||
SVGA_OTABLE_CONTEXT = 2,
|
||||
SVGA_OTABLE_SHADER = 3,
|
||||
SVGA_OTABLE_SCREEN_TARGET = 4,
|
||||
SVGA_OTABLE_DX9_MAX = 5,
|
||||
SVGA_OTABLE_MAX = 8
|
||||
} SVGAOTableType;
|
||||
|
||||
typedef
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
#define VMWGFX_MAX_VALIDATIONS 2048
|
||||
#define VMWGFX_MAX_DISPLAYS 16
|
||||
#define VMWGFX_CMD_BOUNCE_INIT_SIZE 32768
|
||||
#define VMWGFX_ENABLE_SCREEN_TARGET_OTABLE 0
|
||||
|
||||
/*
|
||||
* Perhaps we should have sysfs entries for these.
|
||||
|
@ -57,9 +58,11 @@
|
|||
#define VMWGFX_NUM_GB_CONTEXT 256
|
||||
#define VMWGFX_NUM_GB_SHADER 20000
|
||||
#define VMWGFX_NUM_GB_SURFACE 32768
|
||||
#define VMWGFX_NUM_GB_SCREEN_TARGET VMWGFX_MAX_DISPLAYS
|
||||
#define VMWGFX_NUM_MOB (VMWGFX_NUM_GB_CONTEXT +\
|
||||
VMWGFX_NUM_GB_SHADER +\
|
||||
VMWGFX_NUM_GB_SURFACE)
|
||||
VMWGFX_NUM_GB_SURFACE +\
|
||||
VMWGFX_NUM_GB_SCREEN_TARGET)
|
||||
|
||||
#define VMW_PL_GMR TTM_PL_PRIV0
|
||||
#define VMW_PL_FLAG_GMR TTM_PL_FLAG_PRIV0
|
||||
|
|
|
@ -27,6 +27,12 @@
|
|||
|
||||
#include "vmwgfx_drv.h"
|
||||
|
||||
/*
|
||||
* If we set up the screen target otable, screen objects stop working.
|
||||
*/
|
||||
|
||||
#define VMW_OTABLE_SETUP_SUB ((VMWGFX_ENABLE_SCREEN_TARGET_OTABLE) ? 0 : 1)
|
||||
|
||||
/*
|
||||
* Currently the MOB interface does not support 64-bit page frame numbers.
|
||||
* This might change in the future to be similar to the GMR2 interface
|
||||
|
@ -214,7 +220,7 @@ int vmw_otables_setup(struct vmw_private *dev_priv)
|
|||
SVGAOTableType i;
|
||||
int ret;
|
||||
|
||||
otables = kzalloc(SVGA_OTABLE_COUNT * sizeof(*otables),
|
||||
otables = kzalloc(SVGA_OTABLE_DX9_MAX * sizeof(*otables),
|
||||
GFP_KERNEL);
|
||||
if (unlikely(otables == NULL)) {
|
||||
DRM_ERROR("Failed to allocate space for otable "
|
||||
|
@ -230,9 +236,12 @@ int vmw_otables_setup(struct vmw_private *dev_priv)
|
|||
VMWGFX_NUM_GB_CONTEXT * SVGA3D_OTABLE_CONTEXT_ENTRY_SIZE;
|
||||
otables[SVGA_OTABLE_SHADER].size =
|
||||
VMWGFX_NUM_GB_SHADER * SVGA3D_OTABLE_SHADER_ENTRY_SIZE;
|
||||
otables[SVGA_OTABLE_SCREEN_TARGET].size =
|
||||
VMWGFX_NUM_GB_SCREEN_TARGET *
|
||||
SVGA3D_OTABLE_SCREEN_TARGET_ENTRY_SIZE;
|
||||
|
||||
bo_size = 0;
|
||||
for (i = 0; i < SVGA_OTABLE_COUNT; ++i) {
|
||||
for (i = 0; i < SVGA_OTABLE_DX9_MAX; ++i) {
|
||||
otables[i].size =
|
||||
(otables[i].size + PAGE_SIZE - 1) & PAGE_MASK;
|
||||
bo_size += otables[i].size;
|
||||
|
@ -259,7 +268,7 @@ int vmw_otables_setup(struct vmw_private *dev_priv)
|
|||
ttm_bo_unreserve(dev_priv->otable_bo);
|
||||
|
||||
offset = 0;
|
||||
for (i = 0; i < SVGA_OTABLE_COUNT; ++i) {
|
||||
for (i = 0; i < SVGA_OTABLE_DX9_MAX - VMW_OTABLE_SETUP_SUB; ++i) {
|
||||
ret = vmw_setup_otable_base(dev_priv, i, offset,
|
||||
&otables[i]);
|
||||
if (unlikely(ret != 0))
|
||||
|
@ -273,7 +282,7 @@ int vmw_otables_setup(struct vmw_private *dev_priv)
|
|||
out_unreserve:
|
||||
ttm_bo_unreserve(dev_priv->otable_bo);
|
||||
out_no_setup:
|
||||
for (i = 0; i < SVGA_OTABLE_COUNT; ++i)
|
||||
for (i = 0; i < SVGA_OTABLE_DX9_MAX - VMW_OTABLE_SETUP_SUB; ++i)
|
||||
vmw_takedown_otable_base(dev_priv, i, &otables[i]);
|
||||
|
||||
ttm_bo_unref(&dev_priv->otable_bo);
|
||||
|
@ -296,7 +305,7 @@ void vmw_otables_takedown(struct vmw_private *dev_priv)
|
|||
struct ttm_buffer_object *bo = dev_priv->otable_bo;
|
||||
int ret;
|
||||
|
||||
for (i = 0; i < SVGA_OTABLE_COUNT; ++i)
|
||||
for (i = 0; i < SVGA_OTABLE_DX9_MAX - VMW_OTABLE_SETUP_SUB; ++i)
|
||||
vmw_takedown_otable_base(dev_priv, i,
|
||||
&dev_priv->otables[i]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue