anv: Use isl to fill buffer surface states
This commit is contained in:
@@ -1697,24 +1697,12 @@ anv_fill_buffer_surface_state(struct anv_device *device, struct anv_state state,
|
|||||||
enum isl_format format,
|
enum isl_format format,
|
||||||
uint32_t offset, uint32_t range, uint32_t stride)
|
uint32_t offset, uint32_t range, uint32_t stride)
|
||||||
{
|
{
|
||||||
switch (device->info.gen) {
|
isl_buffer_fill_state(&device->isl_dev, state.map,
|
||||||
case 7:
|
.address = offset,
|
||||||
if (device->info.is_haswell)
|
.mocs = device->default_mocs,
|
||||||
gen75_fill_buffer_surface_state(state.map, format, offset, range,
|
.size = range,
|
||||||
stride);
|
.format = format,
|
||||||
else
|
.stride = stride);
|
||||||
gen7_fill_buffer_surface_state(state.map, format, offset, range,
|
|
||||||
stride);
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
gen8_fill_buffer_surface_state(state.map, format, offset, range, stride);
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
gen9_fill_buffer_surface_state(state.map, format, offset, range, stride);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
unreachable("unsupported gen\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!device->info.has_llc)
|
if (!device->info.has_llc)
|
||||||
anv_state_clflush(state);
|
anv_state_clflush(state);
|
||||||
|
@@ -63,37 +63,6 @@ genX(init_device_state)(struct anv_device *device)
|
|||||||
return anv_device_submit_simple_batch(device, &batch);
|
return anv_device_submit_simple_batch(device, &batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
genX(fill_buffer_surface_state)(void *state, enum isl_format format,
|
|
||||||
uint32_t offset, uint32_t range,
|
|
||||||
uint32_t stride)
|
|
||||||
{
|
|
||||||
uint32_t num_elements = range / stride;
|
|
||||||
|
|
||||||
struct GENX(RENDER_SURFACE_STATE) surface_state = {
|
|
||||||
.SurfaceType = SURFTYPE_BUFFER,
|
|
||||||
.SurfaceFormat = format,
|
|
||||||
.SurfaceVerticalAlignment = VALIGN_4,
|
|
||||||
.SurfaceHorizontalAlignment = HALIGN_4,
|
|
||||||
.TiledSurface = false,
|
|
||||||
.RenderCacheReadWriteMode = false,
|
|
||||||
.SurfaceObjectControlState = GENX(MOCS),
|
|
||||||
.Height = ((num_elements - 1) >> 7) & 0x3fff,
|
|
||||||
.Width = (num_elements - 1) & 0x7f,
|
|
||||||
.Depth = ((num_elements - 1) >> 21) & 0x3f,
|
|
||||||
.SurfacePitch = stride - 1,
|
|
||||||
# if (GEN_IS_HASWELL)
|
|
||||||
.ShaderChannelSelectRed = SCS_RED,
|
|
||||||
.ShaderChannelSelectGreen = SCS_GREEN,
|
|
||||||
.ShaderChannelSelectBlue = SCS_BLUE,
|
|
||||||
.ShaderChannelSelectAlpha = SCS_ALPHA,
|
|
||||||
# endif
|
|
||||||
.SurfaceBaseAddress = { NULL, offset },
|
|
||||||
};
|
|
||||||
|
|
||||||
GENX(RENDER_SURFACE_STATE_pack)(NULL, state, &surface_state);
|
|
||||||
}
|
|
||||||
|
|
||||||
VkResult genX(CreateSampler)(
|
VkResult genX(CreateSampler)(
|
||||||
VkDevice _device,
|
VkDevice _device,
|
||||||
const VkSamplerCreateInfo* pCreateInfo,
|
const VkSamplerCreateInfo* pCreateInfo,
|
||||||
|
@@ -139,38 +139,6 @@ genX(init_device_state)(struct anv_device *device)
|
|||||||
return anv_device_submit_simple_batch(device, &batch);
|
return anv_device_submit_simple_batch(device, &batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
genX(fill_buffer_surface_state)(void *state, enum isl_format format,
|
|
||||||
uint32_t offset, uint32_t range, uint32_t stride)
|
|
||||||
{
|
|
||||||
uint32_t num_elements = range / stride;
|
|
||||||
|
|
||||||
struct GENX(RENDER_SURFACE_STATE) surface_state = {
|
|
||||||
.SurfaceType = SURFTYPE_BUFFER,
|
|
||||||
.SurfaceArray = false,
|
|
||||||
.SurfaceFormat = format,
|
|
||||||
.SurfaceVerticalAlignment = VALIGN4,
|
|
||||||
.SurfaceHorizontalAlignment = HALIGN4,
|
|
||||||
.TileMode = LINEAR,
|
|
||||||
.SamplerL2BypassModeDisable = true,
|
|
||||||
.RenderCacheReadWriteMode = WriteOnlyCache,
|
|
||||||
.MemoryObjectControlState = GENX(MOCS),
|
|
||||||
.Height = ((num_elements - 1) >> 7) & 0x3fff,
|
|
||||||
.Width = (num_elements - 1) & 0x7f,
|
|
||||||
.Depth = ((num_elements - 1) >> 21) & 0x3f,
|
|
||||||
.SurfacePitch = stride - 1,
|
|
||||||
.NumberofMultisamples = MULTISAMPLECOUNT_1,
|
|
||||||
.ShaderChannelSelectRed = SCS_RED,
|
|
||||||
.ShaderChannelSelectGreen = SCS_GREEN,
|
|
||||||
.ShaderChannelSelectBlue = SCS_BLUE,
|
|
||||||
.ShaderChannelSelectAlpha = SCS_ALPHA,
|
|
||||||
/* FIXME: We assume that the image must be bound at this time. */
|
|
||||||
.SurfaceBaseAddress = { NULL, offset },
|
|
||||||
};
|
|
||||||
|
|
||||||
GENX(RENDER_SURFACE_STATE_pack)(NULL, state, &surface_state);
|
|
||||||
}
|
|
||||||
|
|
||||||
VkResult genX(CreateSampler)(
|
VkResult genX(CreateSampler)(
|
||||||
VkDevice _device,
|
VkDevice _device,
|
||||||
const VkSamplerCreateInfo* pCreateInfo,
|
const VkSamplerCreateInfo* pCreateInfo,
|
||||||
|
Reference in New Issue
Block a user