mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 21:39:10 -04:00
minor update
This commit is contained in:
parent
0920d1e745
commit
90a9325d6d
5 changed files with 847 additions and 808 deletions
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -41,7 +41,7 @@ static void show_usage() {
|
|||
|
||||
static void parse_args(int argc, char **argv) {
|
||||
int c;
|
||||
while ((c = getopt(argc, argv, "i:o:k:w:f:g:h?")) != -1) {
|
||||
while ((c = getopt(argc, argv, "zi:o:k:w:f:g:h?")) != -1) {
|
||||
switch (c) {
|
||||
case 'i':
|
||||
input_file = optarg;
|
||||
|
@ -56,7 +56,7 @@ static void parse_args(int argc, char **argv) {
|
|||
wrap = std::atoi(optarg);
|
||||
break;
|
||||
case 'z':
|
||||
use_sw = std::atoi(optarg);
|
||||
use_sw = true;
|
||||
break;
|
||||
case 'f': {
|
||||
format = std::atoi(optarg);
|
||||
|
@ -129,7 +129,7 @@ int run_test(const kernel_arg_t& kernel_arg,
|
|||
|
||||
// save output image
|
||||
std::cout << "save output image" << std::endl;
|
||||
dump_image(dst_pixels, width, height, bpp);
|
||||
//dump_image(dst_pixels, width, height, bpp);
|
||||
RT_CHECK(SaveTGA(output_file, dst_pixels, width, height, bpp));
|
||||
|
||||
return 0;
|
||||
|
@ -157,7 +157,7 @@ int main(int argc, char *argv[]) {
|
|||
RT_CHECK(ConvertImage(src_pixels, tmp_pixels, src_width, src_height, FORMAT_A8R8G8B8, eformat));
|
||||
src_bpp = Format::GetInfo(eformat).BytePerPixel;
|
||||
|
||||
dump_image(src_pixels, src_width, src_height, src_bpp);
|
||||
//dump_image(src_pixels, src_width, src_height, src_bpp);
|
||||
|
||||
uint32_t src_bufsize = src_bpp * src_width * src_height;
|
||||
|
||||
|
|
|
@ -66,26 +66,24 @@ inline int pack(int format, int l, int h) {
|
|||
}
|
||||
|
||||
inline int tex_sw(struct kernel_arg_t* state, int stage, int u, int v, int lod) {
|
||||
int base_addr = state->src_ptr;//vx_csr_read(CSR_TEX_ADDR(0));
|
||||
int mip_offset = 0;//vx_csr_read(CSR_TEX_MIPOFF(0));
|
||||
int log_width = state->src_logWidth;//vx_csr_read(CSR_TEX_WIDTH(0));
|
||||
int log_height = state->src_logHeight;//vx_csr_read(CSR_TEX_HEIGHT(0));
|
||||
int format = state->format;//vx_csr_read(CSR_TEX_FORMAT(0));
|
||||
int wrap = state->wrap;//vx_csr_read(CSR_TEX_WRAP(0));
|
||||
int filter = state->filter;//vx_csr_read(CSR_TEX_FILTER(0));
|
||||
int base_addr = state->src_ptr;
|
||||
int mip_offset = 0;
|
||||
int log_width = state->src_logWidth;
|
||||
int log_height = state->src_logHeight;
|
||||
int format = state->format;
|
||||
int wrap = state->wrap;
|
||||
int filter = state->filter;
|
||||
|
||||
int32_t* pBits = ((uint32_t*)base_addr) + mip_offset;
|
||||
|
||||
int u0 = address(wrap, u - (0x80000 >> log_width));
|
||||
int v0 = address(wrap, v - (0x80000 >> log_height));
|
||||
|
||||
int x0 = u0 >> (20 - log_width);
|
||||
int y0 = v0 >> (20 - log_height);
|
||||
int32_t* pBits = ((uint32_t*)base_addr) + mip_offset;
|
||||
|
||||
if (filter) {
|
||||
int u0 = address(wrap, u - (0x80000 >> log_width));
|
||||
int v0 = address(wrap, v - (0x80000 >> log_height));
|
||||
int u1 = address(wrap, u + (0x80000 >> log_width));
|
||||
int v1 = address(wrap, v + (0x80000 >> log_height));
|
||||
|
||||
int x0 = u0 >> (20 - log_width);
|
||||
int y0 = v0 >> (20 - log_height);
|
||||
int x1 = u1 >> (20 - log_width);
|
||||
int y1 = v1 >> (20 - log_height);
|
||||
|
||||
|
@ -121,6 +119,12 @@ inline int tex_sw(struct kernel_arg_t* state, int stage, int u, int v, int lod)
|
|||
lerp(c01a, c01b, c23a, c23b, beta, &c4a, &c4b);
|
||||
return pack(format, c4a, c4b);
|
||||
} else {
|
||||
int u0 = address(wrap, u);
|
||||
int v0 = address(wrap, v);
|
||||
|
||||
int x0 = u0 >> (20 - log_width);
|
||||
int y0 = v0 >> (20 - log_height);
|
||||
|
||||
int c0 = pBits[x0 + (y0 <<log_width)];
|
||||
|
||||
int c0a, c0b;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue